[
{
"text": "{\n \"tiddlers\": {\n \"$:/plugins/sycom/g-analytics/settings/disclaimer_title\": {\n \"title\": \"$:/plugins/sycom/g-analytics/settings/disclaimer_title\",\n \"caption\": \"This wiki uses Google Analytics\",\n \"text\": \"This tiddler caption field contains the title for your disclaimer tiddler\\n\"\n },\n \"$:/plugins/sycom/g-analytics/googleanalytics.js\": {\n \"title\": \"$:/plugins/sycom/g-analytics/googleanalytics.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sycom/g-analytics/googleanalytics.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`. You may also track internal navigation. DNT and GDPR compliant.\\n\\n\\\\*/\\n(function() {\\n\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n\\n // Export name and synchronous status\\n exports.name = \\\"google-analytics\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"startup\\\"];\\n exports.synchronous = true;\\n\\n exports.startup = function() {\\n var GA_Launched = 0; // GA active detector\\n // initializing disclaimer\\n var GA_DISCLAIMER_TITLE = $tw.wiki.getTiddler(\\\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\\\").fields.caption || \\\"This wiki uses Google analytics\\\";\\n GA_DISCLAIMER_TITLE = GA_DISCLAIMER_TITLE.replace(/\\\\n/g, \\\"\\\");\\n // load informations about tracking\\n $tw.wiki.setText(GA_DISCLAIMER_TITLE, \\\"text\\\", null, $tw.wiki.getTiddlerText(\\\"$:/plugins/sycom/g-analytics/disclaimer\\\"));\\n // testing do not track before launching\\n var dnt = navigator.doNotTrack || 0;\\n if (dnt === \\\"1\\\") {\\n // tells the wiki that DNT is on for disclaimer adaptation\\n $tw.wiki.setText(\\\"$:/temp/GoogleAnalyticsDNT\\\", \\\"text\\\", null, \\\"yes\\\");\\n } else {\\n // getting parameters - account, domain, tracking tiddlers and gdpr - opt-in\\n var GA_ACCOUNT = $tw.wiki.getTiddlerText(\\\"$:/GoogleAnalyticsAccount\\\") || \\\"\\\",\\n GA_DOMAIN = $tw.wiki.getTiddlerText(\\\"$:/GoogleAnalyticsDomain\\\") || \\\"\\\",\\n GA_TRACKALL = $tw.wiki.getTiddlerText(\\\"$:/plugins/sycom/g-analytics/settings/track_all\\\") || \\\"no\\\",\\n GA_GDPR = \\\"yes\\\";\\n GA_ACCOUNT = GA_ACCOUNT.replace(/\\\\n/g, \\\"\\\");\\n GA_DOMAIN = GA_DOMAIN.replace(/\\\\n/g, \\\"\\\");\\n // handling domain parameter : user defined > from window location > \\\"auto\\\" fallback\\n if (GA_DOMAIN == \\\"\\\") GA_DOMAIN = window.location.hostname;\\n if (GA_DOMAIN == undefined) GA_DOMAIN = \\\"auto\\\";\\n GA_TRACKALL = GA_TRACKALL.replace(/\\\\n/g, \\\"\\\");\\n // create a \\\"hook\\\" on navigation to send data via tracker\\n $tw.wiki.addEventListener(\\\"change\\\", function(changes) {\\n // if first launch, initiates GA\\n if (GA_Launched === 0) {\\n // using ga \\\"isogram\\\" function\\n (function(i, s, o, g, r, a, m) {i['GoogleAnalyticsObject'] = r;i[r] = i[r] || function() {(i[r].q = i[r].q || []).push(arguments)}, i[r].l = 1 * new Date();a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');\\n GA_Launched = 1;\\n }\\n // get informations about GDPR opt-in (or not)\\n GA_GDPR = $tw.wiki.getTiddlerText(\\\"$:/temp/GoogleAnalyticsGDPRoption\\\") || \\\"yes\\\";\\n GA_GDPR = GA_GDPR.replace(/\\\\n/g, \\\"\\\");\\n if (GA_GDPR !== \\\"yes\\\") {\\n // GDPR has been cleared by opt-in\\n if (GA_TRACKALL === \\\"yes\\\") {\\n ga('create', GA_ACCOUNT, GA_DOMAIN);\\n // dealing with user settings !todo check if options is associated with wiki or $tw\\n var options = $tw.wiki.options || {},\\n storyTitle = options.storyTitle || \\\"$:/StoryList\\\",\\n historyTitle = options.historyTitle || \\\"$:/HistoryList\\\";\\n // getting storyList (displayed) historyList (last displayed) and last item\\n var storyList = $tw.wiki.getTiddler(storyTitle).fields.list;\\n var history = $tw.wiki.getTiddlerText(historyTitle) || \\\"[{\\\\\\\"title\\\\\\\": \\\\\\\"\\\" + storyList[0] + \\\"\\\\\\\"}]\\\";\\n var historyList = JSON.parse(history);\\n var GA_CURRENT = historyList[historyList.length - 1].title;\\n // if last item has not been closed, prepare data and send to tracker\\n if (storyList.includes(GA_CURRENT)) {\\n // if history modified is true send tracker (else user may just closed another tiddler)\\n // note that clicking on a tiddlerlink from already opened tiddler will count\\n if ((historyList.length ===1 || changes[historyTitle]) && GA_GDPR !== \\\"yes\\\") {\\n ga('set', 'page', window.location.pathname + '/' + GA_CURRENT);\\n ga('set', 'title', GA_CURRENT);\\n ga('send', 'pageview');\\n }\\n }\\n } else {\\n // get informations about GDPR opt-out\\n GA_GDPR = $tw.wiki.getTiddlerText(\\\"$:/temp/GoogleAnalyticsGDPRoption\\\") || \\\"yes\\\";\\n GA_GDPR = GA_GDPR.replace(/\\\\n/g, \\\"\\\");\\n // send data for whole page once only\\n ga('create', GA_ACCOUNT, GA_DOMAIN);\\n ga('send', 'pageview');\\n }\\n }\\n });\\n }\\n }\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sycom/g-analytics/disclaimer\": {\n \"title\": \"$:/plugins/sycom/g-analytics/disclaimer\",\n \"text\": \"<<i18n disclaimer_common $:/plugins/sycom/g-analytics>>\\n\\n<$reveal type=\\\"match\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsDNT\\\" text=\\\"yes\\\">\\n\\n<<i18n disclaimer_dnt $:/plugins/sycom/g-analytics>>\\n</$reveal>\\n\\n<$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsDNT\\\" text=\\\"yes\\\">\\n <$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsGDPRoption\\\" text=\\\"no\\\">\\n\\n<<i18n disclaimer_gdpr $:/plugins/sycom/g-analytics>>\\n </$reveal>\\n <$reveal type=\\\"match\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsGDPRoption\\\" text=\\\"no\\\">\\n\\n<<i18n disclaimer_nogdpr $:/plugins/sycom/g-analytics>>\\n <$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/sycom/g-analytics/settings/track_all\\\" text=\\\"yes\\\">\\n<<i18n disclaimer_internal $:/plugins/sycom/g-analytics>>\\n </$reveal>\\n\\n<<i18n disclaimer_settings $:/plugins/sycom/g-analytics>>\\n </$reveal>\\n</$reveal>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/disclaimer_notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/disclaimer_notification\",\n \"text\": \"<<i18n disclaimer_notification $:/plugins/sycom/g-analytics '' inline>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_common\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_common\",\n \"text\": \"As many website do, this wiki can use [[Google Analytics|https://analytics.google.com]] (via the [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) to help analyse how much visitors use this site and where they come from. Google uses “[[cookies|https://en.wikipedia.org/wiki/HTTP_cookie]]”, which are small text files placed on your computer, to collect standard internet log information and visitor behaviour information in an anonymous form.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_dnt\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_dnt\",\n \"text\": \"However, as you are visiting, with your browser in private mode or have activated [[Do Not Track|http://donottrack.us/]], the plugin is fully deactivated. So no information can be collected nor sent anywhere.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_gdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_gdpr\",\n \"text\": \"However, as you did not \\\"opt-in\\\" to be part of our survey panel, the plugin is deactivated for now and no information will be collected nor sent anywhere. You may change your mind whenever you want by just checking this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_internal\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_internal\",\n \"text\": \"Note also that as ''internal link tracker option is activated'' on this wiki, so the tracker will send the title of each tiddler you're visiting (still anonymously though).\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_nogdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_nogdpr\",\n \"text\": \"As you did accept to be part of our panel, the plugin is now collecting data about your navigation.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_notification\",\n \"text\": \"This website would like to know more about your visit by enabling an analytics tracker (and //cookies//). If you allow it, please check here <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >read more</$link>.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_settings\",\n \"text\": \"Your anonymity is safe here but you may wish to disable all tracking since data are sent to Google who may use them for marketing purpose. The plugin is compliant with [[Do Not Track|http://donottrack.us/]]. So,\\n\\n* if you enable ''do not track'' option ''in your browser'' and reload the page the wiki will not collect nor send data any more. You may also use privacy extensions to control which site can track you. [[All About Do Not Track|https://allaboutdnt.com/]] website provide usefull informations about all this.\\n* some browsers enable do not track when using \\\"private mode\\\" ([[Firefox|http://firefox.com]] does). If you visit the wiki from those browsers in \\\"private mode\\\" no data will be sent either.\\n* you may also want to \\\"opt-out\\\". If so, uncheck this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/settings\",\n \"text\": \"You have two value and one option parameters to set, ''only first is mandatory''. You may (should?) also customize privacy disclaimers to fit your wiki language or local laws. Save and reload after changing.\\n\\n!!Parameters\\n\\n''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'' (mandatory) : your^^1^^ code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsAccount\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'' (optional) : the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsDomain\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'track all tiddlers'>> If you want the tracker to track also internal links, check this (will set [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] to \\\"yes\\\")\\n\\n^^1^^ //if not, you may send data to other Google Analytics user.//\\n\\n!! Privacy information customizing\\nYou may personalize or translate messages displayed by the plugin by editing those tiddlers (see different cases below). Please note that future updates of plugin may revert your edits.\\n\\n* [[Notification message|$:/plugins/sycom/g-analytics/disclaimer_notification]]\\n\\n* ''Privacy disclaimer''\\n*# Title : <$edit-text tiddler=\\\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\\\" field=\\\"caption\\\" tag=\\\"input\\\"/>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/usage\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/usage\",\n \"text\": \"!! Create a Google Analytics account\\n\\nIf you don't already have an account:\\n\\n# Go to the Google Analytics website: http://www.google.com/analytics/\\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\\n# Enter the URL where the wiki is hosted\\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\\n\\n!! Install the plugin on your local copy of the TiddlyWiki\\n\\n# ''Backup your TiddlyWiki''. Just in case\\n# Install the plugin via the plugin manager in control panel\\n# Save the TiddlyWiki and refresh the page to load the plugin\\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\\n# Go to the //settings// tab and edit the parameters\\n# Save the TiddlyWiki\\n\\n!! Upload the new version of your TiddlyWiki\\n\\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\\n# Return to your Google Analytics page to check that your site is being tracked\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_common\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_common\",\n \"text\": \"Comme le font beaucoup de sites internet, ce wiki utilise [[Google Analytics|https://analytics.google.com]] (via le plugin [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) pour aider à analyser combien de visiteurs utilisent le site et d'où ils viennent. Google utilise des “[[cookies|https://fr.wikipedia.org/wiki/Cookie_(informatique)]]”, qui sont de petit fichiers texte placés sur votre ordinateur pour collecter des informations de connexion classique sous une forme anonyme.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_dnt\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_dnt\",\n \"text\": \"Toutefois, comme vous visitez ce wiki avec votre navigateur en mode \\\"navigation privée\\\" ou que vous avez activé [[Do Not Track|http://donottrack.us/]], le plugin est complètement désactivé. Aucune information ne pourra être collectée ni envoyée nulle part.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_gdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_gdpr\",\n \"text\": \"Toutefois, comme vous n'avez pas fait le choix d'intégrer notre panel de suivi, le plugin est désactivé pour le moment et aucune information ne sera collectée ni envoyée nulle part. Vous pouvez changer d'avis à tout moment juste en validant ici <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'suivi?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_internal\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_internal\",\n \"text\": \"Notez également que ''le suivi de navigation interne est activé'' sur ce wiki. Le plugin collectera donc des données sur le titre de chaque tiddler visité (toujours anonymement).\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_nogdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_nogdpr\",\n \"text\": \"Comme vous avez accepté d'intégrer notre panel de suivi, le plugin collecte désormais des informations sur votre navigation.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_notification\",\n \"text\": \"Ce wiki aimerait en savoir plus sur votre visite par l'activation du suivi Google Analytics (et des //cookies//). Si vous l'autorisez, merci de le valider ici <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'suivi?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >en savoir plus</$link>.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_settings\",\n \"text\": \"Votre anonymat est préservé ici, mais vous voudrez peut-être désactiver toute collecte de statistique, dans la mesure où les données sont envoyées à Google qui peut les utiliser à des fins commerciales. Le plugin est compatible avec [[Do Not Track|http://donottrack.us/]]. Donc,\\n\\n* si vous activez l'option ''ne pas pister'' (//do not track//) ''dans votre navigateur'' le wiki ne collectera et n'enverra plus aucune donnée. Il est également possible d'utiliser des extensions pour votre navigateur qui contrôlent qui vous piste. Le site [[All About Do Not Track|https://allaboutdnt.com/]] (en anglais) fourni des informations utiles sur ce sujet.\\n* certains navigateurs activent //do not track// lorsque l'on passe en mode \\\"navigation privée\\\" ([[Firefox|http://firefox.com]] le fait). Si vous visitez le wiki dans ce mode aucune donnée ne sera alors envoyée.\\n* dans tous les cas vous pouvez aussi faire le choix de sortir du panel <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/readme\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/readme\",\n \"text\": \"Ce [plugin G-Analytics](#$:/plugins/sycom/g-analytics) constitue une alternative à celui que vous trouverez dans la librairie officielle de TiddlyWiki.\\n\\nIl est compatible avec [Do Not Track][dnt] et avec le [RGPD][rgpd]. Il permet aussi un suivi de la navigation d'un tiddler à l'autre.\\n\\nVoyez la [page de demonstration][plugindemo] ou la documentation intégrée pour voir comment il fonctionne.\\n\\n## Sources / licenses\\n* basé sur [le plugin officiel][official] de TiddlyWiki qui intègre [le code officiel de Google][googlecode]\\n* [ce plugin][source] est sous une licence [BSD 3-Clause license][license] très similaire à celle de TiddlyWiki.\\n\\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins\\n[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics\\n[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs\\n[dnt]: http://donottrack.us/\\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics\\n[rgpd]: https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es\\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\\n\",\n \"type\": \"text/x-markdown\",\n \"caption\": \"Lisez-moi\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/settings\",\n \"text\": \"Il y a deux paramètres et une option à régler, ''seul le premier est obligatoire''. Vous pouvez (devriez?) également personnaliser les messages d'information sur la vie privée pour les adapter à votre langue ou aux règlements en vigueur localement. Sauvegardez et rechargez le wiki après changement.\\n\\n!!Paramètres\\n\\n''[[Compte Google Analytics|$:/GoogleAnalyticsAccount]]'' (obligatoire) : votre^^1^^ code sous la forme `UA-XXXXXX-XX` où X sont des nombres<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsAccount\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n''[[Domaine Google Analytics|$:/GoogleAnalyticsDomain]]'' (optionnel) : l'adresse du site où le wiki est publié. Par défaut, `auto` if not set.<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsDomain\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'suivre tous les tiddlers'>> Si vous souhaitez suivre la navigation interne au wiki, activez cette option (mettra [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] à la valeur \\\"yes\\\")\\n\\n^^1^^ //sinon, vous risquez d'envoyer vos données de suivi sur un autre compte Analytics (ou nulle part)//\\n\\n!! Personnalisation des informations sur la vie privée\\nVous pouvez personnaliser ou traduire les messages affichés par le plugin en éditant ces différents tiddlers. Notez que des mises à jours du plugin nécessiteront peut-être des mises à jour de votre part.\\n\\n* [[Message de notification|$:/plugins/sycom/g-analytics/disclaimer_notification]]\\n\\n* ''Informations sur la vie privée''\\n** Titre du message : <$edit-text tiddler=\\\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\\\" field=\\\"caption\\\" tag=\\\"input\\\"/>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/usage\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/usage\",\n \"text\": \"!! Créez-vous un compte Google Analytics\\n\\nSi vous n'avez pas déjà un compte :\\n\\n# Rendez vous sur le site de Google Analytics : http://www.google.com/analytics/\\n# Cliquez sur le bouton ''Accéder à Google Analytics'' et suivez les instructions pour créer votre compte\\n# Donnez l'adresse URL à laquelle votre wiki est hébergé\\n# Récupérez l'identifiant de suivi pour ce domaine sous la forme `UA-XXXXXX-XX`\\n\\n!! Installez le plugin sur votre TiddlyWiki\\n\\n# ''Faites une sauvegarde de votre TiddlyWiki''. Juste au cas où\\n# Installez le plugin en le glissant déposant depuis ici sur votre wiki\\n# Enregistrez votre TiddlyWiki et rafraichissez la page pour mettre en route le plugin\\n# Allez dans [[$:/ControlPanel]] > onglet Plugins et dépliez le plugin Google Analytics\\n# Allez dans l'onglet //settings// et mettez à jour les paramètres\\n# Sauvegardez votre TiddlyWiki\\n\\n!! Chargez la nouvelle version de votre TiddlyWiki\\n\\n# Envoyez la nouvelle version de votre TiddlyWiki sur TiddlySpot, GitHub, GitLab ou tout autre hébergeur\\n# Retournez à votre page Google Analytics page pour vérifier que votre site est bien suivi.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/icon\": {\n \"title\": \"$:/plugins/sycom/g-analytics/icon\",\n \"tags\": \"$:/tags/Image\",\n \"text\": \"<svg class=\\\"feather tc-image-feather-icons tc-image-button\\\" viewBox=\\\"0 0 128 128\\\" width=\\\"22pt\\\" height=\\\"22pt\\\">\\n<g>\\n<path d=\\\"M65 5L13 35v61l52 30 53-30V35L65 5zm-.8 27c28.2 0 44.3 32.2 44.3 32.2S92.4 96.4 64.2 96.4c-28.2 0-44.3-32.2-44.3-32.2S36 32 64.2 32z\\\"/>\\n<path d=\\\"M64.2 46.5a17.6 17.6 0 0 0-17.7 17.7 17.6 17.6 0 0 0 17.7 17.6 17.6 17.6 0 0 0 17.6-17.6 17.6 17.6 0 0 0-17.6-17.7zm.7 5.2a24.6 24.6 0 0 1 9.2 1.8v5a19.7 19.7 0 0 0-4.2-1.7 16 16 0 0 0-4.2-.5c-2.6 0-4.6.7-6 2-1.5 1.4-2.2 3.4-2.2 6s.7 4.5 2 6c1.4 1.3 3.4 2 5.9 2h1.9a7.8 7.8 0 0 0 1.5-.5v-4.7h-4V63h10.3v11.7a24.2 24.2 0 0 1-5.1 1.7c-1.8.4-3.6.6-5.5.6-4.2 0-7.6-1.2-10-3.4a11.8 11.8 0 0 1-3.8-9.2c0-3.9 1.3-7 3.8-9.2A15 15 0 0 1 65 51.7z\\\"/>\\n</g>\\n</svg>\\n\"\n },\n \"$:/core/macros/i18n\": {\n \"author\": \"@sycom\",\n \"created\": \"20191009144004451\",\n \"modified\": \"20191011145435763\",\n \"tags\": \"$:/tags/Macro\",\n \"title\": \"$:/core/macros/i18n\",\n \"type\": \"application/javascript\",\n \"version\": \"1.0.0-pre\",\n \"text\": \"\\\\define i18nOriginal(title domain orig_lang lang mode)\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n<$transclude mode=<<__mode__>> />\\n</$list>\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n\\n<div class=\\\"tc-message-box\\\">\\n//<<__orig_lang__>>// original is missing, please create it at <$link to=<<currentTiddler>>><$text text=<<currentTiddler>> /></$link></div>\\n</$list>\\n\\\\end\\n\\n\\\\define i18nTranslation(title domain orig_lang lang mode)\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n<$transclude mode=<<__mode__>> />\\n</$list>\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n<$set name=\\\"target\\\" value=<<currentTiddler>>>\\n<$list filter=\\\"[<__lang__>search<__orig_lang__>]\\\">\\n<$macrocall $name=\\\"i18nOriginal\\\" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>>/>\\n</$list>\\n<$list filter=\\\"[<__lang__>!search<__orig_lang__>]\\\">\\n<div class=\\\"tc-message-box\\\">//<<__lang__>>// translation is missing, you may create it at <$link to=<<target>>><$text text=<<target>> /></$link></div>\\n<div lang=<<__orig_lang__>>>\\n<$macrocall $name=\\\"i18nOriginal\\\" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>> />\\n</div>\\n</$list>\\n</$set>\\n</$list>\\n\\\\end\\n\\n\\\\define i18n(title domain:\\\"$:\\\" orig_lang:\\\"en-GB\\\" mode:\\\"block\\\")\\n<$set name=\\\"title\\\" value=<<__title__>> emptyValue=<<currentTiddler>>>\\n<$set name=\\\"lg-LG\\\" tiddler={{$:/language}} field=\\\"name\\\">\\n<$macrocall $name=\\\"i18nTranslation\\\" title=<<title>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<lg-LG>> mode=<<__mode__>>/>\\n</$set>\\n</$set>\\n\\\\end\\n\",\n \"module-type\": \"macro\"\n },\n \"$:/plugins/sycom/g-analytics/notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/notification\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"text\": \"<$reveal type=\\\"nomatch\\\" state=\\\"$:/temp/HideAnalyticsWarning\\\" text=\\\"yes\\\">\\n <div class=\\\"tc-plugin-reload-warning\\\">\\n <$set name=\\\"tv-config-toolbar-class\\\" value=\\\"\\\">\\n\\n{{$:/plugins/sycom/g-analytics/disclaimer_notification}} <$button set=\\\"$:/temp/HideAnalyticsWarning\\\" setTo=\\\"yes\\\" class=\\\"tc-btn-invisible\\\">{{$:/core/images/close-button}}</$button>\\n </$set>\\n </div>\\n</$reveal>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/readme\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/readme\",\n \"text\": \"This [G-Analytics plugin](#$:/plugins/sycom/g-analytics) is an alternative version for the official plugin you can find in TiddlyWiki library.\\n\\nIt's compliant with [Do Not Track][dnt] and also with [GDPR][rgpd]. It enables also individual tiddlers tracking.\\n\\nHave a look at [demo page on the web][plugindemo] or at integrated documentation to see how it works.\\n\\n## Sources / licenses\\n* based upon [official google analytics plugin][official] of TiddlyWiki which implements [official Google code][googlecode]\\n* [this plugin][source] is released under similar [BSD 3-Clause license][license] as TiddlyWiki.\\n\\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins\\n[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics\\n[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs\\n[dnt]: http://donottrack.us/\\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics\\n[rgpd]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\\n\",\n \"type\": \"text/x-markdown\",\n \"created\": \"20151119173416000\",\n \"modified\": \"20190332172200000\",\n \"caption\": \"Readme\"\n },\n \"$:/plugins/sycom/g-analytics/readme\": {\n \"title\": \"$:/plugins/sycom/g-analytics/readme\",\n \"caption\": \"Readme\",\n \"text\": \"<<i18n readme $:/plugins/sycom/g-analytics>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/settings\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define slideCheck(tid field:'text' checked unchecked default tooltip)\\n<$checkbox class=\\\"switch\\\"\\n tiddler=\\\"$tid$\\\"\\n field=\\\"$field$\\\"\\n checked=\\\"$checked$\\\"\\n unchecked=\\\"$unchecked$\\\"\\n default=\\\"$default$\\\">\\n <div title=\\\"$tooltip$\\\" class=\\\"slider round\\\"></div>\\n <span class=\\\"switchtext\\\"></span>\\n</$checkbox>\\n\\\\end\\n\\n<<i18n settings $:/plugins/sycom/g-analytics>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/Stylesheet\": {\n \"title\": \"$:/plugins/sycom/g-analytics/Stylesheet\",\n \"created\": \"20190419133629300\",\n \"modified\": \"20190423183600000\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"/* inspired from https://codepen.io/AllThingsSmitty/pen/MmxxOz */\\n.switch {\\n margin:0;\\n display: inline-block;\\n height: 1.5em;\\n position: relative;\\n width:2.6em;\\n vertical-align:bottom;\\n}.switch input[type=checkbox] {\\n display:none;\\n}.slider {\\n background-color: #888888;\\n bottom: 0;\\n cursor: pointer;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n transition: .4s;\\n}.slider:before {\\n background-color: #fff;\\n bottom: 4px;\\n content: \\\"\\\";\\n height: 1em;\\n left: 4px;\\n position: absolute;\\n transition: .4s;\\n width: 1em;\\n}input:checked + span .slider {\\n background-color: #5778d8;\\n}input:checked + span .slider:before {\\n transform: translateX(1em);\\n}span .slider.round {\\n border-radius: 1em;\\n}span .slider.round:before {\\n border-radius: 50%;\\n}input + span .switchtext:before {\\n display: inline-block;\\n color: white;\\n content: 'no';\\n font-size: .85em;\\n transform: translateX(1.6em) translatey(-.15em);\\n}input:checked + span .switchtext:before {\\n content: 'on';\\n transform: translateX(.2em) translatey(-.15em);\\n}.tc-plugin-reload-warning input + span .switchtext:before {\\n transform: translateX(.75em) translatey(-.15em);\\n}.tc-plugin-reload-warning input:checked + span .switchtext:before {\\n transform: translateX(-.8em) translatey(-.15em);\\n}\\n\"\n },\n \"$:/plugins/sycom/g-analytics/usage\": {\n \"title\": \"$:/plugins/sycom/g-analytics/usage\",\n \"text\": \"<<i18n usage $:/plugins/sycom/g-analytics>>\\n\"\n }\n }\n}",
"bag": "default",
"revision": "0",
"version": "1.3.2",
"type": "application/json",
"title": "$:/plugins/sycom/g-analytics",
"plugin-type": "plugin",
"list": "readme settings usage",
"description": "G-Analytics: website statistics",
"dependents": "",
"core-version": ">=5.0.0",
"contributor": "Sylvain Comte",
"author": "JeremyRuston"
}
]
[
{
"text": "{\n \"tiddlers\": {\n \"$:/plugins/sycom/g-analytics/settings/disclaimer_title\": {\n \"title\": \"$:/plugins/sycom/g-analytics/settings/disclaimer_title\",\n \"caption\": \"This wiki uses Google Analytics\",\n \"text\": \"This tiddler caption field contains the title for your disclaimer tiddler\\n\"\n },\n \"$:/plugins/sycom/g-analytics/googleanalytics.js\": {\n \"title\": \"$:/plugins/sycom/g-analytics/googleanalytics.js\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/sycom/g-analytics/googleanalytics.js\\ntype: application/javascript\\nmodule-type: startup\\n\\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`. You may also track internal navigation. DNT and GDPR compliant.\\n\\n\\\\*/\\n(function() {\\n\\n /*jslint node: true, browser: true */\\n /*global $tw: false */\\n \\\"use strict\\\";\\n\\n // Export name and synchronous status\\n exports.name = \\\"google-analytics\\\";\\n exports.platforms = [\\\"browser\\\"];\\n exports.after = [\\\"startup\\\"];\\n exports.synchronous = true;\\n\\n exports.startup = function() {\\n var GA_Launched = 0; // GA active detector\\n // initializing disclaimer\\n var GA_DISCLAIMER_TITLE = $tw.wiki.getTiddler(\\\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\\\").fields.caption || \\\"This wiki uses Google analytics\\\";\\n GA_DISCLAIMER_TITLE = GA_DISCLAIMER_TITLE.replace(/\\\\n/g, \\\"\\\");\\n // load informations about tracking\\n $tw.wiki.setText(GA_DISCLAIMER_TITLE, \\\"text\\\", null, $tw.wiki.getTiddlerText(\\\"$:/plugins/sycom/g-analytics/disclaimer\\\"));\\n // testing do not track before launching\\n var dnt = navigator.doNotTrack || 0;\\n if (dnt === \\\"1\\\") {\\n // tells the wiki that DNT is on for disclaimer adaptation\\n $tw.wiki.setText(\\\"$:/temp/GoogleAnalyticsDNT\\\", \\\"text\\\", null, \\\"yes\\\");\\n } else {\\n // getting parameters - account, domain, tracking tiddlers and gdpr - opt-in\\n var GA_ACCOUNT = $tw.wiki.getTiddlerText(\\\"$:/GoogleAnalyticsAccount\\\") || \\\"\\\",\\n GA_DOMAIN = $tw.wiki.getTiddlerText(\\\"$:/GoogleAnalyticsDomain\\\") || \\\"\\\",\\n GA_TRACKALL = $tw.wiki.getTiddlerText(\\\"$:/plugins/sycom/g-analytics/settings/track_all\\\") || \\\"no\\\",\\n GA_GDPR = \\\"yes\\\";\\n GA_ACCOUNT = GA_ACCOUNT.replace(/\\\\n/g, \\\"\\\");\\n GA_DOMAIN = GA_DOMAIN.replace(/\\\\n/g, \\\"\\\");\\n // handling domain parameter : user defined > from window location > \\\"auto\\\" fallback\\n if (GA_DOMAIN == \\\"\\\") GA_DOMAIN = window.location.hostname;\\n if (GA_DOMAIN == undefined) GA_DOMAIN = \\\"auto\\\";\\n GA_TRACKALL = GA_TRACKALL.replace(/\\\\n/g, \\\"\\\");\\n // create a \\\"hook\\\" on navigation to send data via tracker\\n $tw.wiki.addEventListener(\\\"change\\\", function(changes) {\\n // if first launch, initiates GA\\n if (GA_Launched === 0) {\\n // using ga \\\"isogram\\\" function\\n (function(i, s, o, g, r, a, m) {i['GoogleAnalyticsObject'] = r;i[r] = i[r] || function() {(i[r].q = i[r].q || []).push(arguments)}, i[r].l = 1 * new Date();a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');\\n GA_Launched = 1;\\n }\\n // get informations about GDPR opt-in (or not)\\n GA_GDPR = $tw.wiki.getTiddlerText(\\\"$:/temp/GoogleAnalyticsGDPRoption\\\") || \\\"yes\\\";\\n GA_GDPR = GA_GDPR.replace(/\\\\n/g, \\\"\\\");\\n if (GA_GDPR !== \\\"yes\\\") {\\n // GDPR has been cleared by opt-in\\n if (GA_TRACKALL === \\\"yes\\\") {\\n ga('create', GA_ACCOUNT, GA_DOMAIN);\\n // dealing with user settings !todo check if options is associated with wiki or $tw\\n var options = $tw.wiki.options || {},\\n storyTitle = options.storyTitle || \\\"$:/StoryList\\\",\\n historyTitle = options.historyTitle || \\\"$:/HistoryList\\\";\\n // getting storyList (displayed) historyList (last displayed) and last item\\n var storyList = $tw.wiki.getTiddler(storyTitle).fields.list;\\n var history = $tw.wiki.getTiddlerText(historyTitle) || \\\"[{\\\\\\\"title\\\\\\\": \\\\\\\"\\\" + storyList[0] + \\\"\\\\\\\"}]\\\";\\n var historyList = JSON.parse(history);\\n var GA_CURRENT = historyList[historyList.length - 1].title;\\n // if last item has not been closed, prepare data and send to tracker\\n if (storyList.includes(GA_CURRENT)) {\\n // if history modified is true send tracker (else user may just closed another tiddler)\\n // note that clicking on a tiddlerlink from already opened tiddler will count\\n if ((historyList.length ===1 || changes[historyTitle]) && GA_GDPR !== \\\"yes\\\") {\\n ga('set', 'page', window.location.pathname + '/' + GA_CURRENT);\\n ga('set', 'title', GA_CURRENT);\\n ga('send', 'pageview');\\n }\\n }\\n } else {\\n // get informations about GDPR opt-out\\n GA_GDPR = $tw.wiki.getTiddlerText(\\\"$:/temp/GoogleAnalyticsGDPRoption\\\") || \\\"yes\\\";\\n GA_GDPR = GA_GDPR.replace(/\\\\n/g, \\\"\\\");\\n // send data for whole page once only\\n ga('create', GA_ACCOUNT, GA_DOMAIN);\\n ga('send', 'pageview');\\n }\\n }\\n });\\n }\\n }\\n})();\\n\",\n \"type\": \"application/javascript\",\n \"module-type\": \"startup\"\n },\n \"$:/plugins/sycom/g-analytics/disclaimer\": {\n \"title\": \"$:/plugins/sycom/g-analytics/disclaimer\",\n \"text\": \"<<i18n disclaimer_common $:/plugins/sycom/g-analytics>>\\n\\n<$reveal type=\\\"match\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsDNT\\\" text=\\\"yes\\\">\\n\\n<<i18n disclaimer_dnt $:/plugins/sycom/g-analytics>>\\n</$reveal>\\n\\n<$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsDNT\\\" text=\\\"yes\\\">\\n <$reveal type=\\\"nomatch\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsGDPRoption\\\" text=\\\"no\\\">\\n\\n<<i18n disclaimer_gdpr $:/plugins/sycom/g-analytics>>\\n </$reveal>\\n <$reveal type=\\\"match\\\" stateTitle=\\\"$:/temp/GoogleAnalyticsGDPRoption\\\" text=\\\"no\\\">\\n\\n<<i18n disclaimer_nogdpr $:/plugins/sycom/g-analytics>>\\n <$reveal type=\\\"match\\\" stateTitle=\\\"$:/plugins/sycom/g-analytics/settings/track_all\\\" text=\\\"yes\\\">\\n<<i18n disclaimer_internal $:/plugins/sycom/g-analytics>>\\n </$reveal>\\n\\n<<i18n disclaimer_settings $:/plugins/sycom/g-analytics>>\\n </$reveal>\\n</$reveal>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/disclaimer_notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/disclaimer_notification\",\n \"text\": \"<<i18n disclaimer_notification $:/plugins/sycom/g-analytics '' inline>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_common\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_common\",\n \"text\": \"As many website do, this wiki can use [[Google Analytics|https://analytics.google.com]] (via the [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) to help analyse how much visitors use this site and where they come from. Google uses “[[cookies|https://en.wikipedia.org/wiki/HTTP_cookie]]”, which are small text files placed on your computer, to collect standard internet log information and visitor behaviour information in an anonymous form.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_dnt\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_dnt\",\n \"text\": \"However, as you are visiting, with your browser in private mode or have activated [[Do Not Track|http://donottrack.us/]], the plugin is fully deactivated. So no information can be collected nor sent anywhere.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_gdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_gdpr\",\n \"text\": \"However, as you did not \\\"opt-in\\\" to be part of our survey panel, the plugin is deactivated for now and no information will be collected nor sent anywhere. You may change your mind whenever you want by just checking this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_internal\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_internal\",\n \"text\": \"Note also that as ''internal link tracker option is activated'' on this wiki, so the tracker will send the title of each tiddler you're visiting (still anonymously though).\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_nogdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_nogdpr\",\n \"text\": \"As you did accept to be part of our panel, the plugin is now collecting data about your navigation.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_notification\",\n \"text\": \"This website would like to know more about your visit by enabling an analytics tracker (and //cookies//). If you allow it, please check here <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >read more</$link>.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_settings\",\n \"text\": \"Your anonymity is safe here but you may wish to disable all tracking since data are sent to Google who may use them for marketing purpose. The plugin is compliant with [[Do Not Track|http://donottrack.us/]]. So,\\n\\n* if you enable ''do not track'' option ''in your browser'' and reload the page the wiki will not collect nor send data any more. You may also use privacy extensions to control which site can track you. [[All About Do Not Track|https://allaboutdnt.com/]] website provide usefull informations about all this.\\n* some browsers enable do not track when using \\\"private mode\\\" ([[Firefox|http://firefox.com]] does). If you visit the wiki from those browsers in \\\"private mode\\\" no data will be sent either.\\n* you may also want to \\\"opt-out\\\". If so, uncheck this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/settings\",\n \"text\": \"You have two value and one option parameters to set, ''only first is mandatory''. You may (should?) also customize privacy disclaimers to fit your wiki language or local laws. Save and reload after changing.\\n\\n!!Parameters\\n\\n''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'' (mandatory) : your^^1^^ code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsAccount\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'' (optional) : the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsDomain\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'track all tiddlers'>> If you want the tracker to track also internal links, check this (will set [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] to \\\"yes\\\")\\n\\n^^1^^ //if not, you may send data to other Google Analytics user.//\\n\\n!! Privacy information customizing\\nYou may personalize or translate messages displayed by the plugin by editing those tiddlers (see different cases below). Please note that future updates of plugin may revert your edits.\\n\\n* [[Notification message|$:/plugins/sycom/g-analytics/disclaimer_notification]]\\n\\n* ''Privacy disclaimer''\\n*# Title : <$edit-text tiddler=\\\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\\\" field=\\\"caption\\\" tag=\\\"input\\\"/>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/usage\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/usage\",\n \"text\": \"!! Create a Google Analytics account\\n\\nIf you don't already have an account:\\n\\n# Go to the Google Analytics website: http://www.google.com/analytics/\\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\\n# Enter the URL where the wiki is hosted\\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\\n\\n!! Install the plugin on your local copy of the TiddlyWiki\\n\\n# ''Backup your TiddlyWiki''. Just in case\\n# Install the plugin via the plugin manager in control panel\\n# Save the TiddlyWiki and refresh the page to load the plugin\\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\\n# Go to the //settings// tab and edit the parameters\\n# Save the TiddlyWiki\\n\\n!! Upload the new version of your TiddlyWiki\\n\\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\\n# Return to your Google Analytics page to check that your site is being tracked\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_common\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_common\",\n \"text\": \"Comme le font beaucoup de sites internet, ce wiki utilise [[Google Analytics|https://analytics.google.com]] (via le plugin [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) pour aider à analyser combien de visiteurs utilisent le site et d'où ils viennent. Google utilise des “[[cookies|https://fr.wikipedia.org/wiki/Cookie_(informatique)]]”, qui sont de petit fichiers texte placés sur votre ordinateur pour collecter des informations de connexion classique sous une forme anonyme.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_dnt\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_dnt\",\n \"text\": \"Toutefois, comme vous visitez ce wiki avec votre navigateur en mode \\\"navigation privée\\\" ou que vous avez activé [[Do Not Track|http://donottrack.us/]], le plugin est complètement désactivé. Aucune information ne pourra être collectée ni envoyée nulle part.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_gdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_gdpr\",\n \"text\": \"Toutefois, comme vous n'avez pas fait le choix d'intégrer notre panel de suivi, le plugin est désactivé pour le moment et aucune information ne sera collectée ni envoyée nulle part. Vous pouvez changer d'avis à tout moment juste en validant ici <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'suivi?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_internal\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_internal\",\n \"text\": \"Notez également que ''le suivi de navigation interne est activé'' sur ce wiki. Le plugin collectera donc des données sur le titre de chaque tiddler visité (toujours anonymement).\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_nogdpr\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_nogdpr\",\n \"text\": \"Comme vous avez accepté d'intégrer notre panel de suivi, le plugin collecte désormais des informations sur votre navigation.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_notification\",\n \"text\": \"Ce wiki aimerait en savoir plus sur votre visite par l'activation du suivi Google Analytics (et des //cookies//). Si vous l'autorisez, merci de le valider ici <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'suivi?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >en savoir plus</$link>.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_settings\",\n \"text\": \"Votre anonymat est préservé ici, mais vous voudrez peut-être désactiver toute collecte de statistique, dans la mesure où les données sont envoyées à Google qui peut les utiliser à des fins commerciales. Le plugin est compatible avec [[Do Not Track|http://donottrack.us/]]. Donc,\\n\\n* si vous activez l'option ''ne pas pister'' (//do not track//) ''dans votre navigateur'' le wiki ne collectera et n'enverra plus aucune donnée. Il est également possible d'utiliser des extensions pour votre navigateur qui contrôlent qui vous piste. Le site [[All About Do Not Track|https://allaboutdnt.com/]] (en anglais) fourni des informations utiles sur ce sujet.\\n* certains navigateurs activent //do not track// lorsque l'on passe en mode \\\"navigation privée\\\" ([[Firefox|http://firefox.com]] le fait). Si vous visitez le wiki dans ce mode aucune donnée ne sera alors envoyée.\\n* dans tous les cas vous pouvez aussi faire le choix de sortir du panel <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/readme\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/readme\",\n \"text\": \"Ce [plugin G-Analytics](#$:/plugins/sycom/g-analytics) constitue une alternative à celui que vous trouverez dans la librairie officielle de TiddlyWiki.\\n\\nIl est compatible avec [Do Not Track][dnt] et avec le [RGPD][rgpd]. Il permet aussi un suivi de la navigation d'un tiddler à l'autre.\\n\\nVoyez la [page de demonstration][plugindemo] ou la documentation intégrée pour voir comment il fonctionne.\\n\\n## Sources / licenses\\n* basé sur [le plugin officiel][official] de TiddlyWiki qui intègre [le code officiel de Google][googlecode]\\n* [ce plugin][source] est sous une licence [BSD 3-Clause license][license] très similaire à celle de TiddlyWiki.\\n\\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins\\n[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics\\n[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs\\n[dnt]: http://donottrack.us/\\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics\\n[rgpd]: https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es\\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\\n\",\n \"type\": \"text/x-markdown\",\n \"caption\": \"Lisez-moi\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/settings\",\n \"text\": \"Il y a deux paramètres et une option à régler, ''seul le premier est obligatoire''. Vous pouvez (devriez?) également personnaliser les messages d'information sur la vie privée pour les adapter à votre langue ou aux règlements en vigueur localement. Sauvegardez et rechargez le wiki après changement.\\n\\n!!Paramètres\\n\\n''[[Compte Google Analytics|$:/GoogleAnalyticsAccount]]'' (obligatoire) : votre^^1^^ code sous la forme `UA-XXXXXX-XX` où X sont des nombres<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsAccount\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n''[[Domaine Google Analytics|$:/GoogleAnalyticsDomain]]'' (optionnel) : l'adresse du site où le wiki est publié. Par défaut, `auto` if not set.<br/><$edit-text tiddler=\\\"$:/GoogleAnalyticsDomain\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\n<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'suivre tous les tiddlers'>> Si vous souhaitez suivre la navigation interne au wiki, activez cette option (mettra [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] à la valeur \\\"yes\\\")\\n\\n^^1^^ //sinon, vous risquez d'envoyer vos données de suivi sur un autre compte Analytics (ou nulle part)//\\n\\n!! Personnalisation des informations sur la vie privée\\nVous pouvez personnaliser ou traduire les messages affichés par le plugin en éditant ces différents tiddlers. Notez que des mises à jours du plugin nécessiteront peut-être des mises à jour de votre part.\\n\\n* [[Message de notification|$:/plugins/sycom/g-analytics/disclaimer_notification]]\\n\\n* ''Informations sur la vie privée''\\n** Titre du message : <$edit-text tiddler=\\\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\\\" field=\\\"caption\\\" tag=\\\"input\\\"/>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/fr-FR/usage\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/fr-FR/usage\",\n \"text\": \"!! Créez-vous un compte Google Analytics\\n\\nSi vous n'avez pas déjà un compte :\\n\\n# Rendez vous sur le site de Google Analytics : http://www.google.com/analytics/\\n# Cliquez sur le bouton ''Accéder à Google Analytics'' et suivez les instructions pour créer votre compte\\n# Donnez l'adresse URL à laquelle votre wiki est hébergé\\n# Récupérez l'identifiant de suivi pour ce domaine sous la forme `UA-XXXXXX-XX`\\n\\n!! Installez le plugin sur votre TiddlyWiki\\n\\n# ''Faites une sauvegarde de votre TiddlyWiki''. Juste au cas où\\n# Installez le plugin en le glissant déposant depuis ici sur votre wiki\\n# Enregistrez votre TiddlyWiki et rafraichissez la page pour mettre en route le plugin\\n# Allez dans [[$:/ControlPanel]] > onglet Plugins et dépliez le plugin Google Analytics\\n# Allez dans l'onglet //settings// et mettez à jour les paramètres\\n# Sauvegardez votre TiddlyWiki\\n\\n!! Chargez la nouvelle version de votre TiddlyWiki\\n\\n# Envoyez la nouvelle version de votre TiddlyWiki sur TiddlySpot, GitHub, GitLab ou tout autre hébergeur\\n# Retournez à votre page Google Analytics page pour vérifier que votre site est bien suivi.\\n\"\n },\n \"$:/plugins/sycom/g-analytics/icon\": {\n \"title\": \"$:/plugins/sycom/g-analytics/icon\",\n \"tags\": \"$:/tags/Image\",\n \"text\": \"<svg class=\\\"feather tc-image-feather-icons tc-image-button\\\" viewBox=\\\"0 0 128 128\\\" width=\\\"22pt\\\" height=\\\"22pt\\\">\\n<g>\\n<path d=\\\"M65 5L13 35v61l52 30 53-30V35L65 5zm-.8 27c28.2 0 44.3 32.2 44.3 32.2S92.4 96.4 64.2 96.4c-28.2 0-44.3-32.2-44.3-32.2S36 32 64.2 32z\\\"/>\\n<path d=\\\"M64.2 46.5a17.6 17.6 0 0 0-17.7 17.7 17.6 17.6 0 0 0 17.7 17.6 17.6 17.6 0 0 0 17.6-17.6 17.6 17.6 0 0 0-17.6-17.7zm.7 5.2a24.6 24.6 0 0 1 9.2 1.8v5a19.7 19.7 0 0 0-4.2-1.7 16 16 0 0 0-4.2-.5c-2.6 0-4.6.7-6 2-1.5 1.4-2.2 3.4-2.2 6s.7 4.5 2 6c1.4 1.3 3.4 2 5.9 2h1.9a7.8 7.8 0 0 0 1.5-.5v-4.7h-4V63h10.3v11.7a24.2 24.2 0 0 1-5.1 1.7c-1.8.4-3.6.6-5.5.6-4.2 0-7.6-1.2-10-3.4a11.8 11.8 0 0 1-3.8-9.2c0-3.9 1.3-7 3.8-9.2A15 15 0 0 1 65 51.7z\\\"/>\\n</g>\\n</svg>\\n\"\n },\n \"$:/core/macros/i18n\": {\n \"author\": \"@sycom\",\n \"created\": \"20191009144004451\",\n \"modified\": \"20191011145435763\",\n \"tags\": \"$:/tags/Macro\",\n \"title\": \"$:/core/macros/i18n\",\n \"type\": \"application/javascript\",\n \"version\": \"1.0.0-pre\",\n \"text\": \"\\\\define i18nOriginal(title domain orig_lang lang mode)\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n<$transclude mode=<<__mode__>> />\\n</$list>\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n\\n<div class=\\\"tc-message-box\\\">\\n//<<__orig_lang__>>// original is missing, please create it at <$link to=<<currentTiddler>>><$text text=<<currentTiddler>> /></$link></div>\\n</$list>\\n\\\\end\\n\\n\\\\define i18nTranslation(title domain orig_lang lang mode)\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n<$transclude mode=<<__mode__>> />\\n</$list>\\n<$list filter=\\\"[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\\\">\\n<$set name=\\\"target\\\" value=<<currentTiddler>>>\\n<$list filter=\\\"[<__lang__>search<__orig_lang__>]\\\">\\n<$macrocall $name=\\\"i18nOriginal\\\" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>>/>\\n</$list>\\n<$list filter=\\\"[<__lang__>!search<__orig_lang__>]\\\">\\n<div class=\\\"tc-message-box\\\">//<<__lang__>>// translation is missing, you may create it at <$link to=<<target>>><$text text=<<target>> /></$link></div>\\n<div lang=<<__orig_lang__>>>\\n<$macrocall $name=\\\"i18nOriginal\\\" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>> />\\n</div>\\n</$list>\\n</$set>\\n</$list>\\n\\\\end\\n\\n\\\\define i18n(title domain:\\\"$:\\\" orig_lang:\\\"en-GB\\\" mode:\\\"block\\\")\\n<$set name=\\\"title\\\" value=<<__title__>> emptyValue=<<currentTiddler>>>\\n<$set name=\\\"lg-LG\\\" tiddler={{$:/language}} field=\\\"name\\\">\\n<$macrocall $name=\\\"i18nTranslation\\\" title=<<title>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<lg-LG>> mode=<<__mode__>>/>\\n</$set>\\n</$set>\\n\\\\end\\n\",\n \"module-type\": \"macro\"\n },\n \"$:/plugins/sycom/g-analytics/notification\": {\n \"title\": \"$:/plugins/sycom/g-analytics/notification\",\n \"tags\": \"$:/tags/PageTemplate\",\n \"text\": \"<$reveal type=\\\"nomatch\\\" state=\\\"$:/temp/HideAnalyticsWarning\\\" text=\\\"yes\\\">\\n <div class=\\\"tc-plugin-reload-warning\\\">\\n <$set name=\\\"tv-config-toolbar-class\\\" value=\\\"\\\">\\n\\n{{$:/plugins/sycom/g-analytics/disclaimer_notification}} <$button set=\\\"$:/temp/HideAnalyticsWarning\\\" setTo=\\\"yes\\\" class=\\\"tc-btn-invisible\\\">{{$:/core/images/close-button}}</$button>\\n </$set>\\n </div>\\n</$reveal>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/i18n/en-GB/readme\": {\n \"title\": \"$:/plugins/sycom/g-analytics/i18n/en-GB/readme\",\n \"text\": \"This [G-Analytics plugin](#$:/plugins/sycom/g-analytics) is an alternative version for the official plugin you can find in TiddlyWiki library.\\n\\nIt's compliant with [Do Not Track][dnt] and also with [GDPR][rgpd]. It enables also individual tiddlers tracking.\\n\\nHave a look at [demo page on the web][plugindemo] or at integrated documentation to see how it works.\\n\\n## Sources / licenses\\n* based upon [official google analytics plugin][official] of TiddlyWiki which implements [official Google code][googlecode]\\n* [this plugin][source] is released under similar [BSD 3-Clause license][license] as TiddlyWiki.\\n\\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins\\n[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics\\n[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs\\n[dnt]: http://donottrack.us/\\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics\\n[rgpd]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\\n\",\n \"type\": \"text/x-markdown\",\n \"created\": \"20151119173416000\",\n \"modified\": \"20190332172200000\",\n \"caption\": \"Readme\"\n },\n \"$:/plugins/sycom/g-analytics/readme\": {\n \"title\": \"$:/plugins/sycom/g-analytics/readme\",\n \"caption\": \"Readme\",\n \"text\": \"<<i18n readme $:/plugins/sycom/g-analytics>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/settings\": {\n \"title\": \"$:/plugins/sycom/g-analytics/settings\",\n \"tags\": \"$:/tags/Macro\",\n \"text\": \"\\\\define slideCheck(tid field:'text' checked unchecked default tooltip)\\n<$checkbox class=\\\"switch\\\"\\n tiddler=\\\"$tid$\\\"\\n field=\\\"$field$\\\"\\n checked=\\\"$checked$\\\"\\n unchecked=\\\"$unchecked$\\\"\\n default=\\\"$default$\\\">\\n <div title=\\\"$tooltip$\\\" class=\\\"slider round\\\"></div>\\n <span class=\\\"switchtext\\\"></span>\\n</$checkbox>\\n\\\\end\\n\\n<<i18n settings $:/plugins/sycom/g-analytics>>\\n\"\n },\n \"$:/plugins/sycom/g-analytics/Stylesheet\": {\n \"title\": \"$:/plugins/sycom/g-analytics/Stylesheet\",\n \"created\": \"20190419133629300\",\n \"modified\": \"20190423183600000\",\n \"tags\": \"$:/tags/Stylesheet\",\n \"type\": \"text/vnd.tiddlywiki\",\n \"text\": \"/* inspired from https://codepen.io/AllThingsSmitty/pen/MmxxOz */\\n.switch {\\n margin:0;\\n display: inline-block;\\n height: 1.5em;\\n position: relative;\\n width:2.6em;\\n vertical-align:bottom;\\n}.switch input[type=checkbox] {\\n display:none;\\n}.slider {\\n background-color: #888888;\\n bottom: 0;\\n cursor: pointer;\\n left: 0;\\n position: absolute;\\n right: 0;\\n top: 0;\\n transition: .4s;\\n}.slider:before {\\n background-color: #fff;\\n bottom: 4px;\\n content: \\\"\\\";\\n height: 1em;\\n left: 4px;\\n position: absolute;\\n transition: .4s;\\n width: 1em;\\n}input:checked + span .slider {\\n background-color: #5778d8;\\n}input:checked + span .slider:before {\\n transform: translateX(1em);\\n}span .slider.round {\\n border-radius: 1em;\\n}span .slider.round:before {\\n border-radius: 50%;\\n}input + span .switchtext:before {\\n display: inline-block;\\n color: white;\\n content: 'no';\\n font-size: .85em;\\n transform: translateX(1.6em) translatey(-.15em);\\n}input:checked + span .switchtext:before {\\n content: 'on';\\n transform: translateX(.2em) translatey(-.15em);\\n}.tc-plugin-reload-warning input + span .switchtext:before {\\n transform: translateX(.75em) translatey(-.15em);\\n}.tc-plugin-reload-warning input:checked + span .switchtext:before {\\n transform: translateX(-.8em) translatey(-.15em);\\n}\\n\"\n },\n \"$:/plugins/sycom/g-analytics/usage\": {\n \"title\": \"$:/plugins/sycom/g-analytics/usage\",\n \"text\": \"<<i18n usage $:/plugins/sycom/g-analytics>>\\n\"\n }\n }\n}",
"bag": "default",
"revision": "0",
"version": "1.3.2",
"type": "application/json",
"title": "$:/plugins/sycom/g-analytics",
"plugin-type": "plugin",
"list": "readme settings usage",
"description": "G-Analytics: website statistics",
"dependents": "",
"core-version": ">=5.0.0",
"contributor": "Sylvain Comte",
"author": "JeremyRuston"
}
]
Built from branch 'tiddlywiki-com' at commit f49c55fe3c6c250fb46372b43d6b8f73fa532790 of https://github.com/Jermolene/TiddlyWiki5.git at 2019-08-09 14:49:54 UTC
<$action-setfield $tiddler="$:/temp/search" $value=""/>
.columns {
column-width: 10em;
column-gap: 1em;
column-rule: 1px solid #ccc;
}
.column-item { /* For "blocks" such as categories of lists */
padding-bottom:1em;
white-space: nowrap;
}
.column-item-heading {
font-size:1.3rem;
background:lightgray;
margin-bottom:5px;
}
/*
.column-item:first-of-type {
margin-top:-2.2em;
}
*/
.column-item-item { /* E.g for list of titles in the item */
background:white;
white-space: nowrap;
overflow:hidden;
}
.column-item-item:hover {
overflow:visible;
}
.column-item-item-heading {
text-transform: uppercase;
font-size:.8rem;
margin-bottom:-3px;
}
{
"require": [
"$:/plugins/tiddlywiki/codemirror/mode/javascript/javascript.js",
"$:/plugins/tiddlywiki/codemirror/addon/edit/matchbrackets.js"
],
"configuration": {
"matchBrackets":true,
"showCursorWhenSelecting": true
}
}
{{$:/themes/jd/Mono/EmptyStoryMessage}}
$:/core/ui/EditTemplate/tags
~WikiLabs plugin library latest version!
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration"
},
"$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler"
},
"$:/language/Import/Upgrader/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler"
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>"
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/Shortcuts/Input/Accept/Hint": {
"title": "$:/language/Shortcuts/Input/Accept/Hint",
"text": "Accept the selected item"
},
"$:/language/Shortcuts/Input/AcceptVariant/Hint": {
"title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
"text": "Accept the selected item (variant)"
},
"$:/language/Shortcuts/Input/Cancel/Hint": {
"title": "$:/language/Shortcuts/Input/Cancel/Hint",
"text": "Clear the input field"
},
"$:/language/Shortcuts/Input/Down/Hint": {
"title": "$:/language/Shortcuts/Input/Down/Hint",
"text": "Select the next item"
},
"$:/language/Shortcuts/Input/Up/Hint": {
"title": "$:/language/Shortcuts/Input/Up/Hint",
"text": "Select the previous item"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal\n"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "References"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"title": "$:/core/modules/commander.js",
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/core/modules/commands/build.js",
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/core/modules/commands/clearpassword.js",
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/core/modules/commands/editions.js",
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/core/modules/commands/help.js",
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/core/modules/commands/init.js",
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/core/modules/commands/load.js",
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/core/modules/commands/makelibrary.js",
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = $tw.utils.getSubdirectories(folder) || [];\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/core/modules/commands/output.js",
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/core/modules/commands/password.js",
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/core/modules/commands/rendertiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/core/modules/commands/rendertiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/core/modules/commands/savetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/core/modules/commands/savetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/core/modules/commands/setfield.js",
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/core/modules/commands/unpackplugin.js",
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/core/modules/commands/verbose.js",
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/core/modules/commands/version.js",
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/core/modules/config.js",
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/core/modules/deserializers.js",
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\tthis.domNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/core/modules/filters/addprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/core/modules/filters/addsuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/core/modules/filters/after.js",
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/core/modules/filters/all/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/core/modules/filters/all/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/core/modules/filters/all/orphans.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/core/modules/filters/all/shadows.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/core/modules/filters/all/tiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/core/modules/filters/all.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/core/modules/filters/backlinks.js",
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/core/modules/filters/before.js",
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/core/modules/filters/commands.js",
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/duplicateslugs.js": {
"title": "$:/core/modules/filters/duplicateslugs.js",
"text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/core/modules/filters/each.js",
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/core/modules/filters/eachday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/core/modules/filters/editiondescription.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/core/modules/filters/editions.js",
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/core/modules/filters/field.js",
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/core/modules/filters/fields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/core/modules/filters/get.js",
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/core/modules/filters/getindex.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/core/modules/filters/has.js",
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/core/modules/filters/haschanged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/core/modules/filters/indexes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/core/modules/filters/is/current.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/core/modules/filters/is/image.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/core/modules/filters/is/missing.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/core/modules/filters/is/orphan.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/core/modules/filters/is/shadow.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/core/modules/filters/is/system.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/core/modules/filters/is/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/core/modules/filters/is/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/core/modules/filters/is.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/core/modules/filters/limit.js",
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/core/modules/filters/links.js",
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/core/modules/filters/list.js",
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/core/modules/filters/listed.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/core/modules/filters/listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/core/modules/filters/modules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/core/modules/filters/moduletypes.js",
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/core/modules/filters/next.js",
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/core/modules/filters/plugintiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/core/modules/filters/prefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/core/modules/filters/previous.js",
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/core/modules/filters/regexp.js",
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/core/modules/filters/removeprefix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/core/modules/filters/removesuffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/core/modules/filters/sameday.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/core/modules/filters/search.js",
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/core/modules/filters/shadowsource.js",
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/slugify.js": {
"title": "$:/core/modules/filters/slugify.js",
"text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/core/modules/filters/sort.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sortsub.js": {
"title": "$:/core/modules/filters/sortsub.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/core/modules/filters/splitbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/core/modules/filters/storyviews.js",
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.trim(a)];}\n);\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/core/modules/filters/suffix.js",
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/core/modules/filters/tag.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/core/modules/filters/tagging.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/core/modules/filters/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/core/modules/filters/title.js",
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/core/modules/filters/untagged.js",
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1);\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,1);\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = $tw.utils.getInt(operator.suffix,1),\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = $tw.utils.getInt(operator.suffix,prepend.length);\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/core/modules/filters.js",
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tArray.prototype.push.apply(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/core/modules/info/platform.js",
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey ? \"ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/core/modules/language.js",
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/core/modules/macros/changecount.js",
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/core/modules/macros/contrastcolour.js",
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/core/modules/macros/csvtiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/core/modules/macros/jsontiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/core/modules/macros/now.js",
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/core/modules/macros/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/core/modules/macros/resolvepath.js",
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/core/modules/macros/version.js",
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/core/modules/parsers/audioparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/core/modules/parsers/csvparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/core/modules/parsers/htmlparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/core/modules/parsers/imageparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/core/modules/utils/parseutils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/core/modules/parsers/textparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/core/modules/pluginswitcher.js",
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/core/modules/saver-handler.js",
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/core/modules/savers/andtidwiki.js",
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/core/modules/savers/download.js",
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/core/modules/savers/fsosaver.js",
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/core/modules/savers/manualdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/core/modules/savers/msdownload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/core/modules/savers/tiddlyfox.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/core/modules/savers/tiddlyie.js",
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/core/modules/savers/twedit.js",
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/core/modules/savers/upload.js",
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\");\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.pathPrefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/core/modules/browser-messaging.js",
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/core/modules/startup/commands.js",
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/core/modules/startup/favicon.js",
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/core/modules/startup/info.js",
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\tvar fields = {\n\t\ttitle: TITLE_INFO_PLUGIN,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/core/modules/startup/load-modules.js",
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/core/modules/startup/password.js",
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/core/modules/startup/render.js",
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/core/modules/startup/rootwidget.js",
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/core/modules/startup.js",
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/core/modules/startup/story.js",
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\t$tw.wiki.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t},{\n\t\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/core/modules/storyviews/classic.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/core/modules/storyviews/pop.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/core/modules/storyviews/zoomin.js",
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\n\t\t}\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t};\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/core/modules/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/core/modules/upgraders/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/core/modules/upgraders/system.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/core/modules/upgraders/themetweaks.js",
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)(e=r.charCodeAt(t))<128?o+=String.fromCharCode(e):e>127&&e<2048?(o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128)):(o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128));return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)(t=r.charCodeAt(o))<128?(e+=String.fromCharCode(t),o++):t>191&&t<224?(e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2):(e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3);return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var n=0;n<t.length;n++)o[t[n]]=o.require(t[n]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,n,i,d,f,a,h,c=\"\",u=0;u<r.length;)d=(t=r.charCodeAt(u++))>>2,f=(3&t)<<4|(n=r.charCodeAt(u++))>>4,a=(15&n)<<2|(i=r.charCodeAt(u++))>>6,h=63&i,isNaN(n)?a=h=64:isNaN(i)&&(h=64),c+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return c},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,n,i,d,f,a,h=\"\",c=0;c<r.length;)t=o.indexOf(r.charAt(c++))<<2|(d=o.indexOf(r.charAt(c++)))>>4,n=(15&d)<<4|(f=o.indexOf(r.charAt(c++)))>>2,i=(3&f)<<6|(a=o.indexOf(r.charAt(c++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(n)),64!=a&&(h+=String.fromCharCode(i));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/core/modules/utils/crypto.js",
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/core/modules/utils/dom/animations/slide.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/core/modules/utils/dom/animator.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/core/modules/utils/dom/browser.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/core/modules/utils/dom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/core/modules/utils/dom/http.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/core/modules/utils/dom/modal.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/core/modules/utils/dom/notifier.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/core/modules/utils/dom/popup.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/core/modules/utils/dom/scroller.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/core/modules/utils/edition-info.js",
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/core/modules/utils/fakedom.js",
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/core/modules/utils/filesystem.js",
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {};\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\tfilepath;\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// If not, generate a base pathname\n\tif(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t// Don't let the filename start with a dot because such files are invisible on *nix\n\tfilepath = filepath.replace(/^\\./g,\"_\");\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/core/modules/utils/logger.js",
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/core/modules/utils/parsetree.js",
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/core/modules/utils/performance.js",
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/core/modules/utils/pluginmaker.js",
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/core/modules/utils/utils.js",
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s) {\n\t// See http://www.json.org/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/core/modules/widgets/action-deletefield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/core/modules/widgets/action-navigate.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/core/modules/widgets/action-sendmessage.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/core/modules/widgets/action-setfield.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/core/modules/widgets/browse.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/core/modules/widgets/button.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\t\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/core/modules/widgets/checkbox.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/core/modules/widgets/codeblock.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/core/modules/widgets/count.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this.droppableClass || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag || changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/core/modules/widgets/dropzone.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/core/modules/widgets/edit-binary.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/core/modules/widgets/edit-bitmap.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/core/modules/widgets/edit-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/core/modules/widgets/edit.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/core/modules/widgets/element.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/core/modules/widgets/encrypt.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/core/modules/widgets/entity.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/core/modules/widgets/fieldmangler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/core/modules/widgets/fields.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/core/modules/widgets/image.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/core/modules/widgets/importvariables.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/core/modules/widgets/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/core/modules/widgets/link.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/core/modules/widgets/linkcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/core/modules/widgets/list.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/core/modules/widgets/macrocall.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/core/modules/widgets/navigator.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.wiki.addToStory(title,fromTitle,this.storyTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\"); \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/core/modules/widgets/password.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n \t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n \t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\t\t\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField || \"text\",\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue || \"\");\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue || \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\t\t\t\t\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/core/modules/widgets/reveal.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/core/modules/widgets/scrollable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\tsrcWindow = element ? element.ownerDocument.defaultView : window;\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/core/modules/widgets/select.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/core/modules/widgets/set.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/core/modules/widgets/tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/core/modules/widgets/transclude.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/core/modules/widgets/view.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/core/modules/widgets/widget.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\tevent.widget = event.widget || this;\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/core/modules/wiki.js",
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\t\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\t\t\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\") // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\") // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\") // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\") // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\"); // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #504945\nbutton-foreground: #fbf1c7\nbutton-border: transparent\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #282828\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: <<colour button-background>>\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #4C566A\nbutton-foreground: #D8DEE9\nbutton-border: transparent\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #2e3440\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #073642\nalert-highlight: #cb4b16\nalert-muted-foreground: #586e75\nbackground: #fdf6e3\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #cb4b16\nbutton-foreground: #fdf6e3\nbutton-border: transparent\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #d33682\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #859900\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #D08770\ndownload-background: #859900\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #fdf6e3\ndropdown-tab-background: #93a1a1\ndropzone-background: #859900\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: #d33682\nexternal-link-foreground-visited: #b58900\nexternal-link-foreground: #cb4b16\nforeground: #839496\nmessage-background: #586e75\nmessage-border: #586e75\nmessage-foreground: #eee8d5\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #eee8d5\nmodal-footer-background: #eee8d5\nmodal-footer-border: #eee8d5\nmodal-header-border: #eee8d5\nmuted-foreground: #93a1a1\nnotification-background: #EBCB8B\nnotification-border: #D08770\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #93a1a1\nprimary: #2aa198\nselect-tag-background: #eee8d5\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: #eee8d5\nsidebar-controls-foreground-hover: #268bd2\nsidebar-controls-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #839496\nsidebar-muted-foreground-hover: #657b83\nsidebar-muted-foreground: #93a1a1\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-background: #839496\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #657b83\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #839496\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #859900\nsidebar-tiddler-link-foreground: #268bd2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #dc322f\ntab-background-selected: #fdf6e3\ntab-background: #839496\ntab-border-selected: #93a1a1\ntab-border: #93a1a1\ntab-divider: #fdf6e3\ntab-foreground-selected: #839496\ntab-foreground: #eee8d5\ntable-border: #657b83\ntable-footer-background: #657b83\ntable-header-background: #93a1a1\ntag-background: #6c71c4\ntag-foreground: #eee8d5\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #b58900\ntiddler-controls-foreground-selected: #b58900\ntiddler-controls-foreground: #073642\ntiddler-editor-background: #eee8d5\ntiddler-editor-border-image: #eee8d5\ntiddler-editor-border: #eee8d5\ntiddler-editor-fields-even: #eee8d5\ntiddler-editor-fields-odd: #fdf6e3\ntiddler-info-background: #eee8d5\ntiddler-info-border: #eee8d5\ntiddler-info-tab-background: #586e75\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #586e75\ntiddler-title-foreground: #073642\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #839496\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags={{$:/config/NewTiddler/Tags}}/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "<$action-sendmessage $message=\"tm-new-tiddler\" tags={{$:/config/NewTiddler/Tags}}/>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewTiddler/Tags\" tag=\"input\" default=\"\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" tag=\"input\" default=\"\"/> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[title]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[title]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[title]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\">\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n cancelPopups=\"yes\"\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>> \n</em>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$edit-text tiddler=<<newFieldNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"/>\n \n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> \n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span> \n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\"/>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\whitespace trim\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> \n<div class=\"tc-type-selector-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "\\define save-tiddler-button()\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcut/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcut/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-enable-drag-and-drop\" value={{$:/config/DragAndDrop/Enable}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}} <$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip=<<lingo Delete/Hint>> aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"> <<lingo Names/External/Show>></$checkbox>\n\n<<palette-manager-table>>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n</div>"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">{{$:/core/images/close-button}}</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\n\n\\define cancel-search-actions() <$action-deletetiddler $filter=\"[<__storeTitle__>] [<__tiddler__>] [<__selectionStateTitle__>]\"/>\n\n\\define input-accept-actions() <$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>\n\n\\define input-accept-variant-actions() <$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">> titleSearchFilter=\"[!is[system]search:title<userInput>sort[title]limit[250]]\" allSearchFilter=\"[!is[system]search<userInput>sort[title]limit[250]]\">\n<div class=\"tc-search\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/search\" storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" primaryListFilter=<<titleSearchFilter>> secondaryListFilter=<<allSearchFilter>> \n\t\tfilterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" />\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<<delete-state-tiddlers>>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<delete-state-tiddlers>>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\"/>\n\n</div>\n"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.23/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "no"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/input-accept": {
"title": "$:/config/ShortcutInfo/input-accept",
"text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
},
"$:/config/ShortcutInfo/input-accept-variant": {
"title": "$:/config/ShortcutInfo/input-accept-variant",
"text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
},
"$:/config/ShortcutInfo/input-cancel": {
"title": "$:/config/ShortcutInfo/input-cancel",
"text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/input-down": {
"title": "$:/config/ShortcutInfo/input-down",
"text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
},
"$:/config/ShortcutInfo/input-up": {
"title": "$:/config/ShortcutInfo/input-up",
"text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/linkify": {
"title": "$:/config/ShortcutInfo/linkify",
"text": "{{$:/language/Buttons/Linkify/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/transcludify": {
"title": "$:/config/ShortcutInfo/transcludify",
"text": "{{$:/language/Buttons/Transcludify/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/input-accept": {
"title": "$:/config/shortcuts/input-accept",
"text": "Enter"
},
"$:/config/shortcuts/input-accept-variant": {
"title": "$:/config/shortcuts/input-accept-variant",
"text": "Alt-Enter"
},
"$:/config/shortcuts/input-cancel": {
"title": "$:/config/shortcuts/input-cancel",
"text": "Escape"
},
"$:/config/shortcuts/input-down": {
"title": "$:/config/shortcuts/input-down",
"text": "Down"
},
"$:/config/shortcuts/input-up": {
"title": "$:/config/shortcuts/input-up",
"text": "Up"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/keyboard-driven-input": {
"title": "$:/core/macros/keyboard-driven-input",
"tags": "$:/tags/Macro",
"text": "\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<__primaryListFilter__>addsuffix[-primaryList]] =[subfilter<__secondaryListFilter__>addsuffix[-secondaryList]]\">\n<$set name=\"nextItem\" value={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}}>\n<$list filter=\"[<nextItem>minlength[1]]\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n</$set>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,primaryListFilter,secondaryListFilter,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\")\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"text": "\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions)\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<currentTiddler>!tag<tag>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-sendmessage $message=\"tm-remove-tag\" $param=<<tag>>/>\n\"\"\">\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define tag-button(actions,selectedClass)\n<$button class=\"tc-btn-invisible $selectedClass$\" tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n<<delete-tag-state-tiddlers>>\n$actions$\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define clear-tags-actions()\n<$list filter=\"[<__storeTitle__>has[text]] [<__tiddler__>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-cancel-tiddler\"/>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define tag-picker-inner(actions)\n\\whitespace trim\n<$vars tagSelectionState=<<qualify \"$:/state/selected-tag\">> storeTitle=<<qualify \"$:/temp/NewTagName/input\">> refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> primaryListFilter=<<nonSystemTagsFilter>> secondaryListFilter=<<systemTagsFilter>> \n\t\tinputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>>/>\"\"\" inputCancelActions=<<clear-tags-actions>> tag=\"input\" \n\t\tplaceholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> \n\t\tclass=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} \n\t\tfilterMinLength={{$:/config/Tags/MinLength}} cancelPopups=<<cancelPopups>> />\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n$actions$\n<<delete-tag-state-tiddlers>>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-button\" actions=<<__actions__>> selectedClass=\"tc-tag-button-selected\"/>\"\"\">\n<$macrocall $name=\"tag-button\" actions=<<__actions__>>/>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-button\" actions=<<__actions__>> selectedClass=\"tc-tag-button-selected\"/>\"\"\">\n<$macrocall $name=\"tag-button\" actions=<<__actions__>>/>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n\\end\n\\define tag-picker(actions)\n\\whitespace trim\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>>/>\n</$set>\n</$list>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=<<__selectedTiddler__>>>\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=<<__template__>>>\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
\define i18nOriginal(title domain orig_lang lang mode)
<$list filter="[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]">
<$transclude mode=<<__mode__>> />
</$list>
<$list filter="[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]">
<div class="tc-message-box">
//<<__orig_lang__>>// original is missing, please create it at <$link to=<<currentTiddler>>><$text text=<<currentTiddler>> /></$link></div>
</$list>
\end
\define i18nTranslation(title domain orig_lang lang mode)
<$list filter="[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]">
<$transclude mode=<<__mode__>> />
</$list>
<$list filter="[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]">
<$set name="target" value=<<currentTiddler>>>
<$list filter="[<__lang__>search<__orig_lang__>]">
<$macrocall $name="i18nOriginal" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>>/>
</$list>
<$list filter="[<__lang__>!search<__orig_lang__>]">
<div class="tc-message-box">//<<__lang__>>// translation is missing, you may create it at <$link to=<<target>>><$text text=<<target>> /></$link></div>
<div lang=<<__orig_lang__>>>
<$macrocall $name="i18nOriginal" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>> />
</div>
</$list>
</$set>
</$list>
\end
\define i18n(title domain:"$:" orig_lang:"en-GB" mode:"block")
<$set name="title" value=<<__title__>> emptyValue=<<currentTiddler>>>
<$set name="lg-LG" tiddler={{$:/language}} field="name">
<$macrocall $name="i18nTranslation" title=<<title>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<lg-LG>> mode=<<__mode__>>/>
</$set>
</$set>
\end
\define lingo-base() $:/language/EditTemplate/
\define tag-styles()
background-color:$(backgroundColor)$;
fill:$(foregroundColor)$;
color:$(foregroundColor)$;
\end
\define tag-body-inner(colour,fallbackTarget,colourA,colourB)
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
<span style=<<tag-styles>> class="tc-tag-label">
<$view field="title" format="text" />
<$button message="tm-remove-tag" param={{!!title}} class="tc-btn-invisible tc-remove-tag-button">×</$button>
</span>
</$vars>
\end
\define tag-body(colour,palette)
<$macrocall $name="tag-body-inner" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>
\end
\define tag-picker-actions()
<$action-listops
$tiddler=<<currentTiddler>>
$field="tags"
$subfilter="[<tag>] [all[current]tags[]]"
/>
\end
<div class="tc-edit-tags">
<$fieldmangler>
<$list filter="[all[current]tags[]sort[title]]" storyview="pop">
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}}/>
</$list>
</$fieldmangler>
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
</div>
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
.floatleft img { float:left; }
.floatright img { float:right; }
Deg to rad
Force 1 = {{!!f_1}}
Angle 1 = {{!!a_21}} in rads (=round({{!!a1r}}, 3)=)
h_1 = (=round({{!!f_1}}*cos(({{!!a1r}})))=)
v_1 = (=round({{!!f_1}}*sin(({{!!a1r}})))=)
Force 2 = {{!!f_2}}
Angle 2 = {{!!a_2}} in rads (=round({{!!a2r}}, 3)=)
h_2 = (=round({{!!f_2}}*cos(({{!!a2r}})))=)
v_2 = (=round({{!!f_2}}*sin(({{!!a2r}})))=)
Force 3 = {{!!f_3}}
Angle 3 = {{!!a_3}} in rads (=round({{!!a3r}}, 3)=)
h_3 = (=round({{!!f_1}}*cos(({{!!a1r}})))=)
v_3 = (=round({{!!f_3}}*sin(({{!!a3r}})))=)
u_1 = {{!!u_1}} in rads = (=round({{!!u1r}}, 3)=)
u_2 = {{!!u_2}} in rads = (=round({{!!u2r}}, 3)=)
Ans 1 = {{!!ans1}}
Ans 2 = {{!!ans2}}
stephenteacher.tiddlyspot.com
<meta name="google-site-verification" content="RB1cfzcBvg5gSl7feE-PrTdZhtYtLDZCvYjxbA8eR8Y" />
The following tiddlers were imported:
alert-background: #ffca13
alert-border: #ffca13
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
background: #eae6e1
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour page-background>>
button-foreground: <<colour muted-foreground>>
button-border: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: #ffca13
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #9e6129
external-link-foreground: <<colour primary>>
foreground: #433f36
message-background: #9e6129
message-border: #9e6129
message-foreground: <<colour foreground>>
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour foreground>>
modal-header-border: <<colour muted-foreground>>
muted-foreground: #737373
notification-background: #ffca13
notification-border: #ffca13
page-background: #cfcdcd
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
primary: #2d539b
sidebar-button-foreground: <<colour primary>>
sidebar-controls-foreground-hover: inherit
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: #d8d8d8
sidebar-foreground: <<colour primary>>
sidebar-muted-foreground-hover: inherit
sidebar-muted-foreground: <<colour muted-foreground>>
sidebar-tab-background-selected: <<colour background>>
sidebar-tab-background: <<colour background>>
sidebar-tab-border-selected: <<colour primary>>
sidebar-tab-border: <<colour background>>
sidebar-tab-divider: <<colour primary>>
sidebar-tab-foreground-selected: <<colour foreground>>
sidebar-tab-foreground: <<colour muted-foreground>>
sidebar-tiddler-link-foreground-hover: inherit
sidebar-tiddler-link-foreground: <<colour muted-foreground>>
site-title-foreground: <<colour foreground>>
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour page-background>>
tab-background: <<colour page-background>>
tab-border-selected: <<colour page-background>>
tab-border: <<colour page-background>>
tab-divider: <<colour page-background>>
tab-foreground-selected: <<colour primary>>
tab-foreground: <<colour tab-foreground>>
table-border: <<colour page-background>>
table-footer-background: <<colour page-background>>
table-header-background: <<colour page-background>>
tag-background: #ffca13
tag-foreground: #a26624
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: inherit
tiddler-controls-foreground-selected: inherit
tiddler-controls-foreground: <<colour muted-foreground>>
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: <<colour background>>
tiddler-editor-fields-even: <<colour tag-background>>
tiddler-editor-fields-odd: <<colour page-background>>
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #c0bbb6
very-muted-foreground: #898989
alert-background: #644a7d
alert-border: #644a7d
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
background: #2A2B30
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour page-background>>
button-foreground: <<colour foreground>>
button-border: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: #644a7d
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #644a7d
external-link-foreground: <<colour primary>>
foreground: #cecece
message-background: #644a7d
message-border: #644a7d
message-foreground: <<colour foreground>>
modal-backdrop: <<colour page-background>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour muted-foreground>>
modal-header-border: <<colour muted-foreground>>
muted-foreground: #8d8d8d
notification-background: #644a7d
notification-border: #644a7d
page-background: #1c1d22
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
primary: #c80000
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: inherit
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: transparent
sidebar-foreground: <<colour foreground>>
sidebar-muted-foreground-hover: inherit
sidebar-muted-foreground: <<colour foreground>>
sidebar-tab-background-selected: <<colour background>>
sidebar-tab-background: <<colour background>>
sidebar-tab-border-selected: <<colour background>>
sidebar-tab-border: <<colour background>>
sidebar-tab-divider: <<colour background>>
sidebar-tab-foreground-selected: <<colour primary>>
sidebar-tab-foreground: <<colour muted-foreground>>
sidebar-tiddler-link-foreground-hover: inherit
sidebar-tiddler-link-foreground: <<colour muted-foreground>>
site-title-foreground: white
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour page-background>>
tab-background: <<colour page-background>>
tab-border-selected: <<colour page-background>>
tab-border: <<colour page-background>>
tab-divider: <<colour page-background>>
tab-foreground-selected: <<colour primary>>
tab-foreground: <<colour tab-foreground>>
table-border: <<colour page-background>>
table-footer-background: <<colour page-background>>
table-header-background: <<colour muted-foreground>>
tag-background: #644a7d
tag-foreground: <<colour foreground>>
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: inherit
tiddler-controls-foreground-selected: <<colour foreground>>
tiddler-controls-foreground: <<colour muted-foreground>>
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: <<colour background>>
tiddler-editor-fields-even: #3a3a3a
tiddler-editor-fields-odd: <<colour page-background>>
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #644a7d
very-muted-foreground: #3a3a3a
alert-background: <<colour tag-background>>
alert-border: <<colour tag-background>>
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
background: #fbfbfb
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour page-background>>
button-foreground: <<colour muted-foreground>>
button-border: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: <<colour tag-background>>
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #237544
external-link-foreground: #40EFF2
foreground: #38363B
message-background: #D7DCDF
message-border: #D7DCDF
message-foreground: <<colour foreground>>
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour muted-foreground>>
modal-header-border: <<colour muted-foreground>>
muted-foreground: #868686
notification-background: <<colour tag-background>>
notification-border: <<colour tag-background>>
page-background: #ebeeef
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
primary: #237544
sidebar-button-foreground: <<colour primary>>
sidebar-controls-foreground-hover: inherit
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: #d8d8d8
sidebar-foreground: <<colour primary>>
sidebar-muted-foreground-hover: inherit
sidebar-muted-foreground: <<colour muted-foreground>>
sidebar-tab-background-selected: <<colour background>>
sidebar-tab-background: <<colour background>>
sidebar-tab-border-selected: <<colour primary>>
sidebar-tab-border: <<colour background>>
sidebar-tab-divider: <<colour primary>>
sidebar-tab-foreground-selected: <<colour foreground>>
sidebar-tab-foreground: <<colour muted-foreground>>
sidebar-tiddler-link-foreground-hover: inherit
sidebar-tiddler-link-foreground: <<colour muted-foreground>>
site-title-foreground: <<colour foreground>>
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour page-background>>
tab-background: <<colour page-background>>
tab-border-selected: <<colour page-background>>
tab-border: <<colour page-background>>
tab-divider: <<colour page-background>>
tab-foreground-selected: <<colour primary>>
tab-foreground: <<colour tab-foreground>>
table-border: <<colour page-background>>
table-footer-background: <<colour page-background>>
table-header-background: <<colour page-background>>
tag-background: #94DC20
tag-foreground: <<general primary>>
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: <<colour tag-background>>
tiddler-controls-foreground-selected: inherit
tiddler-controls-foreground: <<colour muted-foreground>>
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: <<colour background>>
tiddler-editor-fields-even: <<colour tag-background>>
tiddler-editor-fields-odd: <<colour page-background>>
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #d2cfcc
very-muted-foreground: #a3a3a3
alert-background: #644a7d
alert-border: #644a7d
alert-highlight: <<colour primary>>
alert-muted-foreground: <<colour muted-foreground>>
background: #2A2B30
blockquote-bar: <<colour muted-foreground>>
button-background: <<colour page-background>>
button-foreground: <<colour foreground>>
button-border: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour page-background>>
code-foreground: <<colour muted-foreground>>
dirty-indicator: <<colour primary>>
download-background: #644a7d
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour background>>
dropdown-tab-background-selected: <<colour background>>
dropdown-tab-background: <<colour background>>
dropzone-background: <<colour primary>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #644a7d
external-link-foreground: #f0b000
foreground: #cecece
message-background: #644a7d
message-border: #644a7d
message-foreground: <<colour foreground>>
modal-backdrop: <<colour page-background>>
modal-background: <<colour background>>
modal-border: <<colour background>>
modal-footer-background: <<colour background>>
modal-footer-border: <<colour background>>
modal-header-border: <<colour muted-foreground>>
muted-foreground: #8d8d8d
notification-background: #644a7d
notification-border: #644a7d
page-background: #1c1d22
pre-background: <<colour page-background>>
pre-border: <<colour page-background>>
primary: #00a9c7
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: inherit
sidebar-controls-foreground: <<colour muted-foreground>>
sidebar-foreground-shadow: transparent
sidebar-foreground: <<colour foreground>>
sidebar-muted-foreground-hover: inherit
sidebar-muted-foreground: <<colour foreground>>
sidebar-tab-background-selected: <<colour background>>
sidebar-tab-background: <<colour background>>
sidebar-tab-border-selected: <<colour background>>
sidebar-tab-border: <<colour background>>
sidebar-tab-divider: <<colour background>>
sidebar-tab-foreground-selected: <<colour primary>>
sidebar-tab-foreground: <<colour muted-foreground>>
sidebar-tiddler-link-foreground-hover: inherit
sidebar-tiddler-link-foreground: <<colour muted-foreground>>
site-title-foreground: white
static-alert-foreground: <<colour foreground>>
tab-background-selected: <<colour page-background>>
tab-background: <<colour page-background>>
tab-border-selected: <<colour page-background>>
tab-border: <<colour page-background>>
tab-divider: <<colour page-background>>
tab-foreground-selected: <<colour primary>>
tab-foreground: <<colour tab-foreground>>
table-border: <<colour page-background>>
table-footer-background: <<colour page-background>>
table-header-background: <<colour muted-foreground>>
tag-background: #644a7d
tag-foreground: <<colour foreground>>
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: inherit
tiddler-controls-foreground-selected: <<colour foreground>>
tiddler-controls-foreground: <<colour muted-foreground>>
tiddler-editor-background: <<colour background>>
tiddler-editor-border-image: <<colour background>>
tiddler-editor-border: <<colour background>>
tiddler-editor-fields-even: #3a3a3a
tiddler-editor-fields-odd: <<colour page-background>>
tiddler-info-background: <<colour background>>
tiddler-info-border: <<colour page-background>>
tiddler-info-tab-background: <<colour background>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour primary>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #3a3a3a
very-muted-foreground: #3a3a3a
\define HelpButton(label, ButtonText:?)
^^(<$button popup="""$:/temp/popup/$(currentTiddler)$/$label$""" class='tc-btn-invisible tc-tiddlylink'>$ButtonText$</$button>)<$reveal type='popup' state="""$:/temp/popup/$(currentTiddler)$/$label$"""><div class='tc-drop-down' style='width:150px;max-width:75vw;white-space:pre-wrap;padding:10px;text-align:left;font-size:1.3em;border-radus:0.5em;'><$transclude field="""$label$"""/></div></$reveal>^^
\end
Usage:
```
This adds a help button that looks like this<<HelpButton demo>>
```
This adds a help button that looks like this<<HelpButton demo>>
```
This adds a help button that looks like this<<HelpButton demo2 'why?'>>
```
This adds a help button that looks like this<<HelpButton demo2 'why?'>>
Contents of the `demo` field: {{!!demo}}
Contents of the `demo2` field: {{!!demo2}}
You make a field for each label that contains the help information. This can have html and simple wikitext. Since it is a field linebreaks need to be added using html `<br>` tags.
(function(){
"use strict";
exports.name = "eval";
exports.params = [
{ name: "cell" },
{ name:"datatiddler" }
];
/*
Run the macro
*/
exports.run = function(cell,datatiddler) {
var a=datatiddler+"!!"+cell;
//the the cell contents
var formula =-1;
var b =$tw.wiki.getTextReference(a);
if (b==undefined) {
return;
}
formula = b.indexOf("=");
if (formula < 0) {
var sk=b;
} else {
//its a formula
var re = /(.*?)!!(.*?)([&\-+*\/,\)]|$)(.*?)$/;
do {
var bhold=b;
var subst = '!!$2';
//find the last referenced cell
var refcell = b.replace(re, subst);
var tempcell = "!!"+cell;
if (refcell===tempcell) {return "Circular Ref ";}
//get the value of the referenced cell and substitute it
a=datatiddler+refcell;
a=a.toLowerCase();
var subst ="$1("+$tw.wiki.getTextReference(a)+")$3$4";
var b = b.replace(re, subst);
} while (bhold!=b);
re = /=/g;
var subst = '';
b = b.replace(re, subst);
re=/@/g;
subst ="Math.";
b = b.replace(re, subst);
re = /math/g;
subst = 'Math';
b = b.replace(re, subst);
re = /pi/;
subst = 'PI';
b= b.replace(re, subst);
var f=b.indexOf("&");
if (f>0) {
//string concatenation
//remove parenthesis
re = /[\(\)]/g;
subst = '';
b= b.replace(re, subst);
//change & to space
re = /&/g;
var subst = ' ';
b = b.replace(re, subst);
// end of concatenation
}
try {var sk=eval(b);}
catch(err) {sk = b;}
//end of formula
}
return sk;
};
})();
(function(){
"use strict";
exports.name = "eval1";
exports.params = [
{ name: "cell" },
{ name:"datatiddler" }
];
/*
Run the macro
*/
exports.run = function(cell,datatiddler) {
return '<$reveal state="$:/state/formulas" type="match" text="yes">`'+cell+'`<$edit-text tiddler="'+datatiddler+'" field="'+cell+'" /></$reveal><$reveal state="$:/state/formulas" type="nomatch" text="yes"><$macrocall $name="eval" datatiddler="'+datatiddler+'" cell="'+cell+'"/></$reveal>';
};
})();
\rules only filteredtranscludeinline transcludeinline
<div class="tc-remove-when-wiki-loaded">
<center> <img src="data:image/gif;base64,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" /> <br> <h1> {{$:/SiteTitle}} is loading
</div>
\rules only filteredtranscludeinline transcludeinline
<div class="tc-remove-when-wiki-loaded">
<center> <img src="data:image/gif;base64,R0lGODlhgACAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQAAwAAACwAAAAAgACAAIf09vfpgXnytbDdbmXz4+NjgJCktb+vhoiRpbH19/j5393laWDma2L2ycXnh4D28fH2+Plsh5bS2t5uhZGdrLXLu77g5ej//PzqhHzg5ulOannmbmSpo6p1eYS3t728x8ypucL++/tIZXVqhZXK09nlZ12ptr2RkZrndGvokoyHh5Der63iV0zqhn/xsay0wMaXq7W6x870vbmmtLvjp6THWVO5pKftlI2cr7lwipladIL18/SjtL399PP6+/z42Nb76ej75+agr7f41dLG0Nb53dvnyMfc1tnbh4K9ydDI0tjtl5DGxcnq4uPjWlD77u2qt7+ywMjk6euBlqKbq7PNqKjJ0taDgInUoJ77/PyNoazoeXHjXFLy6+vht7b86+rwqqRziZVZYm50aXK7v8X19PPoe3NVcH5kfIpNYW9lgZH2zcnpfnXriYFogI1BX2/clZG1wsmDmKTolI7w8vRtiJfxrqiTpK2fXl7BzNL+/v5yjJp5kZ7r7/C9yM7Y3uL++vn30M2JnKbunpjZycp+i5f////Fz9R3X2eisbhFYnLl0dHvoZz87+52jJe6xcrHlpX9/f1LaHfs5+jm6uz30s/zubXrjoa/yc749PRviZjwpqBGYG+mtr9CYHD8/P3i5+ra4eTQy855jpqbm6PIztPN19y8rbH//v7skYpwh5OxvsXfn5zk3t9pg5LAy9BRbXvP19vo19f87evkYVejsrrng3vV3ODn6+2esLqnsLfc4uW2w8tfeIa3xcz75eRqfozkZFr98vH1xcHmcGfp7e7ia2LjXlSvvMLhe3P+///++Pfe5Oeump/Z4OPnd26aqrLy9fasu8ToeG/0wb3CcW/If3zb3N7d4+auvcX64d/skIi3w8nDztSWd3z68/J8lKJohJP13dx/k55rg4/99vX87+3skotHZHTDzdLri4T64+GsucCUqLPM1dnt8PKJnqqXp7DfkIuFm6j4+frQ2N3529igsrx1jpziWE3umpTX09WarbfWZ1/65OIAAAAI/4YEDiRY0OBBhAkVLmTY0OFDiBElTqRY0eJFjBk1buTY0eNHkCFFjiRZ0uRJlClVrmTZ0uVLmDFlzqRZ0+ZNnDl17uTZ0+dPoEGFDiVa1OjF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QojN+oh2H+QTtZhA9AgSi4ZKQhAzSIcF0uFfCuT7IX1oaI4JkohmemIGCn/Idtmdy3GIQBAPpXhDylpLCRdEth2HSDGsgIxEEBSZ5Ctnectd/nKYx1zmM6d5zfkaEAAh+QQAAwAAACwAAAAAgACAAIf09vfpgXnytbDdbmXz4+NjgJCktb+vhoiRpbH19/j5393laWDma2L2ycXnh4D28fH2+Plsh5bS2t5uhZGdrLXLu77g5ej//PzqhHzg5ulOannmbmSpo6p1eYS3t728x8ypucL++/tIZXVqhZXK09nlZ12ptr2RkZrndGvokoyHh5Der63iV0zqhn/xsay0wMaXq7W6x870vbmmtLvjp6THWVO5pKftlI2cr7lwipladIL18/SjtL399PP6+/z42Nb76ej75+agr7f41dLG0Nb53dvnyMfc1tnbh4K9ydDI0tjtl5DGxcnq4uPjWlD77u2qt7+ywMjk6euBlqKbq7PNqKjJ0taDgInUoJ77/PyNoazoeXHjXFLy6+vht7b86+rwqqRziZVZYm50aXK7v8X19PPoe3NVcH5kfIpNYW9lgZH2zcnpfnXriYFogI1BX2/clZG1wsmDmKTolI7w8vRtiJfxrqiTpK2fXl7BzNL+/v5yjJp5kZ7r7/C9yM7Y3uL++vn30M2JnKbunpjZycp+i5f////Fz9R3X2eisbhFYnLl0dHvoZz87+52jJe6xcrHlpX9/f1LaHfs5+jm6uz30s/zubXrjoa/yc749PRviZjwpqBGYG+mtr9CYHD8/P3i5+ra4eTQy855jpqbm6PIztPN19y8rbH//v7skYpwh5OxvsXfn5zk3t9pg5LAy9BRbXvP19vo19f87evkYVejsrrng3vV3ODn6+2esLqnsLfc4uW2w8tfeIa3xcz75eRqfozkZFr98vH1xcHmcGfp7e7ia2LjXlSvvMLhe3P+///++Pfe5Oeump/Z4OPnd26aqrLy9fasu8ToeG/0wb3CcW/If3zb3N7d4+auvcX64d/skIi3w8nDztSWd3z68/J8lKJohJP13dx/k55rg4/99vX87+3skotHZHTDzdLri4T64+GsucCUqLPM1dnt8PKJnqqXp7DfkIuFm6j4+frQ2N3529igsrx1jpziWE3umpTX09WarbfWZ1/65OIAAAAI/4YEDiRY0OBBhAkVLmTY0OFD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" /> <br> <h1> {{$:/SiteTitle}} is loading
</div>
.no-border,
.no-border th,
.no-border tr,
.no-border td{
border:0;}
.no-border .tg-0ord{text-align:right}
.no-border .tg-s6z2{text-align:center}
.no-border .tg-h0x1{text-align:left}
.no-border td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;}
.no-border th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;}
$:/themes/jd/Mono/Palette/SpartanDay
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background:
button-foreground:
button-border:
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
dirty-indicator: #ff0000
download-background: #66cccc
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #0000ee
foreground: #333333
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #999999
notification-background: #ffffdd
notification-border: #999999
page-background: #ffffff
pre-background: #f5f5f5
pre-border: #cccccc
primary: #7897f3
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #ccc
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: inherit
sidebar-tab-background: inherit
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: <<colour tab-divider>>
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #7897f3
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: inherit
tab-background: transparent
tab-border-selected: #a8a8a8
tab-border: transparent
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ffeedd
tag-foreground: #000
tiddler-background: <<colour background>>
tiddler-border: #eee
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #ff9900
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
base03: #002b36
base02: #073642
base01: #586e75
base00: #657b83
base0: #839496
base1: #93a1a1
base2: #eee8d5
base3: #fdf6e3
yellow: #b58900
orange: #cb4b16
red: #dc322f
magenta: #d33682
violet: #6c71c4
blue: #268bd2
cyan: #2aa198
green: #859900
base10: #c0c4bb
violet-muted: #7c81b0
blue-muted: #4e7baa
yellow-hot: #ffcc44
orange-hot: #eb6d20
red-hot: #ff2222
blue-hot: #2298ee
green-hot: #98ee22
background: #fdf6e3
download-foreground: <<colour background>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
modal-background: <<colour background>>
sidebar-foreground-shadow: <<colour background>>
tiddler-background: #e8e2fc
tiddler-border: <<colour background>>
tiddler-link-background: <<colour background>>
tab-background-selected: <<colour background>>
dropdown-tab-background-selected: <<colour tab-background-selected>>
foreground: #657b83
dragger-background: <<colour foreground>>
tab-foreground: <<colour foreground>>
tab-foreground-selected: <<colour tab-foreground>>
sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground: <<colour foreground>>
sidebar-foreground: <<colour foreground>>
alert-muted-foreground: <<colour base01>>
code-foreground: <<colour base00>>
message-foreground: <<colour base00>>
tag-foreground: <<colour base00>>
sidebar-tiddler-link-foreground: <<colour base0>>
muted-foreground: <<colour base1>>
blockquote-bar: <<colour muted-foreground>>
dropdown-border: <<colour muted-foreground>>
sidebar-muted-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour muted-foreground>>
site-title-foreground: <<colour tiddler-title-foreground>>
modal-footer-background: <<colour base2>>
page-background: <<colour base2>>
modal-backdrop: <<colour page-background>>
notification-background: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour code-background>>
pre-background: <<colour page-background>>
pre-border: <<colour pre-background>>
sidebar-tab-background-selected: <<colour page-background>>
table-header-background: <<colour base2>>
tag-background: <<colour base2>>
tiddler-editor-background: <<colour base2>>
tiddler-info-background: <<colour base2>>
tiddler-info-tab-background: <<colour base2>>
tab-background: <<colour base2>>
dropdown-tab-background: <<colour tab-background>>
alert-background: <<colour base3>>
message-background: <<colour base3>>
alert-highlight: <<colour magenta>>
external-link-foreground: <<colour violet>>
tiddler-controls-foreground: <<colour base10>>
external-link-foreground-visited: <<colour violet-muted>>
primary: <<colour blue-muted>>
download-background: <<colour primary>>
tiddler-link-foreground: <<colour primary>>
alert-border: #b99e2f
dirty-indicator: #ff0000
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
message-border: #cfd6e6
modal-border: #999999
sidebar-controls-foreground-hover:
sidebar-muted-foreground-hover:
sidebar-tab-background: #ded8c5
sidebar-tiddler-link-foreground-hover:
static-alert-foreground: #aaaaaa
tab-border: #cccccc
modal-footer-border: <<colour tab-border>>
modal-header-border: <<colour tab-border>>
notification-border: <<colour tab-border>>
sidebar-tab-border: <<colour tab-border>>
tab-border-selected: <<colour tab-border>>
sidebar-tab-border-selected: <<colour tab-border-selected>>
tab-divider: #d8d8d8
sidebar-tab-divider: <<colour tab-divider>>
table-border: #dddddd
table-footer-background: #a8a8a8
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-border: #dddddd
tiddler-subtitle-foreground: #c0c0c0
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
base03: #002b36
base02: #073642
base01: #586e75
base00: #657b83
base0: #839496
base1: #93a1a1
base2: #eee8d5
base3: #fdf6e3
yellow: #b58900
orange: #cb4b16
red: #dc322f
magenta: #d33682
violet: #6c71c4
blue: #268bd2
cyan: #2aa198
green: #859900
base10: #c0c4bb
violet-muted: #7c81b0
blue-muted: #4e7baa
yellow-hot: #ffcc44
orange-hot: #eb6d20
red-hot: #ff2222
blue-hot: #2298ee
green-hot: #98ee22
background: #fdf6e3
download-foreground: <<colour background>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
modal-background: <<colour background>>
sidebar-foreground-shadow: <<colour background>>
tiddler-background: #ffddff
tiddler-border: <<colour background>>
tiddler-link-background: <<colour background>>
tab-background-selected: <<colour background>>
dropdown-tab-background-selected: <<colour tab-background-selected>>
foreground: #657b83
dragger-background: <<colour foreground>>
tab-foreground: <<colour foreground>>
tab-foreground-selected: <<colour tab-foreground>>
sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground: <<colour foreground>>
sidebar-foreground: <<colour foreground>>
alert-muted-foreground: <<colour base01>>
code-foreground: <<colour base00>>
message-foreground: <<colour base00>>
tag-foreground: <<colour base00>>
sidebar-tiddler-link-foreground: <<colour base0>>
muted-foreground: <<colour base1>>
blockquote-bar: <<colour muted-foreground>>
dropdown-border: <<colour muted-foreground>>
sidebar-muted-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour muted-foreground>>
site-title-foreground: <<colour tiddler-title-foreground>>
modal-footer-background: <<colour base2>>
page-background: <<colour base2>>
modal-backdrop: <<colour page-background>>
notification-background: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour code-background>>
pre-background: <<colour page-background>>
pre-border: <<colour pre-background>>
sidebar-tab-background-selected: <<colour page-background>>
table-header-background: <<colour base2>>
tag-background: <<colour base2>>
tiddler-editor-background: <<colour base2>>
tiddler-info-background: <<colour base2>>
tiddler-info-tab-background: <<colour base2>>
tab-background: <<colour base2>>
dropdown-tab-background: <<colour tab-background>>
alert-background: <<colour base3>>
message-background: <<colour base3>>
alert-highlight: <<colour magenta>>
external-link-foreground: <<colour violet>>
tiddler-controls-foreground: <<colour base10>>
external-link-foreground-visited: <<colour violet-muted>>
primary: <<colour blue-muted>>
download-background: <<colour primary>>
tiddler-link-foreground: <<colour primary>>
alert-border: #b99e2f
dirty-indicator: #ff0000
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
message-border: #cfd6e6
modal-border: #999999
sidebar-controls-foreground-hover:
sidebar-muted-foreground-hover:
sidebar-tab-background: #ded8c5
sidebar-tiddler-link-foreground-hover:
static-alert-foreground: #aaaaaa
tab-border: #cccccc
modal-footer-border: <<colour tab-border>>
modal-header-border: <<colour tab-border>>
notification-border: <<colour tab-border>>
sidebar-tab-border: <<colour tab-border>>
tab-border-selected: <<colour tab-border>>
sidebar-tab-border-selected: <<colour tab-border-selected>>
tab-divider: #d8d8d8
sidebar-tab-divider: <<colour tab-divider>>
table-border: #dddddd
table-footer-background: #a8a8a8
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-border: #dddddd
tiddler-subtitle-foreground: #c0c0c0
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
base03: #002b36
base02: #073642
base01: #586e75
base00: #657b83
base0: #839496
base1: #93a1a1
base2: #eee8d5
base3: #fdf6e3
yellow: #b58900
orange: #cb4b16
red: #dc322f
magenta: #d33682
violet: #6c71c4
blue: #268bd2
cyan: #2aa198
green: #859900
base10: #c0c4bb
violet-muted: #7c81b0
blue-muted: #4e7baa
yellow-hot: #ffcc44
orange-hot: #eb6d20
red-hot: #ff2222
blue-hot: #2298ee
green-hot: #98ee22
background: #fdf6e3
download-foreground: <<colour background>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
modal-background: <<colour background>>
sidebar-foreground-shadow: <<colour background>>
tiddler-background: #e8e2fc
tiddler-border: <<colour background>>
tiddler-link-background: <<colour background>>
tab-background-selected: <<colour background>>
dropdown-tab-background-selected: <<colour tab-background-selected>>
foreground: #657b83
dragger-background: <<colour foreground>>
tab-foreground: <<colour foreground>>
tab-foreground-selected: <<colour tab-foreground>>
sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground: <<colour foreground>>
sidebar-foreground: <<colour foreground>>
alert-muted-foreground: <<colour base01>>
code-foreground: <<colour base00>>
message-foreground: <<colour base00>>
tag-foreground: <<colour base00>>
sidebar-tiddler-link-foreground: <<colour base0>>
muted-foreground: <<colour base1>>
blockquote-bar: <<colour muted-foreground>>
dropdown-border: <<colour muted-foreground>>
sidebar-muted-foreground: <<colour muted-foreground>>
tiddler-title-foreground: <<colour muted-foreground>>
site-title-foreground: <<colour tiddler-title-foreground>>
modal-footer-background: <<colour base2>>
page-background: <<colour base2>>
modal-backdrop: <<colour page-background>>
notification-background: <<colour page-background>>
code-background: <<colour page-background>>
code-border: <<colour code-background>>
pre-background: <<colour page-background>>
pre-border: <<colour pre-background>>
sidebar-tab-background-selected: <<colour page-background>>
table-header-background: <<colour base2>>
tag-background: <<colour base2>>
tiddler-editor-background: <<colour base2>>
tiddler-info-background: <<colour base2>>
tiddler-info-tab-background: <<colour base2>>
tab-background: <<colour base2>>
dropdown-tab-background: <<colour tab-background>>
alert-background: <<colour base3>>
message-background: <<colour base3>>
alert-highlight: <<colour magenta>>
external-link-foreground: <<colour violet>>
tiddler-controls-foreground: <<colour base10>>
external-link-foreground-visited: <<colour violet-muted>>
primary: <<colour blue-muted>>
download-background: <<colour primary>>
tiddler-link-foreground: <<colour primary>>
alert-border: #b99e2f
dirty-indicator: #ff0000
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
message-border: #cfd6e6
modal-border: #999999
sidebar-controls-foreground-hover:
sidebar-muted-foreground-hover:
sidebar-tab-background: #ded8c5
sidebar-tiddler-link-foreground-hover:
static-alert-foreground: #aaaaaa
tab-border: #cccccc
modal-footer-border: <<colour tab-border>>
modal-header-border: <<colour tab-border>>
notification-border: <<colour tab-border>>
sidebar-tab-border: <<colour tab-border>>
tab-border-selected: <<colour tab-border>>
sidebar-tab-border-selected: <<colour tab-border-selected>>
tab-divider: #d8d8d8
sidebar-tab-divider: <<colour tab-divider>>
table-border: #dddddd
table-footer-background: #a8a8a8
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-border: #dddddd
tiddler-subtitle-foreground: #c0c0c0
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
{
"tiddlers": {
"$:/plugins/danielo515/ContextPlugin/widgets/context.js": {
"created": "20140418153435777",
"creator": "danielo",
"modified": "20140530231943517",
"modifier": "danielo",
"module-type": "widget",
"title": "$:/plugins/danielo515/ContextPlugin/widgets/context.js",
"type": "application/javascript",
"text": "/*\\\\\ntitle: $:/core/modules/widgets/danielo/context-widget.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar contextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\ncontextWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\ncontextWidget.prototype.render = function(parent,nextSibling) {\n // Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n \n if(this.term && this.term.length >= this.minTermLength){\n \n this.createRegexp();\n var matches = this.executeRegexp();\n\t if(matches.length > 0){ \n this.domNode = this.document.createElement(this.element);\n this.domNode.className=\"tw-context\";\n this.composeResults( matches ); //this appends to domNode \n \t// Insert element\n \tparent.insertBefore(this.domNode,nextSibling);\n \tthis.renderChildren(this.domNode,null);\n\t \tthis.domNodes.push(this.domNode);\n }\n }\n\t\n};\n\n/*\nCompute the internal state of the widget\n*/\ncontextWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n this.matchedClass = this.getAttribute(\"matchClass\",\"matched\");\n this.minTermLength = this.getAttribute(\"min-term-length\", 3);\n\tthis.tiddler = this.getAttribute( \"tiddler\",this.getVariable(\"currentTiddler\") );\n this.term = this.getAttribute(\"term\",this.getAttribute(\"searchTerm\"));\n\tthis.contextLength = this.getAttribute(\"length\",50);\n this.before = this.getAttribute(\"before\",this.contextLength);\n this.after = this.getAttribute(\"after\",this.contextLength);\n this.maxMatches = this.getAttribute(\"maxMatches\",10);\n this.element = this.getAttribute(\"element\",\"pre\");\n\tthis.makeChildWidgets();\n};\n\n /*Create the regular expression*/\ncontextWidget.prototype.createRegexp = function()\n{\n var regString = \"(\\\\w+[\\\\s\\\\S]{0,#before#})?(#term#)([\\\\s\\\\S]{0,#after#}\\\\w+)?\";\n\n var regString = regString.replace(\"#before#\",this.before).replace(\"#term#\", $tw.utils.escapeRegExp(this.term) ) .replace(\"#after#\",this.after);\n this.regexp = new RegExp(regString,\"ig\");\n //console.log(regString);\n};\n/*\nexecute the regular expresion\n*/\ncontextWidget.prototype.executeRegexp = function()\n{\n var text = this.wiki.getTiddlerText(this.tiddler), match,results = new Array();\n while( (match = this.regexp.exec( text ) ) && (results.length < this.maxMatches) )\n { results.push(match) }\n //console.log(\"matches\",results);\n return results;\n};\n\n/*\ncompose the results\nmatches : array of match objects from regular expression execute\n*/\ncontextWidget.prototype.composeResults = function(matches){\n var result=[], self=this, node = this.domNode,\n dots = textNode(\"...\\n\"),\n span = matchedNode( this.term );\n\n for(var i=0; i < matches.length; i++){\n processMatch( matches[i] );\n }\n \n function processMatch(match){\n if( match.index !== 0) node.appendChild( dots.cloneNode(true) );\n for( var i=1;i<match.length;i++ ) {//match[0] full matched text (all groups together)\n if( match[i] ) {\n if ( match[i].toLowerCase() == self.term.toLowerCase() ) \n node.appendChild( match[i] == self.term ? span.cloneNode(true) : matchedNode( match[i] ) )\n else\n node.appendChild( textNode( match[i]) )\n }\n }\n if( match.index + match[0].length < match.input.length) node.appendChild( dots.cloneNode(true) );\n }\n \n function textNode(text){ return self.document.createTextNode(text) }\n function matchedNode(text) { \n var node = self.document.createElement(\"span\"); node.appendChild( textNode(text) ); node.className = self.matchedClass;\n return node }\n \n};\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\ncontextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.term || changedAttributes.length || changedAttributes.matchedClass) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n return this.refreshChildren(changedTiddlers);\n};\n\nexports.context = contextWidget;\n\n})();\n"
},
"$:/plugins/danielo515/ContextPlugin/visualizer": {
"title": "$:/plugins/danielo515/ContextPlugin/visualizer",
"tags": "$:/tags/SearchResults",
"caption": "Context",
"text": "<$list filter=\"[!is[system]search{$:/temp/search}sort[title]limit[250]]\">\n {{!!title||$:/core/ui/ListItemTemplate}}\n <$context term={{$:/temp/search}} />\n</$list>\n"
},
"$:/plugins/danielo515/ContextPlugin/Stylesheet/results": {
"created": "20140529162823729",
"tags": "$:/tags/Stylesheet contextPlugin",
"title": "$:/plugins/danielo515/ContextPlugin/Stylesheet/results",
"type": "text/css",
"text": ".matched{background-color:yellow}\n.tw-context {/*border:1px solid;\n /*word-break: break-all; word-wrap: break-word*/}"
},
"$:/plugins/danielo515/ContextPlugin/Caption": {
"created": "20140530174219263",
"tags": "contextPlugin",
"title": "$:/plugins/danielo515/ContextPlugin/Caption",
"type": "text/vnd.tiddlywiki",
"text": "Context search"
},
"Context Search": {
"caption": "{{$:/plugins/danielo515/ContextPlugin/Caption}}",
"created": "20140530173407542",
"tags": "$:/tags/AdvancedSearch",
"title": "Context Search",
"type": "text/vnd.tiddlywiki",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tw-search\"><$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/><$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\"> <$link to=\"\" class=\"btn-invisible\">{{$:/core/images/close-button}}</$link></$reveal></div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<div class=\"tw-search-results\">\n\n<<lingo Standard/Matches>>\n\n<$list filter=\"[!is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]\">\n{{!!title||$:/core/ui/ListItemTemplate}}\n<$context term={{$:/temp/advancedsearch}}/>\n</$list>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/plugins/danielo515/ContextPlugin/readme": {
"title": "$:/plugins/danielo515/ContextPlugin/readme",
"text": "!Usage\n\nAfter installing the plugin you will have a new tab in [[$:/AdvancedSearch]] called [[Context Search]]. If you want this functionality in other places you will have to edit the desired tiddler yourself adding the ''context widget''. For more details about using the widget see the section below.\n\n!!Using the widget\n\nThe very basic usage of the widget is the following:\n\n```\n<$context term=\"lorem\"/>\n```\nWhich will render as:\n<$context term=\"lorem\"/>\n\nThe widgets will search inside the current tiddler by default. Because that you see the same content twice here. This example is not very useful. Other more meaningful would be:\n\n```\n<$list filter=\"[search{$:/temp/advancedsearch}sort[title]limit[250]]\">\n{{!!title||$:/core/ui/ListItemTemplate}}\n<$context term={{$:/temp/advancedsearch}}/>\n</$list>\n```\n\nThat will search for tiddlers containing the text specified in [[$:/temp/advancedsearch]] and will display a link to the matching tiddlers plus a preview of the matching content. Something very similar is used in [[Context Search]]. Below you can find a complete list of parameters and their default values.\n\n|! parameter |! description | !default |\n| term | The term you want to search ||\n| searchTerm | An alias for the previous one ||\n| tiddler | The tiddler's name to look into | current tiddler |\n| length | Number of context characters to show | 50 |\n| before | Number of characters before the matched term to show | the value of the length parameter |\n| after | Number of characters after the matched term to show | the value of the length parameter |\n| maxMatches | maximun number of matched elements to show. Incrementing this can cause several performance issues | 10 |\n| element | Node element to create. This element will contain the results of the search. If you want to style it its class is `tw-context` | `<pre>` |\n| matchClass | The css class to assign to the matched terms in the results. This is used to highlight the results | matched |\n\n!Customizing the output\nThere are not many ways to customize the output of this widget. You can specify ''what type of node you want to create'' to wrap the results (div,span...). The default is `<pre>`. This container is created with the class `tw-context` so you can easily apply styles to it. Something similar happens to the ''highlighted'' words. You can specify the name of the class to assign to it and also you can apply styles to that class.\n\nA very basic example of customization could be:\n\n# Create a tiddler, for example [[$/plugins/danielo515/context/css]]\n# Paste the following text or any css rule you want: \"\"\"\n\n<pre>\n.matched{background-color:yellow}\n.tw-context {\n border:1px solid blue;\n word-break: break-all; word-wrap: break-word;}\n</pre>\n\"\"\"\n# Tag it with `$:/tags/stylesheet`\n# Save the tiddler"
}
}
}
{
"tiddlers": {
"$:/plugins/ebalster/formula/compile.js": {
"text": "(function(){\n\n\"use strict\";\n\nvar Values = require(\"$:/plugins/ebalster/formula/value.js\");\nvar Operands = require(\"$:/plugins/ebalster/formula/operands.js\");\nvar Operators = require(\"$:/plugins/ebalster/formula/operators.js\");\n\nvar rxDatumIsFormula = /^\\s*\\(=.*=\\)\\s*$/;\nvar rxDatumIsTrue = /^s*TRUE\\s*$/i;\nvar rxDatumIsFalse = /^s*FALSE\\s*$/i;\n\nvar rxSkipWhitespace = /\\s*/g;\nvar rxNotWhitespace = /[^\\s]+/g;\nvar rxOperandFilter = /\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]/g;\nvar rxOperandTransclusion = /\\{\\{[^\\{\\}]+\\}\\}/g;\nvar rxDatumIsTransclusion = /^\\s*\\{\\{[^\\{\\}]+\\}\\}\\s*$/;\nvar rxOperandVariable = /<<[^<>]+>>/g;\nvar rxDatumIsVariable = /^\\s*<<[^<>]+>>\\s*$/;\nvar rxCellName = /[a-zA-Z]{1,2}[0-9]+/g;\nvar rxIdentifier = /[_a-zA-Z][_a-zA-Z0-9]*/g;\n\nvar rxUnsignedDecimal = /((\\d+(\\.\\d*)?)|(\\.\\d+))/g\nvar rxDecimal = /[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))/g\nvar rxDatumIsDecimal = /^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/;\n\nvar rxDate = /\\d{2,4}-\\d{2}-\\d{2}(\\s*\\d{1,2}:\\d{2}(:\\d{2}(.\\d+)?)?)?/g;\nvar rxDatumIsDate = /^\\s*\\d{2,4}-\\d{2}-\\d{2}(\\s*\\d{1,2}:\\d{2}(:\\d{2}(.\\d{3})?)?)?\\s*$/;\nvar rxDateFragment = /\\d+/g;\n\nvar rxString = /(\"(\\\\.|[^\"\\\\])*\"|'(\\\\.|[^'\\\\])*')/g\n\nvar formulaFunctions = null;\nvar operatorsUnaryPre = null;\nvar operatorsUnaryPost = null;\nvar operatorsBinary = null;\nvar operatorsTernary = null;\n\nfunction Parser(src)\n{\n this.src = src;\n this.pos = 0;\n this.end = src.length;\n}\nParser.prototype.getChar = function()\n{\n return this.src.charAt(this.pos);\n}\nParser.prototype.remaining = function()\n{\n return this.src.substring(this.pos, this.end);\n}\nParser.prototype.nextToken = function()\n{\n rxNotWhitespace.lastIndex = this.pos;\n rxNotWhitespace.test(this.src);\n return this.src.substring(this.pos, rxNotWhitespace.lastIndex);\n}\nParser.prototype.match_here = function(regex)\n{\n // TODO this is doing much more work than is necessary\n regex.lastIndex = this.pos;\n var result = regex.exec(this.src);\n if (!result || result.index != this.pos || result.index+result[0].length > this.end) return null;\n this.pos = regex.lastIndex;\n return result;\n}\nParser.prototype.skipWhitespace = function()\n{\n rxSkipWhitespace.lastIndex = this.pos;\n rxSkipWhitespace.test(this.src);\n this.pos = Math.min(rxSkipWhitespace.lastIndex, this.end);\n}\n\nvar initialize = function() {\n formulaFunctions = {};\n var operators = {}\n $tw.modules.applyMethods(\"formula-function\", formulaFunctions);\n $tw.modules.applyMethods(\"formula-operator\", operators);\n\n operatorsUnaryPre = {};\n operatorsUnaryPost = {};\n operatorsBinary = {}; //{}; //{plus: {arity: 2, precedence: 10, operator: \"+\", function: \"add\"}};\n operatorsTernary = {};\n for (var opName in operators)\n {\n var op = operators[opName];\n\n // Bind the associated function. \n var func = formulaFunctions[op.function];\n if (!func) continue;\n op.func_bind = func;\n\n // Sort the op by arity and position.\n switch (op.arity)\n {\n case 2: operatorsBinary [opName] = op; break;\n case 3: operatorsTernary [opName] = op; break;\n case 1:\n switch (op.position)\n {\n case \"pre\": operatorsUnaryPre [opName] = op; break;\n case \"post\": operatorsUnaryPost[opName] = op; break;\n }\n break;\n }\n }\n}\n\n\nexports.compileExpression = function(expression) {\n\n // Create a parser and process the formula as an expression.\n var parser = new Parser(expression);\n\n var operand = buildExpression(parser);\n\n return operand;\n};\n\nexports.compileDatum = function(datum) {\n\n // Short-hand formula\n if (datum.charAt(0) == \"=\") {\n var parser = new Parser(datum);\n parser.pos = 1;\n return buildExpression(parser);\n }\n\n // Could be a number?\n if (rxDatumIsDecimal.test(datum)) {\n // Treat as a number constant\n return new Operands.Opd_Number(Number(datum));\n }\n\n // Could be a formula?\n if (rxDatumIsFormula.test(datum)) {\n // Parse contents as a formula\n var parser = new Parser(datum);\n parser.pos = datum.indexOf(\"=\")+1;\n parser.end = datum.lastIndexOf(\"=\");\n return buildExpression(parser);\n }\n\n // Could be a transclusion or variable?\n if (rxDatumIsTransclusion.test(datum) ||\n rxDatumIsVariable.test(datum)) {\n // Defer to the operand parser...\n var parser = new Parser(datum);\n return buildOperand(parser);\n }\n\n // Booleans?\n if (rxDatumIsFalse.test(datum)) return new Operands.Opd_Bool(false);\n if (rxDatumIsTrue .test(datum)) return new Operands.Opd_Bool(true);\n\n // Date?\n if (rxDatumIsDate.test(datum))\n {\n rxDateFragment.lastIndex = 0;\n var parts = [];\n while (true)\n {\n var res = rxDateFragment.exec(datum);\n if (!res) break;\n parts.push(parseInt(res[0]));\n }\n if (parts.length)\n {\n return new Operands.Opd_Date(new Date(\n parts[0], parts[1] || 0, parts[2] || 1,\n parts[3] || 0, parts[4] || 0, parts[5] || 0, parts[6] || 0));\n }\n }\n\n // Otherwise, treat as a string constant\n return new Operands.Opd_Text(datum);\n};\n\nexports.compileFormula = function(formulaString)\n{\n // Process the formula string into a root operand\n try\n {\n return exports.compileExpression(formulaString);\n }\n catch (err) {return new Operands.Opd_Text(\"`FormulaError: \" + err + \"`\");}\n}\n\nvar numberFormatFixed = function(vFixed) {return function(num) {return num.toFixed (vFixed);}}\nvar numberFormatPrecision = function(vPrecision) {return function(num) {return num.toPrecision(vPrecision);}}\nvar numberFormatSelect = function(settings)\n{\n if (!isNaN(settings.fixed)) return numberFormatFixed (settings.fixed);\n if (!isNaN(settings.precision)) return numberFormatPrecision(settings.precision);\n return String;\n}\n\nexports.computeFormula = function(compiledFormula, widget, formatOptions=null, debug=false) {\n \n var value;\n\n Values.NumberFormatFunc = numberFormatSelect(formatOptions);\n Values.DateFormat = formatOptions.dateFormat || \"0hh:0mm, DDth MMM YYYY\";\n\n // Compute a value from the root operand of the compiled formula.\n try\n {\n value = compiledFormula.compute(widget, 0);\n }\n catch (err) {return \"`ComputeError: \" + String(err) + \"\\noperand: \" + String(compiledFormula) + \"`\";}\n\n // Format the root operand as a string.\n try\n {\n if (debug) return value.asString() + \"\\n - Val:\" + String(value) + \", Op:\" + compiledFormula.name;\n else return value.asString();\n }\n catch (err) {return \"`ValueError: \" + String(err) + \"\\nvalue: \" + String(value) + \"`\";}\n};\n\nexports.evalFormula = function(formulaString, widget, formatOptions=null, debug=false) {\n \n var compiledFormula;\n\n // Compile the formula\n try\n {\n var compiledFormula = exports.compileExpression(formulaString);\n }\n catch (err) {return \"`FormulaError: \" + String(err) + \"`\";}\n\n // Compute the formula\n return exports.computeFormula(compiledFormula, widget, formatOptions, debug);\n};\n\n\n\n// Compile an operator\nfunction parseOperator(parser, operatorGroup) {\n\n // Skip more whitespace\n parser.skipWhitespace();\n\n var result = null;\n\n // Find the longest operator matching the current text.\n for (var opName in operatorGroup)\n {\n var op = operatorGroup[opName];\n if (parser.src.substr(parser.pos, op.operator.length) == op.operator\n && parser.pos+op.operator.length <= parser.end)\n {\n if (!result || result.operator.length < op.operator.length) result = op;\n }\n }\n\n if (result) parser.pos += result.operator.length;\n\n return result;\n}\n\n// Parse a formula.\nfunction buildExpression(parser, nested = false) {\n \n // Make sure math functions are initialized\n if (!formulaFunctions) initialize();\n\n parser.skipWhitespace();\n\n var operands = [];\n var operators = [];\n var precedences = [];\n\n while (true)\n {\n var unaries = [];\n\n // Prefix operators\n while (true)\n {\n var prefix = parseOperator(parser, operatorsUnaryPre);\n if (prefix) unaries.unshift(prefix);\n else break;\n }\n\n // Grab the operand\n var operand = buildOperand(parser);\n\n // Missing operand is an error\n if (operand === null)\n {\n var token = parser.nextToken();\n if (token && token[0] != \")\" && token[0] != \",\")\n throw \"invalid operand\\\"\" + token + \"\\\"\";\n else if (operators.length)\n throw \"missing operand after \\\"\" + operators[operators.length-1].operator + \"\\\"\";\n else throw \"empty expression\";\n }\n\n // Postfix operators\n while (true)\n {\n var postfix = parseOperator(parser, operatorsUnaryPost);\n if (postfix) unaries.push(postfix);\n else break;\n }\n\n unaries.forEach(function(unary) {\n operand = new Operators.CallOperator(unary.func_bind, [operand]);\n });\n\n operands.push(operand);\n\n // Infix operators\n var operator = parseOperator(parser, operatorsBinary);\n\n // Missing operator ends the expression\n if (operator === null) break;\n\n // Add the operator and its precedence level.\n operators.push(operator);\n var precedence = operator.precedence;\n if (precedences.indexOf(precedence || 0) == -1) precedences.push(precedence);\n }\n\n // Sanity check\n if (operands.length != operators.length+1)\n throw \"internal error: operator/operand parsing inconsistency\";\n\n // Resolve operators by precedence\n precedences.sort(function(a,b) {return (a>b)?-1:1;});\n\n for (var j = 0; j < precedences.length; ++j)\n {\n var prec = precedences[j];\n for (var i = 0; i < operators.length; )\n {\n // Process only operators at the current precedence level.\n var op = operators[i];\n if (op.precedence != prec) {++i; continue;}\n\n // Collapse the previous and next operands with this operator.\n operands[i] = new Operators.CallOperator(op.func_bind, [operands[i], operands[i+1]]);\n operators.splice(i, 1);\n operands.splice(i+1, 1);\n }\n }\n\n // Sanity check\n if (operators.length != 0 || operands.length != 1)\n throw \"internal error: resoving failed; \" + operands.length + \" operands and \" + operators.length + \" operators remain\";\n\n // For non-nested expressions, throw if any tokens remain.\n if (!nested)\n {\n parser.skipWhitespace();\n\n if (parser.pos < parser.end)\n {\n throw \"expected operator, got \\\"\" + parser.nextToken() + \"\\\"\";\n }\n }\n\n return operands[0];\n};\n\n// Compile a function argument list. Error if the next \nfunction buildArguments(parser) {\n\n // Skip whitespace\n parser.skipWhitespace();\n\n // Argument list present?\n if (parser.getChar() != \"(\") return null;\n ++parser.pos;\n\n // Zero arguments?\n parser.skipWhitespace();\n if (parser.getChar() == \")\") return [];\n \n var results = [];\n\n while (true)\n {\n // Compile an expression.\n results.push(buildExpression(parser, true));\n\n // Skip more whitespace\n parser.skipWhitespace();\n\n // Expect ) or , after argument.\n var char = parser.getChar();\n ++parser.pos;\n if (char == \")\") break;\n if (char != \",\") throw \"Expect ',' or ')' after function argument\";\n }\n\n return results;\n};\n\n// Compile an operand into a function returning the operand value.\nfunction buildOperand(parser) {\n\n var term;\n \n // Skip whitespace\n parser.skipWhitespace();\n\n if (parser.pos == parser.end) return null;\n\n var char = parser.getChar();\n\n if (char.match(/[0-9\\.+=]/i))\n {\n // Number constant\n term = parser.match_here(rxDecimal);\n if (term) return new Operands.Opd_Number(Number(term[0]));\n throw \"Invalid number: \" + parser.nextToken();\n }\n else if (char.match(/[a-z]/i))\n {\n // Cell name?\n term = parser.match_here(rxCellName);\n if (term) return new Operands.Opd_Transclude(\"##\" + term[0]);\n\n // Function call?\n term = parser.match_here(rxIdentifier);\n\n if (term)\n {\n var func = formulaFunctions[term[0].toLowerCase()];\n\n if (!func) throw \"unknown function: \" + term[0];\n\n var args = buildArguments(parser);\n\n // Omitting arguments is only OK for zero-parameter functions.\n if (args == null)\n {\n if (func.min_args || func.length) throw \"Expected '(' after \" + term[0];\n args = [];\n }\n\n if (func instanceof Function)\n {\n // Check parameter count\n if (args.length > func.length && !func.variadic)\n throw \"too many arguments for \" + term[0] + \" (max \" + func.length + \")\";\n if (args.length < func.length)\n throw \"too few arguments for \" + term[0] + \" (min \" + func.length + \")\";\n }\n else\n {\n // Use a \"select\" function\n if (func.max_args && args.length > func.max_args)\n throw \"too many arguments for \" + term[0] + \" (max \" + func.max_args + \")\";\n if (func.min_args && args.length < func.min_args)\n throw \"too few arguments for \" + term[0] + \" (min \" + func.min_args + \")\";\n func = func.select(args);\n }\n\n return new Operators.CallOperator(func, args);\n }\n }\n else switch (char)\n {\n case \"(\": // Parenthesized expression\n ++parser.pos;\n var parentheses = buildExpression(parser, true);\n parser.skipWhitespace();\n if (parser.getChar() != \")\")\n {\n if (parser.pos == parser.end) throw \"missing ')' at end of formula\";\n else throw \"expected ')', got \\\"\" + parser.nextToken() + \"\\\"\";\n }\n ++parser.pos;\n return parentheses;\n break;\n\n case \"'\":\n case \"\\\"\": // String constant\n term = parser.match_here(rxString);\n if (term) return new Operands.Opd_Text(term[0].substr(1, term[0].length-2));\n throw \"Invalid string: \" + parser.nextToken();\n break;\n\n case \"[\": // Filter operand\n term = parser.match_here(rxOperandFilter);\n if (term) return new Operands.Opd_Filter(term[0]);\n break;\n\n case \"{\": // Transclusion operand\n term = parser.match_here(rxOperandTransclusion);\n if (term) return new Operands.Opd_Transclude(term[0].substring(2, term[0].length-2));\n break;\n\n case \"<\": // Variable operand\n term = parser.match_here(rxOperandVariable);\n if (term) return new Operands.Opd_Variable(term[0].substring(2, term[0].length-2));\n break;\n }\n\n // Didn't recognize the operand\n return null;\n};\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/compile.js",
"tags": "",
"module-type": "library",
"modified": "20171211181652443",
"description": "",
"created": "20171210195223539"
},
"$:/plugins/ebalster/formula/functions/arithmetic.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Val = require(\"$:/plugins/ebalster/formula/value.js\");\n\n\n// Unary sign operators\nexports.uplus = function(a) {return new a;};\nexports.uminus = function(a) {return new Val.V_Num(-a.asNum());};\n\n// Add\nexports.add = function(a, b) {return new Val.V_Num(a.asSum() + b.asSum());};\nexports.sub = function(a, b) {return new Val.V_Num(a.asSum() - b.asSum());};\n\n// Multiply\nexports.mul = function(a, b) {return new Val.V_Num(a.asNum() * b.asNum());};\nexports.div = function(a, b) {return new Val.V_Num(a.asNum() / b.asNum());};\n\n// Percent -- TODO make this a different value-type\nexports.percent = function(a, b) {return new Val.V_Percent(a.asNum() / 100);};\n\n\n// Aliases\nexports.subtract = exports.sub;\nexports.minus = exports.sub;\nexports.multiply = exports.mul;\nexports.divide = exports.div;\nexports.quotient = exports.div;\nexports.power = exports.pow;\n\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/functions/arithmetic.js",
"tags": "",
"module-type": "formula-function",
"modified": "20171212223526867",
"created": "20171211192843088"
},
"$:/plugins/ebalster/formula/functions/compare.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Val = require(\"$:/plugins/ebalster/formula/value.js\");\n\n\n// Equality\nexports.eq = function(a, b) {return new Val.V_Bool(a.get() == b.get());};\nexports.ne = function(a, b) {return new Val.V_Bool(a.get() != b.get());};\n\n// Inequality\nexports.gt = function(a, b) {return new Val.V_Bool(a.get() > b.get());};\nexports.gte = function(a, b) {return new Val.V_Bool(a.get() >= b.get());};\nexports.lt = function(a, b) {return new Val.V_Bool(a.get() < b.get());};\nexports.lte = function(a, b) {return new Val.V_Bool(a.get() <= b.get());};\n\n\n// Aliases\nexports.equal = exports.eq;\nexports.not_equal = exports.ne;\nexports.greater = exports.gt;\nexports.greater_or_equal = exports.gte;\nexports.less = exports.lt;\nexports.less_or_equal = exports.lte;\n\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/functions/compare.js",
"tags": "",
"module-type": "formula-function",
"modified": "20171214050803365",
"created": "20171214050022626"
},
"$:/plugins/ebalster/formula/functions/datetime.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Val = require(\"$:/plugins/ebalster/formula/value.js\");\n\nvar V_Date = Val.V_Date;\nvar V_Num = Val.V_Num;\n\n\n/*!\n * iso-week <https://github.com/jonschlinkert/iso-week>\n *\n * Copyright (c) 2014 Jon Schlinkert, contributors.\n * Licensed under the MIT license.\n * \n * THIS FUNCTION APPEARS TO BE BUGGY\n */\nfunction isoWeekOfYear(date, firstday=4) {\n date = date instanceof Date ? date : new Date();\n var res = new Date(date.valueOf());\n var day = (date.getDay() + 6) % 7;\n res.setDate(res.getDate() - day + 3);\n var first = new Date(res.getFullYear(), 0, firstday);\n var days = Math.floor((res - first) / 86400000);\n return 1 + Math.ceil(days / 7);\n};\nfunction isLeapYear(year) {\n return year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);\n}\nfunction daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\n\n// Get the current time\nexports.now = function() {return new V_Date(new Date(Date.now()));}\n\n// Decompose dates\nexports.year = function(d) {return new V_Num(d.asDate().getFullYear());}\nexports.month = function(d) {return new V_Num(d.asDate().getMonth());}\nexports.day = function(d) {return new V_Num(d.asDate().getDate());}\nexports.hour = function(d) {return new V_Num(d.asDate().getHours());}\nexports.minute = function(d) {return new V_Num(d.asDate().getMinutes());}\nexports.second = function(d) {return new V_Num(d.asDate().getSeconds());}\nexports.millisecond = function(d) {return new V_Num(d.asDate().getMilliseconds());}\n\n// Week functions\nexports.weekday = function(d) {return new V_Num(d.asDate().getDay()+1);}\nexports.weeknum = function(d) {return new V_Num(isoWeekOfYear(d.asDate(), 1));}\nexports.isoweekday = function(d) {return new V_Num((d.asDate().getDay()+6) % 7 + 1);}\nexports.isoweeknum = function(d) {return new V_Num(isoWeekOfYear(d.asDate()));}\n\n\n/*\n Date math\n*/\nfunction makeTimeDiffFunction(milliseconds) {\n return function(a, b) {return new V_Num((b.asDate().getTime() - a.asDate().getTime()) / milliseconds);}\n}\nfunction makeTimeAddFunction(milliseconds) {\n return function(a, b) {return new V_Date(new Date(a.asDate().getTime() + b.asNum() * milliseconds));}\n}\n\nexports.days = makeTimeDiffFunction(86400000);\nexports.hours = makeTimeDiffFunction( 3600000);\nexports.minutes = makeTimeDiffFunction( 60000);\nexports.seconds = makeTimeDiffFunction( 1000);\nexports.milliseconds = makeTimeDiffFunction( 1);\n\nexports.add_days = makeTimeAddFunction(86400000);\nexports.add_hours = makeTimeAddFunction( 3600000);\nexports.add_minutes = makeTimeAddFunction( 60000);\nexports.add_seconds = makeTimeAddFunction( 1000);\nexports.add_milliseconds = makeTimeAddFunction( 1);\n\n/*function datedif_util(a, days) {\n var years = 0, months = 0, reverse = (days < 0);\n var accum = 0, baseYear = a.getFullYear(), baseMonth = a.getMonth();\n if (reverse)\n {\n while (accum > days)\n {\n\n }\n }\n}\n\nexports.datedif = function(a, b, c) {\n a = a.asDate();\n b = b.asDate();\n var days = (b.getTime() - a.getTime()) / 86400000;\n var months = 0, years = 0;\n var years = days / 365;\n switch (c.asString().toUpperCase())\n {\n case \"D\": return days;\n case \"M\": return \n case \"Y\": return years;\n }\n};*/\n\n\n// Parse TiddlyWiki date\nexports.tw_date = function(timestamp) {\n var date = $tw.utils.parseDate(timestamp.asString());\n if (!date) throw \"Bad timestamp: \\\"\" + date + \"\\\"\";\n return new V_Date(date);\n}\n\n// Stringify as TiddlyWiki date\nexports.to_tw_date = function(date) {\n return $tw.utils.stringifyDate(date.asDate());\n}\n\n// Create ISO date\nexports.make_date = function(year, month, day) {\n return new V_Date(new Date(year.asNum(), month.asNum()-1, day.asNum()));\n}\n\n// Create ISO time\nexports.make_time = function(hour, minute, second) {\n return new V_Date(new Date(0, 0, 0, hour.asNum(), minute.asNum(), second.asNum()));\n}\n\nexports.time = exports.make_time;\n\n\n// Consruct a date from a TiddlyWiki timestamp or a set of parts\nexports.date = {\n min_args: 1, max_args: 3,\n select: function(operands) {\n switch (operands.length) {\n case 1: return exports.tw_date;\n case 3: return exports.make_date;\n default: throw \"Bad arguments to DATE. Should be (timestamp) or (year, month, day).\";\n }\n }\n};\n\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/functions/datetime.js",
"tags": "",
"module-type": "formula-function",
"modified": "20171217192149101",
"created": "20171217192129179"
},
"$:/plugins/ebalster/formula/functions/logic.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Val = require(\"$:/plugins/ebalster/formula/value.js\");\n\n\n// Constants\nexports.true = function() {return new Val.V_Bool(true);};\nexports.false = function() {return new Val.V_Bool(false);};\n\n// Logical operators\nexports.not = function(a) {return new Val.V_Bool(!a.get());};\nexports.and = function(a, b) {return new Val.V_Bool(a.get() && b.get());};\nexports.or = function(a, b) {return new Val.V_Bool(a.get() || b.get());};\nexports.xor = function(a, b) {return new Val.V_Bool(a.get() ? !b.get() : !!b.get());};\n\n// Ternary\nexports.if = function(p, a, b) {return p.get() ? a.get() : b.get();};\n\n\n// IFERROR\nexports.iferror = function(a, b) {try {return a.get();} catch (err) {return b.get();}};\n\n\n// SWITCH (variadic)\nexports.switch =\n{\n min_args: 3,\n select: function(operands)\n {\n switch (operands.length % 2)\n {\n default:\n case 0: return function(a) // Switch with default\n {\n var value = a.get();\n for (var i = 1; i+1 < arguments.length; i += 2)\n {if (arguments[i].get() == value) return arguments[i+1];}\n return arguments[arguments.length-1];\n }\n case 1: return function(a) // Switch, no default\n {\n var value = a.get();\n for (var i = 1; i+1 < arguments.length; i += 2)\n {if (arguments[i].get() == value) return arguments[i+1];}\n return new Val.V_Undefined();\n }\n }\n }\n};\n\n// CHOOSE (variadic)\nexports.choose = function(a, b)\n{\n var index = Math.floor(a.asNum());\n var result = arguments[index];\n if (index < 1 || !result) return new Val.V_Undefined();\n return result;\n};\nexports.choose.variadic = true;\n\n// IFS function (variadic)\nexports.ifs =\n{\n min_args : 2,\n select : function(operands)\n {\n if (operands.length % 2 != 0)\n throw \"Odd number of arguments to IFS\";\n\n return function()\n {\n for (var i = 0; i < arguments.length; i += 2)\n {if (arguments[i].get()) return arguments[i+1];}\n return new Val.V_Undefined();\n };\n }\n};\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/functions/logic.js",
"tags": "",
"module-type": "formula-function",
"modified": "20171214060456114",
"created": "20171214054240274"
},
"$:/plugins/ebalster/formula/functions/math.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Val = require(\"$:/plugins/ebalster/formula/value.js\");\n\nvar V_Num = Val.V_Num;\n\n\n// Constants\nexports.pi = function() {return new V_Num(Math.PI);}\nexports._e = function() {return new V_Num(Math.E);}\n\n\n// Random\nexports.rand = function() {return new V_Num(Math.random());}\nexports.randbetween = function(a, b) {a=a.asNum(); b=b.asNum(); return new V_Num(a+(b-a)*Math.random());}\nexports.random = exports.rand;\n\n\n// Sign and absolute value\nexports.abs = function(a) {return new V_Num(Math.abs(a.asNum()));}\nexports.sign = function(a) {var x = a.asNum(); return new V_Num(((x > 0) - (x < 0)) || +x);}\n\n// Min/max\nexports.min = function(a)\n{\n var min = a.asNum();\n for (var i = 1; i < arguments.length; ++i) min = Math.min(min, arguments[i].asNum());\n return new V_Num(min);\n}\nexports.min.variadic = true;\n\nexports.max = function(a)\n{\n var max = a.asNum();\n for (var i = 1; i < arguments.length; ++i) max = Math.max(max, arguments[i].asNum());\n return new V_Num(max);\n}\nexports.max.variadic = true;\n\n\n/*\n Series arithmetic\n*/\nexports.sum =\n{\n min_args : 1,\n select : function(operands)\n {\n switch (operands)\n {\n case 1: return function(a) {return new Val.V_Num(a.asSum());};\n default: return function()\n {\n var sum = 0;\n for (var i = 0; i < arguments.length; ++i) sum += arguments[i].asSum();\n return new V_Num(sum);\n }\n }\n }\n};\nexports.product = function()\n{\n var product = 1;\n for (var i = 0; i < arguments.length; ++i) product *= arguments[i].asNum();\n return new V_Num(product);\n};\nexports.product.variadic = true;\n\n\n/*\n Exponential\n*/\n\n// Exponentiation and logarithm\nexports.pow = function(a, b) {return new V_Num(Math.pow(a.asNum(), b.asNum()));};\nexports.exp = function(a) {return new V_Num(Math.exp(a.asNum()));}\nexports.log = function(a, b) {return new V_Num(Math.log(a.asNum()) / Math.log(b.asNum()));}\nexports.ln = function(a) {return new V_Num(Math.log(a.asNum()));}\nexports.log2 = function(a) {return new V_Num(Math.log2(a.asNum()));}\nexports.log10 = function(a) {return new V_Num(Math.log10(a.asNum()));}\n\nexports.power = exports.pow;\n\n// Precise exponentiation and logarithm\nexports.expm1 = function(a) {return new V_Num(Math.expm1(a.asNum()));}\nexports.log1p = function(a) {return new V_Num(Math.log1p(a.asNum()));}\n\n// Roots\nexports.sqrt = function(a) {return new V_Num(Math.sqrt(a.asNum()));}\nexports.cbrt = function(a) {return new V_Num(Math.cbrt(a.asNum()));}\n\n\n/*\n Trigonometry\n*/\n\n// Conversion\nexports.radians = function(a) {return new V_Num(Math.PI*a.asNum()/180);}\nexports.degrees = function(a) {return new V_Num(180*a.asNum()/Math.PI);}\n\n// Trigonometry\nexports.sin = function(a) {return new V_Num( Math.sin(a.asNum()));}\nexports.cos = function(a) {return new V_Num( Math.cos(a.asNum()));}\nexports.tan = function(a) {return new V_Num( Math.tan(a.asNum()));}\nexports.csc = function(a) {return new V_Num(1/Math.sin(a.asNum()));}\nexports.sec = function(a) {return new V_Num(1/Math.cos(a.asNum()));}\nexports.cot = function(a) {return new V_Num(1/Math.tan(a.asNum()));}\n\n// Inverse Trigonometry\nexports.asin = function(a) {return new V_Num(Math.asin( a.asNum()));}\nexports.acos = function(a) {return new V_Num(Math.acos( a.asNum()));}\nexports.atan = function(a) {return new V_Num(Math.atan( a.asNum()));}\nexports.acsc = function(a) {return new V_Num(Math.asin(1/a.asNum()));}\nexports.asec = function(a) {return new V_Num(Math.acos(1/a.asNum()));}\nexports.acot = function(a) {return new V_Num(Math.atan(1/a.asNum()));}\n\n// Hyperbolic Trigonometry\nexports.sinh = function(a) {return new V_Num( Math.sinh(a.asNum()));}\nexports.cosh = function(a) {return new V_Num( Math.cosh(a.asNum()));}\nexports.tanh = function(a) {return new V_Num( Math.tanh(a.asNum()));}\nexports.csch = function(a) {return new V_Num(1/Math.sinh(a.asNum()));}\nexports.sech = function(a) {return new V_Num(1/Math.cosh(a.asNum()));}\nexports.coth = function(a) {return new V_Num(1/Math.tanh(a.asNum()));}\n\n// Inverse Hyperbolic Trigonometry\nexports.asinh = function(a) {return new V_Num(Math.asinh( a.asNum()));}\nexports.acosh = function(a) {return new V_Num(Math.acosh( a.asNum()));}\nexports.atanh = function(a) {return new V_Num(Math.atanh( a.asNum()));}\nexports.acsch = function(a) {return new V_Num(Math.asinh(1/a.asNum()));}\nexports.asech = function(a) {return new V_Num(Math.acosh(1/a.asNum()));}\nexports.acoth = function(a) {return new V_Num(Math.atanh(1/a.asNum()));}\n\n/*\n Rounding, ceiling and floor functions.\n Special measures were taken to reproduce the conventions.\n*/\n\nvar signedFloor = Math.trunc || function(n) {return (n<0) ? Math.ceil (n) : Math.floor(n);}\nvar signedCeil = function(n) {return (n<0) ? Math.floor(n) : Math.ceil (n);}\n\nfunction genCeilFloor(operands, func)\n{\n switch (operands.length)\n {\n case 1: return function(a) {return new V_Num(func(a.asNum()));};\n case 2: return function(a, b) {var prec = b.asNum(); return new V_Num(func(a.asNum()/prec) * prec);};\n }\n}\n\nfunction genRound(operands, func)\n{\n var lndigit = Math.log(.1);\n switch (operands.length)\n {\n case 1: return function(a) {return new V_Num(func(a.asNum()));};\n case 2: return function(a, b) {var prec = Math.exp(lndigit*b.asNum()); return new V_Num(func(a.asNum()/prec) * prec);};\n }\n}\n\n\nexports.floor =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genCeilFloor(operands, Math.floor);}\n};\nexports.ceil =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genCeilFloor(operands, Math.ceil);}\n};\n/*exports.floor_precise =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genCeilFloor(operands, Math.floor);}\n};\nexports.ceil_precise =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genCeilFloor(operands, Math.ceil);}\n};*/\nexports.round =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genRound(operands, Math.round);}\n};\nexports.roundup =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genRound(operands, signedCeil);}\n};\nexports.rounddown =\n{\n min_args : 1, max_args : 2,\n select : function(operands) {return genRound(operands, signedFloor);}\n};\n\nexports.trunc = exports.rounddown;\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/functions/math.js",
"tags": "",
"module-type": "formula-function",
"modified": "20171214171708994",
"created": "20171214171454666"
},
"$:/plugins/ebalster/formula/functions/strings.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Val = require(\"$:/plugins/ebalster/formula/value.js\");\n\n\n// Concatenate\nexports.cat = function(a, b) {return new Val.V_Text(a.asString() + b.asString());};\n\n\n// Aliases\nexports.concatenate = exports.cat;\n\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/functions/strings.js",
"tags": "",
"module-type": "formula-function",
"modified": "20171213003237206",
"created": "20171213003135495"
},
"$:/plugins/ebalster/formula/macros/formula.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\n Information about this macro\n*/\n\nexports.name = \"formula\";\nexports.params = [{\"name\": \"formula\"}];\n\n/*\nRun the macro\n*/\nexports.run = function(formula) {\n\n var formulas = require(\"$:/plugins/ebalster/formula/compile.js\");\n\n return formulas.evalFormula(formula, this);\n};\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/macros/formula.js",
"tags": "",
"module-type": "macro",
"modified": "20171212194124031",
"created": "20171210215758530"
},
"$:/plugins/ebalster/formula/operands.js": {
"text": "/*\\\ntitle: $:/plugins/ebalster/formula/operands.js\ntype: application/javascript\nmodule-type: macro\n\nLibrary defining formula operands.\nOperands represent some value within the formula: an expression, datum, operator, constant or query...\nOperands may be constant, allowing the formula compiler to optimize them away.\n\n\\*/\n(function(){\n\n\"use strict\";\n\nvar Values = require(\"$:/plugins/ebalster/formula/value.js\");\n\nexports.Operand = function() {\n}\nexports.Operand.prototype.is_constant = false;\nexports.Operand.prototype.name = \"unknown-operand\";\nexports.Operand.prototype.toString = function() {return \"[Operand \" + this.name + \"]\";}\n\n// Operand::compute -- produce\nexports.Operand.prototype.compute = (function(widget, recur) {return new Values.V_Undefined();});\n\n\n// An operand that just throws an error.\nexports.Opd_Error = function(exception) {\n this.exception = exception;\n}\nexports.Opd_Error.prototype = new exports.Operand();\nexports.Opd_Error.prototype.name = \"error\";\nexports.Opd_Error.prototype.compute = function(widget, recur)\n{\n // Throw up\n throw this.exception;\n}\n\n\n// String constant operand.\nexports.Opd_Text = function(value) {\n this.value = value;\n}\nexports.Opd_Text.prototype = new exports.Operand();\nexports.Opd_Text.prototype.name = \"string\";\nexports.Opd_Text.prototype.is_constant = true;\n\nexports.Opd_Text.prototype.compute = function(widget, recur)\n{\n // Returns a string value\n return new Values.V_Text(this.value);\n}\n\n\n// Date constant operand.\nexports.Opd_Date = function(value) {\n this.value = value;\n}\nexports.Opd_Date.prototype = new exports.Operand();\nexports.Opd_Date.prototype.name = \"date\";\nexports.Opd_Date.prototype.is_constant = true;\n\nexports.Opd_Date.prototype.compute = function(widget, recur)\n{\n // Returns a string value\n return new Values.V_Date(this.value);\n}\n\n\n// Boolean constant operand.\nexports.Opd_Bool = function(value) {\n this.value = value;\n}\nexports.Opd_Bool.prototype = new exports.Operand();\nexports.Opd_Bool.prototype.name = \"boolean\";\nexports.Opd_Bool.prototype.is_constant = true;\n\nexports.Opd_Bool.prototype.compute = function(widget, recur)\n{\n // Returns a number value\n return new Values.V_Bool(this.value);\n}\n\n\n// Number constant operand.\nexports.Opd_Number = function(value) {\n this.value = value;\n}\nexports.Opd_Number.prototype = new exports.Operand();\nexports.Opd_Number.prototype.name = \"number\";\nexports.Opd_Number.prototype.is_constant = true;\n\nexports.Opd_Number.prototype.compute = function(widget, recur)\n{\n // Returns a number value\n return new Values.V_Num(this.value);\n}\n\n\nvar Compile = require(\"$:/plugins/ebalster/formula/compile.js\");\n\n\n// Opd_Transcluded operand.\nexports.Opd_Transclude = function(textReference) {\n this.textReference = textReference;\n this.datum = null;\n this.op = null;\n}\nexports.Opd_Transclude.prototype = new exports.Operand();\nexports.Opd_Transclude.prototype.name = \"transclude\";\n\nexports.Opd_Transclude.prototype.compute = function(widget, recur) {\n\n var newDatum = widget.wiki.getTextReference(this.textReference, \"\", widget.getVariable(\"currentTiddler\"));\n\n if (newDatum != this.datum)\n {\n this.datum = newDatum;\n try\n {\n this.op = Compile.compileDatum(newDatum);\n }\n catch (err)\n {\n // Save the error\n this.op = new exports.Opd_Error(\n err + \"\\n source: \\\"\" + this.datum + \"\\\"\\n from {{\" + this.textReference + \"}}\");\n }\n }\n\n return this.op.compute(widget, recur+1);\n}\n\n\n// Opd_Variable operand.\nexports.Opd_Variable = function(variable) {\n this.variable = variable;\n this.datum = null;\n this.op = null;\n this.compileError = null;\n}\nexports.Opd_Variable.prototype = new exports.Operand();\nexports.Opd_Variable.prototype.name = \"variable\";\n\nexports.Opd_Variable.prototype.compute = function(widget, recur) {\n\n var newDatum = widget.getVariable(this.variable) || \"\";\n\n if (newDatum != this.datum)\n {\n this.datum = newDatum;\n try\n {\n this.op = Compile.compileDatum(newDatum);\n }\n catch (err)\n {\n // Save the error\n this.op = new exports.Opd_Error(\n err + \"\\n source: \\\"\" + this.datum + \"\\\"\\n from <<\" + this.variable + \">>\");\n }\n }\n\n return this.op.compute(widget, recur+1);\n}\n\n\n// Opd_Filter operand.\nexports.Opd_Filter = function(filter) {\n this.filter = filter;\n this.elements = {};\n this.compileError = null;\n}\nexports.Opd_Filter.prototype = new exports.Operand();\nexports.Opd_Filter.prototype.name = \"filter\";\n\nexports.Opd_Filter.prototype.compute = function(widget, recur) {\n // Apply the filter and compile each result\n var exprs = widget.wiki.filterTiddlers(this.filter, widget);\n\n // Mark all existing elements for removal\n for (var expr in this.elements) this.elements[expr].count = 0;\n\n // Selectively re-compile any filter results that have changed\n for (var i = 0; i < exprs.length; ++i)\n {\n var expr = exprs[i];\n var found = this.elements[expr];\n if (found) ++found.count;\n else try\n {\n this.elements[expr] = {count: 1, op: Compile.compileDatum(expr)};\n }\n catch (err)\n {\n // Save the error\n this.elements[expr] = new exports.Opd_Error(\n err + \"\\n source: \\\"\" + expr + \"\\\"\\n from \\\"\" + this.filter + \"\\\"\");\n }\n }\n \n\n // Delete any elements with no copies left\n for (var expr in this.elements) if (this.elements[expr].count == 0) delete this.elements[expr];\n\n // Return value computes an array of datum values.\n var results = [];\n for (var expr in this.elements) {\n var elem = this.elements[expr];\n results.push(elem.op.compute(widget, recur+1));\n }\n return new Values.V_Array(results);\n};\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/operands.js",
"tags": "",
"module-type": "library",
"modified": "20171211183031273",
"description": "",
"created": "20171211183000431"
},
"$:/plugins/ebalster/formula/operators.js": {
"text": "(function(){\n\n\"use strict\";\n\nvar Values = require(\"$:/plugins/ebalster/formula/value.js\");\nvar Operands = require(\"$:/plugins/ebalster/formula/operands.js\");\n\n\nexports.Operator = function Operator() {\n}\nexports.Operator.prototype.name = \"unknown-operator\";\nexports.Operator.prototype = new Operands.Operand();\n\n/*\nexports.UnaryOperator = function UnaryOperator() {\n this.first = null;\n}\nexports.UnaryOperator.prototype = new exports.Operator();\nexports.UnaryOperator.prototype.name = \"unknown-unary-operator\";\n\n\nexports.BinaryOperator = function BinaryOperator() {\n this.first = null;\n this.second = null;\n}\nexports.BinaryOperator.prototype = new exports.Operator();\nexports.BinaryOperator.prototype.name = \"unknown-binary-operator\";\n*/\n\nexports.CallOperator = function CallOperator(func, args) {\n this.func = func;\n this.args = args;\n}\nexports.CallOperator.prototype = new exports.Operator();\nexports.CallOperator.prototype.name = \"function-call\";\nexports.CallOperator.prototype.compute = (function(widget, recur) {\n var vals = [];\n this.args.forEach(function(arg) {vals.push(arg.compute(widget, recur));});\n return this.func.apply(null, vals);\n});\n\n/*\nexports.BinaryMathOperator = function BinaryMathOperator() {\n}\nexports.BinaryMathOperator.prototype = new exports.BinaryOperator();\nexports.BinaryMathOperator.prototype.name = \"unknown-binary-math-operator\";\nexports.BinaryMathOperator.prototype.compute = (function(widget, recur) {\n return mathOp(this.first.compute(widget, recur).asNum(), this.first.compute(widget, recur).asNum());\n});\n\n\n// Identity operator (used for unary plus)\nexports.Operator_UnaryPlus = function Operator_UnaryPlus(first) {this.first = first;}\nexports.Operator_UnaryPlus.prototype = new exports.UnaryOperator();\nexports.Operator_UnaryPlus.prototype.name = \"unary-plus\";\nexports.Operator_UnaryPlus.prototype.compute = function(widget, recur) {return +this.first.compute(widget, recur).asSum();}\n\n// Negation operator (used for unary minus)\nexports.Operator_UnaryMinus = function Operator_UnaryMinus(first) {this.first = first;}\nexports.Operator_UnaryMinus.prototype = new exports.UnaryOperator();\nexports.Operator_UnaryMinus.prototype.name = \"unary-minus\";\nexports.Operator_UnaryMinus.prototype.compute = function(widget, recur) {return -this.first.compute(widget, recur).asSum();}\n\n\n// Addition operator\nexports.Operator_Plus = function Operator_Plus(first, second) {this.first = first; this.second = second;}\nexports.Operator_Plus.prototype = new exports.BinaryMathOperator();\nexports.Operator_Plus.prototype.name = \"plus\";\nexports.Operator_Plus.prototype.mathOp = function(a, b) {return a+b;}\n\n// Subtraction operator\nexports.Operator_Minus = function Operator_Minus(first, second) {this.first = first; this.second = second;}\nexports.Operator_Minus.prototype = new exports.BinaryMathOperator();\nexports.Operator_Minus.prototype.name = \"minus\";\nexports.Operator_Minus.prototype.mathOp = function(a, b) {return a-b;}\n\n// Multiplication operator\nexports.Operator_Multiply = function Operator_Multiply(first, second) {this.first = first; this.second = second;}\nexports.Operator_Multiply.prototype = new exports.BinaryMathOperator();\nexports.Operator_Multiply.prototype.name = \"multiply\";\nexports.Operator_Multiply.prototype.mathOp = function(a, b) {return a*b;}\n\n// Division operator\nexports.Operator_Divide = function Operator_Divide(first, second) {this.first = first; this.second = second;}\nexports.Operator_Divide.prototype = new exports.BinaryMathOperator();\nexports.Operator_Divide.prototype.name = \"divide\";\nexports.Operator_Divide.prototype.mathOp = function(a, b) {return a/b;}\n\n// Division operator\nexports.Operator_Exponent = function Operator_Exponent(first, second) {this.first = first; this.second = second;}\nexports.Operator_Exponent.prototype = new exports.BinaryMathOperator();\nexports.Operator_Exponent.prototype.name = \"exponent\";\nexports.Operator_Exponent.prototype.mathOp = function(a, b) {return Math.pow(a, b);}\n*/\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/operators.js",
"tags": "",
"module-type": "library",
"modified": "20171211183054390",
"description": "",
"created": "20171211183047843"
},
"$:/plugins/ebalster/formula/operators/arithmetic.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Unary sign operators\nexports.uplus = {arity: 1, position: \"pre\", operator: \"+\", function: \"uplus\"};\nexports.uminus = {arity: 1, position: \"pre\", operator: \"-\", function: \"uminus\"};\n\n// Add\nexports.plus = {arity: 2, precedence: 10, operator: \"+\", function: \"add\"};\nexports.minus = {arity: 2, precedence: 10, operator: \"-\", function: \"sub\"};\n\n// Multiply\nexports.multiply = {arity: 2, precedence: 20, operator: \"*\", function: \"mul\"};\nexports.divide = {arity: 2, precedence: 20, operator: \"/\", function: \"div\"};\n\n// Exponential\nexports.pow = {arity: 2, precedence: 30, operator: \"^\", function: \"pow\", associativity: \"right\"};\n\n// Percentage\nexports.percent = {arity: 1, position: \"post\", operator: \"%\", function: \"percent\"};\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/operators/arithmetic.js",
"tags": "",
"module-type": "formula-operator",
"modified": "20171212223539769",
"created": "20171212223503019"
},
"$:/plugins/ebalster/formula/operators/compare.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Equality\nexports.eq = {arity: 2, precedence: 0, operator: \"=\", function: \"eq\"};\nexports.ne = {arity: 2, precedence: 0, operator: \"<>\", function: \"ne\"};\n\n// Inequality\nexports.gt = {arity: 2, precedence: 0, operator: \">\", function: \"gt\"};\nexports.gte = {arity: 2, precedence: 0, operator: \">=\", function: \"gte\"};\nexports.lt = {arity: 2, precedence: 0, operator: \"<\", function: \"lt\"};\nexports.lte = {arity: 2, precedence: 0, operator: \"<=\", function: \"lte\"};\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/operators/compare.js",
"tags": "",
"module-type": "formula-operator",
"modified": "20171214050739104",
"created": "20171214050556123"
},
"$:/plugins/ebalster/formula/operators/strings.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n// Concatenate\nexports.concatenate = {arity: 2, precedence: 4, operator: \"&\", function: \"cat\"};\n\n})();",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/operators/strings.js",
"tags": "",
"module-type": "formula-operator",
"modified": "20171213003346943",
"created": "20171213003246267"
},
"$:/plugins/ebalster/formula/value.js": {
"text": "(function(){\n\n\"use strict\";\n\n\nexports.NumberFormatFunc = null;\n\nexports.DateFormat = \"0hh:0mm, DDth MMM YYYY\";\n\n\n// Base type for formula values\nexports.Value = function() {\n this.name = \"unknown-value\";\n}\n\n// Get the value payload\nexports.Value.prototype.get = function() {return undefined;};\n\n// Describe the value\nexports.Value.prototype.describe = function() {return this.name + \" (\" + String(this.get()) + \")\";}\n\nexports.Value.prototype.toString = function() {return \"[Value \" + this.describe() + \"]\";}\n\n// Get the value as a number (generic implementation)\nexports.Value.prototype.asNum = function() {\n var v = this.get();\n var n = Number(v);\n if (isNaN(n)) throw \"Cannot convert \" + this.describe() + \" to a number!\";\n return n;\n}\n\n// Get the value as a number, summing arrays (generic implementation)\nexports.Value.prototype.asSum = function() {\n var v = this.get();\n var n;\n if (Array.isArray(v)) {n = 0; for (var i = 0; i < v.length; ++i) n += Number(v[i]);}\n else n = Number(v);\n if (isNaN(n)) throw \"Cannot sum \" + this.describe() + \" to a number!\";\n return n;\n}\n\n// More convertsions\nexports.Value.prototype.asString = function() {\n return String(this.get());\n}\nexports.Value.prototype.asArray = function() {\n var v = this.get();\n if (Array.isArray(v)) return v;\n else return [v];\n}\nexports.Value.prototype.asDate = function() {\n throw \"Cannot convert \" + this.describe() + \" to a date!\";\n}\n\n\n// Undefined value.\nexports.V_Undefined = function() {\n this.name = \"undefined\";\n}\nexports.V_Undefined.prototype = new exports.Value();\nexports.V_Undefined.prototype.get = function() {return undefined;}\n\n\n// Array value.\nexports.V_Array = function(value) {\n this.name = \"array\";\n\n this.value = value;\n}\nexports.V_Array.prototype = new exports.Value();\nexports.V_Array.prototype.get = function() {return this.value;}\nexports.V_Array.prototype.asNum = function() {throw \"Cannot convert \" + this.describe() + \" to number!\";}\nexports.V_Array.prototype.asSum = function() {\n var n = 0;\n for (var i = 0; i < this.value.length; ++i) n += this.value[i].asNum();\n if (isNaN(n)) throw \"Cannot sum \" + this.describe() + \" to a number!\";\n return n;\n}\nexports.V_Array.prototype.asString = function() {\n var result = \"[\";\n if (this.value.length) result += this.value[0].asString();\n for (var i = 1; i < this.value.length; ++i) result += \",\" + this.value[i].asString();\n return result + \"]\";\n}\n\n\n// String value.\nexports.V_Text = function(value) {\n this.name = \"string\";\n\n this.value = value;\n}\nexports.V_Text.prototype = new exports.Value();\nexports.V_Text.prototype.get = function() {return this.value;}\n//exports.V_Text.prototype.asDate = function() {return $tw.utils.parseDate();}\n\n\n// Date value.\nexports.V_Date = function(value) {\n this.name = \"date\";\n\n this.value = value;\n}\nexports.V_Date.prototype = new exports.Value();\nexports.V_Date.prototype.get = function() {return this.value;}\nexports.V_Date.prototype.asString = function() {return $tw.utils.formatDateString(this.value, exports.DateFormat);}\nexports.V_Date.prototype.asNum = function() {throw \"Date-to-Number conversion usupported\"}\nexports.V_Date.prototype.asSum = function() {throw \"Date-to-Number conversion usupported\"}\nexports.V_Date.prototype.asDate = function() {return this.value;}\n\n\n// Boolean value.\nexports.V_Bool = function(value) {\n this.name = \"boolean\";\n\n this.value = value;\n}\nexports.V_Bool.prototype = new exports.Value();\nexports.V_Bool.prototype.get = function() {return this.value;}\nexports.V_Bool.prototype.asString = function() {return this.value ? \"TRUE\" : \"FALSE\";}\nexports.V_Bool.prototype.asNum = function() {return this.value ? 1 : 0;}\nexports.V_Bool.prototype.asSum = function() {return this.value ? 1 : 0;}\n\n\n// Number value.\nexports.V_Num = function(value) {\n this.name = \"number\";\n\n this.value = value;\n}\nexports.V_Num.prototype = new exports.Value();\nexports.V_Num.prototype.get = function() {return this.value;}\nexports.V_Num.prototype.asString = function() {return (exports.NumberFormatFunc || String)(this.value);}\nexports.V_Num.prototype.asNum = function() {return this.value;}\nexports.V_Num.prototype.asSum = function() {return this.value;}\n\n\n// Percentage value.\nexports.V_Percent = function(value) {\n this.name = \"percentage\";\n\n this.value = value;\n}\nexports.V_Percent.prototype = new exports.V_Num();\nexports.V_Percent.prototype.asString = function()\n{\n return (exports.NumberFormatFunc || String)(100*this.value) + \"%\";\n}\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/value.js",
"tags": "",
"module-type": "library",
"modified": "20171211195014088",
"description": "",
"created": "20171211195003728"
},
"$:/plugins/ebalster/formula/widgets/formula-vars": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar Formulas = require(\"$:/plugins/ebalster/formula/compile.js\");\nvar Operands = require(\"$:/plugins/ebalster/formula/operands.js\");\n\nvar FormulaVarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFormulaVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nFormulaVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nRecompute formulas\n*/\nFormulaVarsWidget.prototype.formula_recompute = function() {\n\t// Parse variables\n\tvar self = this;\n\n\tthis.formatOptions =\n\t{\n\t\tfixed: (this.getAttribute(\"$toFixed\") || this.parentWidget.getVariable(\"formulaFixed\")),\n\t\tprecision: (this.getAttribute(\"$toPrecision\") || this.parentWidget.getVariable(\"formulaPrecision\")),\n\t\tdateFormat: (this.getAttribute(\"$dateFormat\") || this.parentWidget.getVariable(\"formulaDateFormat\")),\n\t};\n\n\tif (!this.currentValues)\n\t{\n\t\t// Initial values\n\t\tthis.currentValues = {};\n\t\tthis.formulaSrc = {}\n\t\tthis.formulaComp = {};\n\t}\n\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\t// Recompile if necessary\n\t\t\tif (self.formulaSrc[key] != val) {\n\t\t\t\tself.formulaSrc[key] = val;\n\t\t\t\ttry {\n\t\t\t\t\tself.formulaComp[key] = Formulas.compileFormula(self.formulaSrc[key]);\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tself.formulaComp[key] = new Operands.Opd_Error(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Recompute the formula\n\t\t\tif (self.formulaComp[key]) {\n\t\t\t\tself.currentValues[key] = Formulas.computeFormula(\n\t\t\t\t\tself.formulaComp[key], self, self.formatOptions);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tself.currentValues[key] = \"Error: formula not assigned\";\n\t\t\t}\n\t\t}\n\t});\n}\n\n/*\nCompute the internal state of the widget\n*/\nFormulaVarsWidget.prototype.execute = function() {\n\t// Recompute formulas\n\tthis.formula_recompute();\n\n\tfor (var key in this.currentValues) {\n\t\tthis.setVariable(key, this.currentValues[key]);\n\t}\n\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nFormulaVarsWidget.prototype.refresh = function formulaVarsRefresh(changedTiddlers) {\n\tthis.computeAttributes();\n\tvar oldValues = Object.assign({}, this.currentValues || {});\n\tthis.formula_recompute();\n\n\t// Did any computed values change?\n\tvar changedValues = false;\n\tfor (var key in this.currentValues) {\n\t\tif (this.currentValues[key] !== oldValues[key]) {\n\t\t\tthis.setVariable(key, this.currentValues[key]);\n\t\t\tchangedValues = true;\n\t\t}\n\t}\n\n\tif(changedValues) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"formula-vars\"] = FormulaVarsWidget;\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/widgets/formula-vars",
"tags": "",
"module-type": "widget",
"modified": "20171216010219036",
"description": "As the $vars widget, but each attribute is interpreted as a formula.",
"created": "20171216003055342"
},
"$:/plugins/ebalster/formula/widgets/formula.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar Formulas = require(\"$:/plugins/ebalster/formula/compile.js\");\nvar Operands = require(\"$:/plugins/ebalster/formula/operands.js\");\n\nvar FormulaWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFormulaWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFormulaWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentValue);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFormulaWidget.prototype.execute = function() {\n\n\tvar oldFormula = this.formula;\n\n\t// Get parameters from our attributes\n\tthis.formula = this.getAttribute(\"formula\");\n\tthis.debug = this.getAttribute(\"debug\");\n\n\tvar self = this;\n\tthis.formatOptions =\n\t{\n\t\tfixed: (this.getAttribute(\"toFixed\") || this.getVariable(\"formulaFixed\")),\n\t\tprecision: (this.getAttribute(\"toPrecision\") || this.getVariable(\"formulaPrecision\")),\n\t\tdateFormat: (this.getAttribute(\"dateFormat\") || this.getVariable(\"formulaDateFormat\")),\n\t};\n\n\t// Compile the formula, if it has changed, yielding compiledFormula\n\tif(this.formula !== oldFormula) {\n\t\tif (this.formula) {\n\t\t\ttry\n\t\t\t{\n\t\t\t\tthis.compiledFormula = Formulas.compileFormula(this.formula);\n\t\t\t}\n\t\t\tcatch (err) {this.compiledFormula = new Operands.Opd_Error(err);}\n\t\t}\n\t\telse {\n\t\t\tthis.compiledFormula = null;\n\t\t}\n\t}\n\n\t// Compute the formula, yielding currentValue\n\tif(this.compiledFormula) {\n\t\tthis.currentValue = Formulas.computeFormula(this.compiledFormula, this, this.formatOptions, Boolean(this.debug));\n\t} else {\n\t\tthis.currentValue = \"`Error: formula not assigned`\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFormulaWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldValue = this.currentValue;\n\tthis.execute();\n\tif(this.currentValue !== oldValue) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.formula = FormulaWidget;\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/widgets/formula.js",
"tags": "",
"module-type": "widget",
"modified": "20171212194059701",
"description": "Evaluates a formula.",
"created": "20171210232543292"
},
"$:/plugins/ebalster/formula/wikiparser/formula.js": {
"text": "(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"formula\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\(=/mg;\n\tthis.endMatchRegExp = /=\\)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end marker\n\tthis.endMatchRegExp.lastIndex = this.parser.pos;\n\tvar match = this.endMatchRegExp.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"formula\",\n\t\tattributes: {\n\t\t\tformula: {type: \"string\", value: text},\n\t\t}\n\t}];\n};\n\n})();\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/plugins/ebalster/formula/wikiparser/formula.js",
"tags": "",
"module-type": "wikirule",
"modified": "20171211181716654",
"description": "Wiki text inline rule for formulas. Ex. `((=2+2))`",
"created": "20171211033327565"
}
}
}
{"6a125024-00a9-42c0-9ec2-56d1811dc4e6":{"x":55,"y":170},"023926ce-92ab-4448-8259-719c8485a9e3":{"x":23,"y":10},"6de619a4-5652-4fc8-8343-578ac85b0b6a":{"x":-112,"y":-145}}
{"235ebfd6-81b0-443d-9992-b382fddc8039":{"x":70.03351592628995,"y":-311.04042946649184}}
{"6de619a4-5652-4fc8-8343-578ac85b0b6a":{"x":-162.22480710782534,"y":-116.72888321285913}}
{"235ebfd6-81b0-443d-9992-b382fddc8039":{"x":18,"y":136},"4b15cb9b-5bb3-4235-9951-f37c4fef0462":{"x":-64,"y":-105},"6732efd7-ae1f-4d47-940c-3487a4e275da":{"x":156,"y":22},"6b877181-5723-45db-9811-4e7fc09cb6c1":{"x":-161,"y":129},"756f626f-b130-4972-92cf-a61ceb79eaa3":{"x":-282,"y":-18},"7135e15a-506d-4f0d-bc50-e7962bd458f5":{"x":-245,"y":-257},"f77144b1-62eb-469f-8b2a-c2cec4143fe6":{"x":-14,"y":-336},"d2dc442a-ba1a-43d7-ac4e-2cba2e2dc9db":{"x":162,"y":-169}}
{"dad7c6ef-47ef-4d35-bae2-55326384ef93":{"x":262,"y":-30},"6732efd7-ae1f-4d47-940c-3487a4e275da":{"x":-40,"y":-40},"20d5f78d-e83b-41da-8221-01fb0a6891b1":{"x":-173,"y":229},"350d03ee-2447-4da3-9d8a-16da12df9894":{"x":4,"y":-335},"4b15cb9b-5bb3-4235-9951-f37c4fef0462":{"x":-323,"y":-126},"0a21abee-7d68-4c79-ab90-7df7a20bd33e":{"x":220,"y":-193},"c4f08320-72ff-4036-9bc1-d9e034c445f6":{"x":-328,"y":28},"b4bebb79-1938-4517-8b2e-d7ed9692f142":{"x":118,"y":161},"446b2d7f-80f5-4148-af3b-c5d8c917fa94":{"x":83,"y":232},"224f8071-1c50-4bfa-98f5-9ed81ebf22b6":{"x":208,"y":42},"4432b866-e179-471b-a949-cd0c52b7bf25":{"x":-18,"y":258},"6b877181-5723-45db-9811-4e7fc09cb6c1":{"x":-291,"y":119},"28cda133-19bb-4d01-b54b-d8ab8a6c550a":{"x":-157,"y":-318},"a08101b6-0ac1-45e8-8b74-6587d71afeba":{"x":-216,"y":147},"a8332780-6d49-48e2-9968-55464d39b77a":{"x":-203,"y":-237},"f9f2e24b-4db3-4764-a455-ea1fc38d8616":{"x":213,"y":-105},"f434df47-5220-46c2-add0-9b288919cc97":{"x":101,"y":-303},"ad7cced2-82ce-454c-9f02-e09244b95989":{"x":-293,"y":-48},"03c268c8-49ac-46a7-81e1-1cf45876fd85":{"x":-65,"y":-296},"957daa27-3aa4-46ca-83df-64de766721b0":{"x":132,"y":-230},"8e36cc88-0584-4efb-ba00-d7bc325bba43":{"x":-280,"y":-215},"333742ad-49d4-4b2d-940e-6de91372de92":{"x":-80,"y":210},"e4b93564-9815-4b93-9d2c-cbffae2e87cd":{"x":209,"y":131}}
{"b82cd988-b5f7-42e3-8804-5f798b776aad":{"x":240,"y":-68},"6732efd7-ae1f-4d47-940c-3487a4e275da":{"x":61,"y":-326},"957daa27-3aa4-46ca-83df-64de766721b0":{"x":-12,"y":-83},"9f016d17-4bb9-43ac-ba50-7e985e17b06c":{"x":-225,"y":-176},"0ac54854-6422-40ae-b205-829f8adb6d9d":{"x":176,"y":86},"20d5f78d-e83b-41da-8221-01fb0a6891b1":{"x":-138,"y":137},"b574cd6c-0c59-4a8d-ab8d-1aab33aaee19":{"x":-251,"y":5},"ce3f105a-de45-40ff-9c42-2f22ee343f1f":{"x":-111,"y":-319},"bacd6adf-1641-4c26-957e-1f00940bc027":{"x":28,"y":167},"8520ae23-c1b2-4689-ae66-2af23d3cc167":{"x":195,"y":-228}}
{"4e2e644d-77da-4cda-8eef-51e52d636001":{"x":-171,"y":63},"a7119e39-5417-404a-b826-f717393575eb":{"x":24,"y":-93},"a8332780-6d49-48e2-9968-55464d39b77a":{"x":47,"y":193},"4f26467f-2847-4a64-972b-257c6f77e0c3":{"x":-233,"y":-78},"333742ad-49d4-4b2d-940e-6de91372de92":{"x":-87,"y":170},"eafc9f77-e01a-4130-a374-31326f8b4604":{"x":-191,"y":-239},"db17bce2-3a06-4ee0-8975-f3750605342c":{"x":-58,"y":-337},"5c1f8551-4836-418d-99c8-117601fab044":{"x":99,"y":-333},"1d3d61e6-85b1-4c55-8366-78b66fdb8e73":{"x":272,"y":-146},"7faf2d46-f8d1-4224-ae53-a1e21ac5884c":{"x":261,"y":9},"c33e42e3-6ceb-462b-8df8-08ae8e783414":{"x":156,"y":118},"1f8f5c60-9c0d-4014-ba86-1ca82aed16d9":{"x":238,"y":-289}}
{
"originalVersion": "0.7.34+4160",
"dataStructureState": "0.9.2",
"showWelcomeMessage": false
}
{
"tiddlers": {
"$:/plugins/felixhayashi/topstoryview/config.js": {
"text": "/*\\\n\ntitle: $:/plugins/felixhayashi/topstoryview/config.js\ntype: application/javascript\nmodule-type: library\n\n@preserve\n\n\\*/\n(function(){\"use strict\";exports.config={classNames:{storyRiver:\"tc-story-river\",backDrop:\"story-backdrop\",tiddlerFrame:\"tc-tiddler-frame\",tiddlerTitle:\"tc-title\"},references:{userConfig:\"$:/config/topStoryView\",focussedTiddlerStore:\"$:/temp/focussedTiddler\",refreshTrigger:\"$:/temp/focussedTiddler/refresh\"},checkbackTime:$tw.utils.getAnimationDuration()}})();",
"title": "$:/plugins/felixhayashi/topstoryview/config.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/felixhayashi/topstoryview/layout": {
"text": "html .tc-story-river:after {\n content: \"\";\n display: block; }\n",
"title": "$:/plugins/felixhayashi/topstoryview/layout",
"type": "text/vnd.tiddlywiki",
"tags": [
"$:/tags/Stylesheet"
]
},
"$:/plugins/felixhayashi/topstoryview/Configuration": {
"title": "$:/plugins/felixhayashi/topstoryview/Configuration",
"text": "Please see the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information on the options.\n\nSave and reload the wiki to activate changes.\n\n<table>\n <tr>\n <th align=\"left\">Scroll offset:</th>\n <td><$edit-text tiddler=\"$:/config/topStoryView\" field=\"scroll-offset\" tag=\"input\" default=\"150px\" /></td>\n </tr>\n</table>"
},
"$:/plugins/felixhayashi/topstoryview/License": {
"title": "$:/plugins/felixhayashi/topstoryview/License",
"text": "This code is released under the BSD license. For the exact terms visit:\n\nhttps://github.com/felixhayashi/TW5-TopStoryView/blob/master/LICENSE"
},
"$:/plugins/felixhayashi/topstoryview/Readme": {
"title": "$:/plugins/felixhayashi/topstoryview/Readme",
"text": "Please visit the [[GitHub page|https://github.com/felixhayashi/TW5-TopStoryView]] for more information."
},
"$:/plugins/felixhayashi/topstoryview/top.js": {
"text": "/*\\\ntitle: $:/plugins/felixhayashi/topstoryview/top.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n@preserve\n\n\\*/\n(function(){\"use strict\";var t=require(\"$:/plugins/felixhayashi/topstoryview/config.js\").config;var e=\"cubic-bezier(0.645, 0.045, 0.355, 1)\";var i=function(e){this.listWidget=e;this.pageScroller=new $tw.utils.PageScroller;this.pageScroller.scrollIntoView=this.scrollIntoView;this.pageScroller.storyRiverDomNode=document.getElementsByClassName(t.classNames.storyRiver)[0];var i=$tw.wiki.getTiddler(t.references.userConfig);var o=i?i.fields:{};$tw.hooks.addHook(\"th-opening-default-tiddlers-list\",this.hookOpenDefaultTiddlers);var r=parseInt(o[\"scroll-offset\"]);this.pageScroller.scrollOffset=isNaN(r)?71:r;this.recalculateBottomSpace()};i.prototype.refreshStart=function(t,e){};i.prototype.refreshEnd=function(t,e){};i.prototype.hookOpenDefaultTiddlers=function(t){return t};i.prototype.navigateTo=function(t){var e=this.listWidget.findListItem(0,t.title);if(e===undefined)return;var i=this.listWidget.children[e];var o=i.findFirstDomNode();if(!(o instanceof Element))return;this.pageScroller.scrollIntoView(o)};i.prototype.insert=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element))return;this.startInsertAnimation(e,function(){this.recalculateBottomSpace()}.bind(this))};i.prototype.remove=function(t){if(!t)return;var e=t.findFirstDomNode();if(!(e instanceof Element)){t.removeChildDomNodes();return}var i=this.getLastFrame()===e;this.startRemoveAnimation(t,e,function(){t.removeChildDomNodes();this.recalculateBottomSpace();if(i){this.pageScroller.scrollIntoView(this.getLastFrame())}}.bind(this))};i.prototype.getLastFrame=function(){var t=this.listWidget.children[this.listWidget.children.length-1];return t?t.findFirstDomNode():null};i.prototype.recalculateBottomSpace=function(){var t=this.pageScroller.storyRiverDomNode;if(this.getLastFrame()){var e=this.getLastFrame().getBoundingClientRect();var i=window.innerHeight;if(e.height<i){t.style[\"paddingBottom\"]=i-e.height+\"px\";return}}t.style[\"paddingBottom\"]=\"\"};i.prototype.scrollIntoView=function(t){if(this.preventNextScrollAttempt){this.preventNextScrollAttempt=false}if(!t)return;var e=$tw.utils.getAnimationDuration();this.cancelScroll();this.startTime=Date.now();var i=$tw.utils.getScrollPosition();var o=t.getBoundingClientRect(),r={left:o.left+i.x,top:o.top+i.y,width:o.width,height:o.height};var n=function(t,e,i,o){if(t<=i){return t}else if(e<o&&i<t+e-o){return t+e-o}else if(i<t){return t}else{return i}},s=n(r.left,r.width,i.x,window.innerWidth),a=r.top-this.scrollOffset;if(s!==i.x||a!==i.y){var l=this,c;c=function(){var t;if(e<=0){t=1}else{t=(Date.now()-l.startTime)/e}if(t>=1){l.cancelScroll();t=1}t=$tw.utils.slowInSlowOut(t);window.scrollTo(i.x+(s-i.x)*t,i.y+(a-i.y)*t);if(t<1){l.idRequestFrame=l.requestAnimationFrame.call(window,c)}};c()}};i.prototype.startInsertAnimation=function(t,i){var o=$tw.utils.getAnimationDuration();var r=window.getComputedStyle(t),n=parseInt(r.marginBottom,10),s=parseInt(r.marginTop,10),a=t.offsetHeight+s;setTimeout(function(){$tw.utils.setStyle(t,[{transition:\"none\"},{marginBottom:\"\"}]);i()},o);$tw.utils.setStyle(t,[{transition:\"none\"},{marginBottom:-a+\"px\"},{opacity:\"0.0\"}]);$tw.utils.forceLayout(t);$tw.utils.setStyle(t,[{transition:\"opacity \"+o+\"ms \"+e+\", \"+\"margin-bottom \"+o+\"ms \"+e},{marginBottom:n+\"px\"},{opacity:\"1.0\"}])};i.prototype.startRemoveAnimation=function(t,i,o){var r=$tw.utils.getAnimationDuration();var n=i.offsetWidth,s=window.getComputedStyle(i),a=parseInt(s.marginBottom,10),l=parseInt(s.marginTop,10),c=i.offsetHeight+l;setTimeout(o,r);$tw.utils.setStyle(i,[{transition:\"none\"},{transform:\"translateX(0px)\"},{marginBottom:a+\"px\"},{opacity:\"1.0\"}]);$tw.utils.forceLayout(i);$tw.utils.setStyle(i,[{transition:$tw.utils.roundTripPropertyName(\"transform\")+\" \"+r+\"ms \"+e+\", \"+\"opacity \"+r+\"ms \"+e+\", \"+\"margin-bottom \"+r+\"ms \"+e},{transform:\"translateX(-\"+n+\"px)\"},{marginBottom:-c+\"px\"},{opacity:\"0.0\"}])};exports.top=i})();",
"title": "$:/plugins/felixhayashi/topstoryview/top.js",
"type": "application/javascript",
"module-type": "storyview"
}
}
}
{
"tiddlers": {
"$:/plugins/flibbles/relink/js/bulkops.js": {
"text": "/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n * This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\tvar self = this;\n\tvar failures = [];\n\tvar records = this.getRelinkReport(fromTitle, toTitle, options);\n\tfor (var title in records) {\n\t\tvar entries = records[title];\n\t\tvar changes = Object.create(null);\n\t\tvar update = false;\n\t\tfor (var field in entries) {\n\t\t\tvar entry = entries[field];\n\t\t\tlanguage.eachImpossible(entry, function() {\n\t\t\t\tfailures.push(title);\n\t\t\t});\n\t\t\tlanguage.logAll(entry, title, fromTitle, toTitle, options);\n\t\t\tif (entry && entry.output) {\n\t\t\t\tchanges[field] = entry.output;\n\t\t\t\tupdate = true;\n\t\t\t}\n\t\t}\n\t\t// If any fields changed, update tiddler\n\t\tif (update) {\n\t\t\tvar tiddler = this.getTiddler(title);\n\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,self.getModificationFields())\n\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\tself.addTiddler(newTiddler);\n\t\t}\n\t};\n\tif (failures.length > 0) {\n\t\tvar options = $tw.utils.extend(\n\t\t\t{ variables: {to: toTitle, from: fromTitle},\n\t\t\t wiki: this},\n\t\t\toptions );\n\t\tlanguage.reportFailures(failures, options);\n\t}\n};\n\n})();\n",
"module-type": "startup",
"title": "$:/plugins/flibbles/relink/js/bulkops.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/language.js": {
"text": "/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nvar prettylink = require(\"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js\");\nvar Placeholder = require(\"$:/plugins/flibbles/relink/js/utils/placeholder.js\");\n\nexports.eachImpossible = function(rootEntry, method) {\n\tif (rootEntry.eachChild) {\n\t\trootEntry.eachChild(function(child) {\n\t\t\texports.eachImpossible.call(this, child, method);\n\t\t});\n\t}\n\tif (rootEntry.impossible) {\n\t\tmethod(rootEntry);\n\t}\n};\n\nexports.logAll = function(entry, title, from, to, options) {\n\tvar raw = exports.log[entry.name];\n\tif (entry.impossible) {\n\t\treturn;\n\t}\n\tif (raw) {\n\t\texports.logRelink(raw, entry, title, from, to, options);\n\t\treturn;\n\t}\n\tif (entry.eachChild) {\n\t\tentry.eachChild(function(child) {\n\t\t\texports.logAll(child, title, from, to, options);\n\t\t});\n\t}\n};\n\nexports.logRelink = function(raw, args, title, from, to, options) {\n\traw = \"Renaming '\"+from+\"' to '\"+to+\"' in \" + raw + \" of tiddler '\"+title+\"'\";\n\t// This is cheap, but whatevs. To do a proper\n\t// rendering would require working through a wiki\n\t// object. Too heavy weight for log messages.\n\tvar msg = raw.replace(/<<([^<>]+)>>/g, function(match, key) {\n\t\tvar value = args[key];\n\t\tif (key === \"field\") {\n\t\t\tvalue = descriptor(value);\n\t\t};\n\t\treturn value || (\"<<\"+key+\">>\");\n\t});\n\tconsole.log(msg);\n};\n\n// This wraps alert so it can be monkeypatched during testing.\nexports.alert = function(message) {\n\talert(message);\n};\n\nexports.getString = function(title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(\"text/plain\", title, options);\n};\n\nvar logger;\n\nexports.reportFailures = function(failureList, options) {\n\tif (!logger) {\n\t\tlogger = new $tw.utils.Logger(\"Relinker\");\n\t}\n\tvar alertString = this.getString(\"Error/ReportFailedRelinks\", options)\n\tvar placeholder = new Placeholder(options);\n\tvar phOptions = $tw.utils.extend({placeholder: placeholder}, options);\n\tvar alreadyReported = Object.create(null);\n\tvar reportList = [];\n\t$tw.utils.each(failureList, function(f) {\n\t\tif (!alreadyReported[f]) {\n\t\t\tif ($tw.browser) {\n\t\t\t\treportList.push(\"\\n* \" + prettylink.makeLink(f, undefined, phOptions));\n\t\t\t} else {\n\t\t\t\treportList.push(\"\\n* \" + f);\n\t\t\t}\n\t\t\talreadyReported[f] = true;\n\t\t}\n\t});\n\tlogger.alert(placeholder.getPreamble() + alertString + \"\\n\" + reportList.join(\"\"));\n};\n\nexports.log = {\n\t\"html\": \"<<<element>> /> element\",\n\t\"field\": \"<<field>>\",\n\t\"filteredtransclude\": \"filtered transclusion\",\n\t\"image\": \"image\",\n\t\"import\": \"\\\\import filter\",\n\t\"macrodef\": \"<<macro>> definition\",\n\t\"prettylink\": \"prettylink\",\n\t\"syslink\": \"syslink\",\n\t\"transclude\": \"transclusion\",\n\t\"wikilink\": \"CamelCase link\",\n};\n\nfunction descriptor(field) {\n\tif (field === \"tags\") {\n\t\treturn \"tags\";\n\t} else {\n\t\treturn field + \" field\" ;\n\t}\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/language.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/mangler.js": {
"text": "/*\\\nmodule-type: widget\n\nCreates a mangler widget for field validation. This isn't meant to be used\nby the user. It's only used in Relink configuration.\n\n\\*/\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\n\nvar RelinkManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"relink-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"relink-add-operator\", handler: \"handleAddOperatorEvent\"},\n\t\t{type: \"relink-add-parameter\", handler: \"handleAddParameterEvent\"},\n\t\t{type: \"relink-add-attribute\", handler: \"handleAddAttributeEvent\"}\n\t]);\n};\n\nexports.relinkmangler = RelinkManglerWidget;\n\nRelinkManglerWidget.prototype = new Widget();\n\nRelinkManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (typeof param !== \"object\" || !param.field) {\n\t\t// Can't handle it.\n\t\treturn true;\n\t}\n\tvar trimmedName = param.field.toLowerCase().trim();\n\tif (!trimmedName) {\n\t\t// Still can't handle it, but don't warn.\n\t\treturn true;\n\t}\n\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\tlanguage.alert($tw.language.getString(\n\t\t\t\"InvalidFieldName\",\n\t\t\t{variables:\n\t\t\t\t{fieldName: trimmedName}\n\t\t\t}\n\t\t));\n\t} else {\n\t\tadd(this.wiki, \"fields\", trimmedName);\n\t}\n\treturn true;\n};\n\n/**Not much validation, even though there are definitely illegal\n * operator names. If you input on, Relink won't relink it, but it\n * won't choke on it either. Tiddlywiki will...\n */\nRelinkManglerWidget.prototype.handleAddOperatorEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param) {\n\t\tadd(this.wiki, \"operators\", param.operator);\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddParameterEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.macro && param.parameter) {\n\t\tif (/\\s/.test(param.macro.trim())) {\n\t\t\tlanguage.alert(language.getString(\n\t\t\t\t\"Error/InvalidMacroName\",\n\t\t\t\t{ variables: {macroName: param.macro},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.parameter.trim())) {\n\t\t\tlanguage.alert(language.getString(\n\t\t\t\t\"Error/InvalidParameterName\",\n\t\t\t\t{ variables: {parameterName: param.parameter},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"macros\", param.macro, param.parameter);\n\t\t}\n\t}\n\treturn true;\n};\n\nRelinkManglerWidget.prototype.handleAddAttributeEvent = function(event) {\n\tvar param = event.paramObject;\n\tif (param && param.element && param.attribute) {\n\t\tif (/[ \\/]/.test(param.element.trim())) {\n\t\t\tlanguage.alert(language.getString(\n\t\t\t\t\"Error/InvalidElementName\",\n\t\t\t\t{ variables: {elementName: param.element},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else if (/[ \\/]/.test(param.attribute.trim())) {\n\t\t\tlanguage.alert(language.getString(\n\t\t\t\t\"Error/InvalidAttributeName\",\n\t\t\t\t{ variables: {attributeName: param.attribute},\n\t\t\t\t wiki: this.wiki\n\t\t\t\t}\n\t\t\t));\n\t\t} else {\n\t\t\tadd(this.wiki, \"attributes\", param.element, param.attribute);\n\t\t}\n\t}\n\treturn true;\n};\n\nfunction add(wiki, category/*, path parts*/) {\n\tvar path = \"$:/config/flibbles/relink/\" + category;\n\tfor (var x = 2; x < arguments.length; x++) {\n\t\tvar part = arguments[x];\n\t\t// Abort if it's falsy, or only whitespace. Also, trim spaces\n\t\tif (!part || !(part = part.trim())) {\n\t\t\treturn;\n\t\t}\n\t\tpath = path + \"/\" + part;\n\t}\n\tvar def = settings.getDefaultType(wiki);\n\twiki.addTiddler({title: path, text: def});\n};\n",
"module-type": "widget",
"title": "$:/plugins/flibbles/relink/js/mangler.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/settings.js": {
"text": "/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar fieldTypes = Object.create(null);\nvar surveyors = [];\nvar prefix = \"$:/config/flibbles/relink/\";\n\n$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\tfunction NewType() {};\n\tNewType.prototype = exports;\n\tNewType.typeName = exports.name;\n\tfieldTypes[exports.name] = NewType;\n\t// For legacy reasons, some of the field types can go by other names\n\tif (exports.aliases) {\n\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\tfieldTypes[alias] = NewType;\n\t\t});\n\t}\n});\n\n$tw.modules.forEachModuleOfType(\"relinksurveyor\", function(title, exports) {\n\tsurveyors.push(exports);\n});\n\nfunction Settings(wiki) {\n\tthis.settings = compileSettings(wiki);\n\tthis.wiki = wiki;\n};\n\nmodule.exports = Settings;\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nSettings.getType = function(name) {\n\tvar Handler = fieldTypes[name];\n\treturn Handler ? new Handler() : undefined;\n};\n\nSettings.getTypes = function() {\n\t// We don't return fieldTypes, because we don't want it modified,\n\t// and we need to filter out legacy names.\n\tvar rtn = Object.create(null);\n\tfor (var type in fieldTypes) {\n\t\tvar typeObject = fieldTypes[type];\n\t\trtn[typeObject.typeName] = typeObject;\n\t}\n\treturn rtn;\n};\n\nSettings.getDefaultType = function(wiki) {\n\tvar tiddler = wiki.getTiddler(\"$:/config/flibbles/relink/settings/default-type\");\n\tvar defaultType = tiddler && tiddler.fields.text;\n\t// make sure the default actually exists, otherwise default\n\treturn fieldTypes[defaultType] ? defaultType : \"title\";\n};\n\nSettings.prototype.survey = function(text, fromTitle, options) {\n\tif (text) {\n\t\tfor (var i = 0; i < surveyors.length; i++) {\n\t\t\tif (surveyors[i].survey(text, fromTitle, options)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nSettings.prototype.getAttribute = function(elementName) {\n\treturn this.settings.attributes[elementName];\n};\n\nSettings.prototype.getAttributes = function() {\n\treturn flatten(this.settings.attributes);\n};\n\n\nSettings.prototype.getFields = function() {\n\treturn this.settings.fields;\n};\n\nSettings.prototype.getOperators = function() {\n\treturn this.settings.operators;\n};\n\nSettings.prototype.getMacro = function(macroName) {\n\treturn this.settings.macros[macroName];\n};\n\nSettings.prototype.getMacros = function() {\n\treturn flatten(this.settings.macros);\n};\n\nSettings.prototype.refresh = function(changes) {\n\tfor (var title in changes) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tthis.settings = compileSettings(this.wiki);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nexports.factories = {\n\tattributes: function(attributes, data, key) {\n\t\tvar elem = root(key);\n\t\tvar attr = key.substr(elem.length+1);\n\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\tattributes[elem][attr] = data;\n\t},\n\tfields: function(fields, data, name) {\n\t\tfields[name] = data;\n\t},\n\tmacros: function(macros, data, key) {\n\t\t// We take the last index, not the first, because macro\n\t\t// parameters can't have slashes, but macroNames can.\n\t\tvar name = dir(key);\n\t\tvar arg = key.substr(name.length+1);\n\t\tmacros[name] = macros[name] || Object.create(null);\n\t\tmacros[name][arg] = data;\n\t},\n\toperators: function(operators, data, name) {\n\t\toperators[name] = data;\n\t}\n};\n\nfunction compileSettings(wiki) {\n\tvar settings = Object.create(null);\n\tfor (var name in exports.factories) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = exports.factories[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tvar Handler = fieldTypes[tiddler.fields.text];\n\t\t\t\tif (Handler) {\n\t\t\t\t\tvar data = new Handler();\n\t\t\t\t\tdata.source = title;\n\t\t\t\t\t// Secret feature. You can access a config tiddler's\n\t\t\t\t\t// fields from inside the fieldtype handler. Cool\n\t\t\t\t\t// tricks can be done with this.\n\t\t\t\t\tdata.fields = tiddler.fields;\n\t\t\t\t\tfactory(settings[category], data, name);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn settings;\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n\nfunction flatten(set) {\n\tvar signatures = Object.create(null);\n\tfor (var outerName in set) {\n\t\tvar setItem = set[outerName];\n\t\tfor (var innerName in setItem) {\n\t\t\tsignatures[outerName + \"/\" + innerName] = setItem[innerName];\n\t\t}\n\t}\n\treturn signatures;\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/settings.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/wikimethods.js": {
"text": "/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar MacroSettings = require('$:/plugins/flibbles/relink/js/utils/macroConfig.js');\nvar Settings = require(\"$:/plugins/flibbles/relink/js/settings.js\");\n\nvar relinkOperations = Object.create(null);\n$tw.modules.applyMethods('relinkoperator', relinkOperations);\n\n/** Returns a pair like this,\n * { title: {field: entry, ... }, ... }\n */\nexports.getRelinkReport = function(fromTitle, toTitle, options) {\n\tvar cache = this.getGlobalCache(\"relink-\"+fromTitle, function() {\n\t\treturn Object.create(null);\n\t});\n\tif (!cache[toTitle]) {\n\t\tcache[toTitle] = getFreshRelinkReport(this, fromTitle, toTitle, options);\n\t}\n\treturn cache[toTitle];\n};\n\nfunction getFreshRelinkReport(wiki, fromTitle, toTitle, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\toptions.settings = wiki.getRelinkConfig();\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle) {\n\t\tvar tiddlerList = wiki.getRelinkableTitles();\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(tiddler\n\t\t\t&& !tiddler.fields[\"plugin-type\"]\n\t\t\t&& tiddler.fields.type !== \"application/javascript\") {\n\t\t\t\ttry {\n\t\t\t\t\tvar entries = Object.create(null);\n\t\t\t\t\tfor (var operation in relinkOperations) {\n\t\t\t\t\t\trelinkOperations[operation](tiddler, fromTitle, toTitle, entries, options);\n\t\t\t\t\t}\n\t\t\t\t\tfor (var field in entries) {\n\t\t\t\t\t\t// So long as there is one key,\n\t\t\t\t\t\t// add it to the change list.\n\t\t\t\t\t\tchangeList[title] = entries;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn changeList;\n};\n\nexports.getRelinkableTitles = function() {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\tvar self = this;\n\treturn this.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = self.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\treturn self.compileFilter(tiddler.fields.text);\n\t\t} else {\n\t\t\treturn self.allTitles;\n\t\t}\n\t})();\n};\n\n\nexports.getRelinkConfig = function() {\n\tif (this._relinkConfig === undefined) {\n\t\tvar settings = new Settings(this);\n\t\tvar config = new MacroSettings(this, settings);\n\t\tconfig.import( \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\");\n\t\t// All this below is just wiki.addEventListener, only it\n\t\t// puts the event in front, because we need to refresh our\n\t\t// relink settings before updating tiddlers.\n\t\tthis.eventListeners = this.eventListeners || {};\n\t\tthis.eventListeners.change = this.eventListeners.change || [];\n\t\tthis.eventListeners.change.unshift(function(changes) {\n\t\t\tconfig.refresh(changes);\n\t\t});\n\t\tthis._relinkConfig = config;\n\t}\n\treturn this._relinkConfig;\n};\n",
"module-type": "wikimethod",
"title": "$:/plugins/flibbles/relink/js/wikimethods.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js": {
"text": "/*\\\nmodule-type: allfilteroperator\n\nFilter function for [all[relinkable]].\nReturns all tiddlers subject to relinking.\n\n\\*/\n\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.relinkable = function(source,prefix,options) {\n\treturn options.wiki.getRelinkableTitles();\n};\n\n})();\n",
"module-type": "allfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/all_relinkable.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/impossible.js": {
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nThis filter is meant for internal Relink use only, thus it's\nundocumented and subject to change. Also, it's really not great.\n\nGiven an input of targets, (possibly just one), outputs all the tiddlers in\nwhich Relink would fail to update <<currentTiddler>> to the operand in ALL\ncases.\n\n`[all[tiddlers+system]relink:impossible<toTiddler>]`\n\n\\*/\n\nvar language = require(\"$:/plugins/flibbles/relink/js/language.js\");\n\nexports.impossible = function(source,operator,options) {\n\tvar from = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tvar to = operator.operand,\n\t\tresults = [];\n\tif (from) {\n\t\tvar records = options.wiki.getRelinkReport(\n\t\t\tfrom, to, options);\n\t\tsource(function(tiddler, title) {\n\t\t\tvar fields = records[title];\n\t\t\tif (fields) {\n\t\t\t\tvar impossible = false;\n\t\t\t\tfor (var field in fields) {\n\t\t\t\t\tlanguage.eachImpossible(fields[field], function() {\n\t\t\t\t\t\timpossible = true;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (impossible) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n",
"module-type": "relinkfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/impossible.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/references.js": {
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n\n`relink:references[fromTiddler]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\nAlso, maybe it should properly recon, instead of fake replacing the title with\n`__relink_dummy__`\n\\*/\n\nexports.references = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tvar records = options.wiki.getRelinkReport(\n\t\t\tfromTitle, \"$:/plugins/flibbles/relink/dummy\", options);\n\t\tfor (var title in records) {\n\t\t\tresults.push(title);\n\t\t}\n\t}\n\treturn results;\n};\n",
"module-type": "relinkfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/references.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/relink.js": {
"text": "/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n",
"module-type": "filteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/relink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/report.js": {
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns a string for each occurrence of that title\nwithin each input title.\n\n[[title]] +[relink:report[fromTiddler]]`\n\nReturns string representation of fromTiddler occurrences in title.\n\\*/\n\nexports.report = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [],\n\t\trecords = options.wiki.getRelinkReport(\n\t\t\tfromTitle, fromTitle, options);\n\tif (fromTitle) {\n\t\tsource(function(tiddler, title) {\n\t\t\tvar affectedFields = records[title];\n\t\t\tif (affectedFields) {\n\t\t\t\tfor (var field in affectedFields) {\n\t\t\t\t\tvar entry = affectedFields[field];\n\t\t\t\t\tvar signatures = entry.report();\n\t\t\t\t\tresults = results.concat(signatures);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n",
"module-type": "relinkfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/report.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/signatures.js": {
"text": "/*\\\nmodule-type: relinkfilteroperator\n\nThis filter returns all input tiddlers which are a source of\nrelink configuration.\n\n`[all[tiddlers+system]relink:source[macros]]`\n\n\\*/\n\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\n\nexports.signatures = function(source,operator,options) {\n\tvar plugin = operator.operand || null;\n\tvar set = getSet(options);\n\tif (plugin === \"$:/core\") {\n\t\t// Core doesn't actually have any settings. We mean Relink\n\t\tplugin = \"$:/plugins/flibbles/relink\";\n\t}\n\tvar signatures = [];\n\tfor (var signature in set) {\n\t\tvar source = set[signature].source;\n\t\tif (options.wiki.getShadowSource(source) === plugin) {\n\t\t\tsignatures.push(signature);\n\t\t}\n\t}\n\treturn signatures;\n};\n\nexports.type = function(source,operator,options) {\n\tvar results = [];\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].name);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.types = function(source,operator,options) {\n\tvar def = settings.getDefaultType(options.wiki);\n\tvar types = Object.keys(settings.getTypes());\n\ttypes.sort();\n\t// move default to front\n\ttypes.sort(function(x,y) { return x === def ? -1 : y === def ? 1 : 0; });\n\treturn types;\n};\n\nexports.source = function(source,operator,options) {\n\tvar results = [];\n\tvar category = operator.suffix;\n\tvar set = getSet(options);\n\tsource(function(tiddler, signature) {\n\t\tif (set[signature]) {\n\t\t\tresults.push(set[signature].source);\n\t\t}\n\t});\n\treturn results;\n};\n\nfunction getSet(options) {\n\treturn options.wiki.getGlobalCache(\"relink-signatures\", function() {\n\t\tvar config = options.wiki.getRelinkConfig();\n\t\tvar set = Object.create(null);\n\t\tvar categories = {\n\t\t\tattributes: config.getAttributes(),\n\t\t\tfields: config.getFields(),\n\t\t\tmacros: config.getMacros(),\n\t\t\toperators: config.getOperators()};\n\t\t$tw.utils.each(categories, function(list, category) {\n\t\t\t$tw.utils.each(list, function(item, key) {\n\t\t\t\tset[category + \"/\" + key] = item;\n\t\t\t});\n\t\t});\n\t\treturn set;\n\t});\n};\n",
"module-type": "relinkfilteroperator",
"title": "$:/plugins/flibbles/relink/js/filteroperators/signatures.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/filteroperators/splitafter.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n",
"title": "$:/plugins/flibbles/relink/js/filteroperators/splitafter.js",
"type": "application/javascript",
"module-type": "relinkfilteroperator"
},
"$:/plugins/flibbles/relink/js/fieldtypes/filter.js": {
"text": "/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = \"filter\";\n\nvar FilterEntry = EntryNode.newType(\"filter\");\n\nFilterEntry.prototype.report = function() {\n\treturn this.children.map(function(child) {\n\t\tif (!child.report) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn child.report();\n\t});\n};\n\nfunction OperatorEntry(operandEntry) { this.entry = operandEntry; };\nOperatorEntry.prototype.name = \"operator\";\n\nOperatorEntry.prototype.eachChild = function(method) { method(this.entry); }\n\nOperatorEntry.prototype.report = function() {\n\tvar operand = \"\";\n\tif (this.entry.report) {\n\t\toperand = this.entry.report();\n\t}\n\tvar op = this.operator;\n\tvar brackets = '[]';\n\tif (this.type === \"indirect\") {\n\t\toperand = \"{\" + operand + \"}\";\n\t} else {\n\t\toperand = \"[\" + operand + \"]\";\n\t}\n\tvar suffix = '';\n\tif (op.suffix) {\n\t\tsuffix = \":\" + op.suffix;\n\t}\n\treturn \"[\" + (op.prefix || '') + op.operator + suffix + operand + \"]\";\n};\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tif (!options.settings.survey(filter, fromTitle, options)) {\n\t\treturn undefined;\n\t}\n\tvar filterEntry = new FilterEntry();\n\tvar relinker = new Rebuilder(filter);\n\tvar whitelist = options.settings.getOperators();\n\tvar p = 0, // Current position in the filter string\n\t\tmatch, noPrecedingWordBarrier,\n\t\twordBarrierRequired=false;\n\tvar whitespaceRegExp = /\\s+/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filter.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filter);\n\t\tnoPrecedingWordBarrier = false;\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t} else if (p != 0) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t} else {\n\t\t\t\tnoPrecedingWordBarrier = true;\n\t\t\t}\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filter.length) {\n\t\t\tvar val;\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filter);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\t// It's a bad filter\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(match[1]) { // prefix\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\t// We check if this is a standalone title,\n\t\t\t\t// like `[[MyTitle]]`. We treat those like\n\t\t\t\t// `\"MyTitle\"` or `MyTitle`. Not like a run.\n\t\t\t\tvar standaloneTitle = /\\[\\[([^\\]]+)\\]\\]/g;\n\t\t\t\tstandaloneTitle.lastIndex = p;\n\t\t\t\tvar alone = standaloneTitle.exec(filter);\n\t\t\t\tif (!alone || alone.index != p) {\n\t\t\t\t\t// It's a legit run\n\t\t\t\t\tp =parseFilterOperation(relinker,fromTitle,toTitle,filterEntry,filter,p,whitelist,options);\n\t\t\t\t\tif (p === undefined) {\n\t\t\t\t\t\t// The filter is malformed\n\t\t\t\t\t\t// We do nothing.\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbracketTitle = alone[1];\n\t\t\t\toperandRegExp.lastIndex = standaloneTitle.lastIndex;\n\t\t\t\tval = alone[1];\n\t\t\t} else {\n\t\t\t\t// standalone Double quoted string, single\n\t\t\t\t// quoted string, or noquote ahead.\n\t\t\t\tval = match[3] || match[4] || match[5];\n\t\t\t}\n\t\t\t// From here on, we're dealing with a standalone title\n\t\t\t// expression. like `\"MyTitle\"` or `[[MyTitle]]`\n\t\t\t// We're much more flexible about relinking these.\n\t\t\tvar preference = undefined;\n\t\t\tif (match[3]) {\n\t\t\t\tpreference = '\"';\n\t\t\t} else if (match[4]) {\n\t\t\t\tpreference = \"'\";\n\t\t\t} else if (match[5]) {\n\t\t\t\tpreference = '';\n\t\t\t}\n\t\t\tif (val === fromTitle) {\n\t\t\t\tvar entry = {name: \"title\"};\n\t\t\t\tvar newVal = wrapTitle(toTitle, preference);\n\t\t\t\tif (newVal === undefined) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tfilterEntry.add(entry);\n\t\t\t\t\t\tp = operandRegExp.lastIndex;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVal = \"[<\"+options.placeholder.getPlaceholderFor(toTitle,undefined,options)+\">]\";\n\t\t\t\t}\n\t\t\t\tif (newVal[0] != '[') {\n\t\t\t\t\t// not bracket enclosed\n\t\t\t\t\t// this requires whitespace\n\t\t\t\t\t// arnound it\n\t\t\t\t\tif (noPrecedingWordBarrier && !match[1]) {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\twordBarrierRequired = true;\n\t\t\t\t}\n\t\t\t\tentry.output = toTitle;\n\t\t\t\tentry.operator = {operator: \"title\"};\n\t\t\t\tentry.quotation = preference;\n\t\t\t\tfilterEntry.add(entry);\n\t\t\t\trelinker.add(newVal,p,operandRegExp.lastIndex);\n\t\t\t}\n\t\t\tp = operandRegExp.lastIndex;\n\t\t}\n\t}\n\tif (filterEntry.children.length > 0) {\n\t\tfilterEntry.output = relinker.results();\n\t\treturn filterEntry;\n\t}\n\treturn undefined;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces. (i.e. '{{{...}}}')\n */\nexports.relinkInBraces = function(filter, fromTitle, toTitle, options) {\n\tvar entry = this.relink(filter, fromTitle, toTitle, options);\n\tif (entry && entry.output && !canBeInBraces(entry.output)) {\n\t\t// Although I think we can actually do this one.\n\t\tdelete entry.output;\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\nfunction wrapTitle(value, preference) {\n\tvar choices = {\n\t\t\"\": function(v) {return !/[\\s\\[\\]]/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction parseFilterOperation(relinker, fromTitle, toTitle, logger, filterString, p, whitelist, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = \"!\";\n\t\t\tp++;\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing [ in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tvar entry, type;\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\ttype = \"indirect\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\tentry = refHandler.relinkInBraces(operand, fromTitle, toTitle, options);\n\t\t\t\tif (entry && entry.output) {\n\t\t\t\t\t// We don't check the whitelist.\n\t\t\t\t\t// All indirect operands convert.\n\t\t\t\t\trelinker.add(entry.output,p,nextBracketPos);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\ttype = \"string\";\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(whitelist, operator);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tentry = handler.relink(operand, fromTitle, toTitle, options);\n\t\t\t\tif (!entry) {\n\t\t\t\t\t// The fromTitle wasn't in the operand.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!entry.output) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar wrapped;\n\t\t\t\tif (!canBePrettyOperand(entry.output)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tdelete entry.output;\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output, handler.name, options);\n\t\t\t\t\twrapped = \"<\"+ph+\">\";\n\t\t\t\t} else {\n\t\t\t\t\twrapped = \"[\"+entry.output+\"]\";\n\t\t\t\t}\n\t\t\t\trelinker.add(wrapped, p-1, nextBracketPos+1);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tif (entry) {\n\t\t\tvar operatorEntry = new OperatorEntry(entry);\n\t\t\toperatorEntry.operator = operator;\n\t\t\toperatorEntry.type = type;\n\t\t\tlogger.add(operatorEntry);\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\t// return undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n// Returns the relinker needed for a given operator, or returns undefined.\nfunction fieldType(whitelist, operator) {\n\treturn (operator.suffix &&\n\t whitelist[operator.operator + \":\" + operator.suffix]) ||\n\t whitelist[operator.operator];\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBeInBraces(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/filter.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/list.js": {
"text": "/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nexports.name = \"list\";\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n * types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\tvar entry = {name: \"list\"};\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tentry.impossible = true;\n\t\t} else if (actualList) {\n\t\t\tentry.output = list;\n\t\t} else {\n\t\t\tentry.output = $tw.utils.stringifyList(list);\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/list.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/reference.js": {
"text": "/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nexports.name = \"reference\";\n\nfunction ReferenceEntry(reference) {\n\tthis.reference = reference;\n};\nReferenceEntry.prototype.name = \"reference\";\n\nReferenceEntry.prototype.report = function() {\n\tif (this.reference.field) {\n\t\treturn [\"!!\" + this.reference.field];\n\t}\n\tif (this.reference.index) {\n\t\treturn [\"##\" + this.reference.index];\n\t}\n\treturn [\"\"];\n};\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar entry;\n\tif (value) {\n\t\tvar reference = $tw.utils.parseTextReference(value);\n\t\tif (reference.title === fromTitle) {\n\t\t\tentry = new ReferenceEntry(reference);\n\t\t\tif (!exports.canBePretty(toTitle)) {\n\t\t\t\tentry.impossible = true;\n\t\t\t} else {\n\t\t\t\treference.title = toTitle;\n\t\t\t\tentry.output = exports.toString(reference);\n\t\t\t}\n\t\t}\n\t}\n\treturn entry;\n};\n\n/* Same as this.relink, except this has the added constraint that the return\n * value must be able to be wrapped in curly braces.\n */\nexports.relinkInBraces = function(value, fromTitle, toTitle, options) {\n\tvar log = this.relink(value, fromTitle, toTitle, options);\n\tif (log && log.output && toTitle.indexOf(\"}\") >= 0) {\n\t\tdelete log.output;\n\t\tlog.impossible = true;\n\t}\n\treturn log;\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title) {\n\treturn !title || (title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0);\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/reference.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/title.js": {
"text": "/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n// alpha characters only.\nexports.name = 'title';\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn {name: \"title\", output: toTitle};\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/title.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js": {
"text": "/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\nexports.name = \"wikitext\";\n\nvar type = 'text/vnd.tiddlywiki';\n\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nvar WikitextEntry = EntryNode.newType(\"wikitext\");\n\nfunction collectRules() {\n\tvar rules = Object.create(null);\n\t$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\t\tvar names = exports.name;\n\t\tif (typeof names === \"string\") {\n\t\t\tnames = [names];\n\t\t}\n\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\trules[names[i]] = exports;\n\t\t}\n\t});\n\treturn rules;\n}\n\nfunction WikiRelinker(type, text, fromTitle, toTitle, options) {\n\tthis.entry = new WikitextEntry();\n\tthis.builder = new Rebuilder(text);\n\tthis.options = options;\n\tif (!this.relinkMethodsInjected) {\n\t\tvar rules = collectRules();\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiRelinker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.fromTitle = fromTitle;\n\tthis.toTitle = toTitle;\n\tWikiParser.call(this, type, text, options);\n};\n\nWikiRelinker.prototype = Object.create(WikiParser.prototype);\n\nWikiRelinker.prototype.parsePragmas = function() {\n\twhile (true) {\n\t\tthis.skipWhitespace();\n\t\tif (this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules, this.pos);\n\t\tif (!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\tthis.relinkRule(nextMatch);\n\t}\n\treturn [];\n};\n\nWikiRelinker.prototype.parseInlineRunUnterminated = function(options) {\n\tvar nextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\twhile (this.pos < this.sourceLength && nextMatch) {\n\t\tif (nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\tthis.relinkRule(nextMatch);\n\t\tnextMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t}\n\tthis.pos = this.sourceLength;\n};\n\nWikiRelinker.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\tif (terminatorMatch) {\n\t\t\tif (!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif (options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\t\tif (inlineRuleMatch) {\n\t\t\tif (inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\tthis.relinkRule(inlineRuleMatch);\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules, this.pos);\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\tthis.pos = this.sourceLength;\n\treturn [];\n\n};\n\nWikiRelinker.prototype.parseBlock = function(terminatorRegExp) {\n\tvar terminatorRegExp = /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif (this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\tvar nextMatch = this.findNextMatch(this.blockRules, this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn this.relinkRule(nextMatch);\n\t}\n\treturn this.parseInlineRun(terminatorRegExp);\n};\n\nWikiRelinker.prototype.relinkRule = function(ruleInfo) {\n\tif (ruleInfo.rule.relink) {\n\t\tvar newEntry = ruleInfo.rule.relink(this.source, this.fromTitle, this.toTitle, this.options);\n\t\tif (newEntry !== undefined) {\n\t\t\tthis.entry.add(newEntry);\n\t\t\tif (newEntry.output) {\n\t\t\t\tthis.builder.add(newEntry.output, ruleInfo.matchIndex, this.pos);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (ruleInfo.rule.matchRegExp !== undefined) {\n\t\t\tthis.pos = ruleInfo.rule.matchRegExp.lastIndex;\n\t\t} else {\n\t\t\t// We can't easily determine the end of this\n\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t// the results.\n\t\t\truleInfo.rule.parse();\n\t\t}\n\t}\n};\n\nWikiRelinker.prototype.amendRules = function(type, names) {\n\tvar only;\n\tWikiParser.prototype.amendRules.call(this, type, names);\n\tif (type === \"only\") {\n\t\tonly = true;\n\t} else if (type === \"except\") {\n\t\tonly = false;\n\t} else {\n\t\treturn;\n\t}\n\tif (only !== (names.indexOf(\"macrodef\") >= 0)) {\n\t\tthis.options.placeholder = undefined\n\t}\n\tif (only !== (names.indexOf(\"html\") >= 0)) {\n\t\tthis.options.noWidgets = true;\n\t}\n\tif (only !== (names.indexOf(\"prettylink\") >= 0)) {\n\t\tthis.options.noPrettylinks = true;\n\t}\n};\n\nexports.relink = function(wikitext, fromTitle, toTitle, options) {\n\t// fromTitle doesn't even show up plaintext. No relinking to do.\n\tif (!options.settings.survey(wikitext, fromTitle, options)) {\n\t\treturn undefined;\n\t}\n\tvar matchingRule,\n\t\tnewOptions = $tw.utils.extend({}, options);\n\tnewOptions.settings = options.settings.createChildLibrary(options.currentTiddler);\n\tvar parser = new WikiRelinker(options.type, wikitext, fromTitle, toTitle, newOptions);\n\tif (parser.entry.children.length > 0) {\n\t\tparser.entry.output = parser.builder.results();\n\t\treturn parser.entry;\n\t}\n\treturn undefined;\n};\n",
"module-type": "relinkfieldtype",
"title": "$:/plugins/flibbles/relink/js/fieldtypes/wikitext.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/fields.js": {
"text": "/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nvar FieldEntry = EntryNode.newType(\"field\");\n\nFieldEntry.prototype.report = function() {\n\tvar self = this;\n\tvar output = [];\n\t$tw.utils.each(this.children, function(child) {\n\t\tif (child.report) {\n\t\t\t$tw.utils.each(child.report(), function(report) {\n\t\t\t\tif (report) {\n\t\t\t\t\toutput.push(self.field + \": \" + report);\n\t\t\t\t} else {\n\t\t\t\t\toutput.push(self.field);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\toutput.push(self.field);\n\t\t}\n\t});\n\treturn output;\n};\n\nexports['fields'] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = options.settings.getFields();\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tvar entry = handler.relink(input, fromTitle, toTitle, options);\n\t\tif (entry !== undefined) {\n\t\t\tvar fieldEntry = new FieldEntry();\n\t\t\tfieldEntry.field = field;\n\t\t\tfieldEntry.output = entry.output;\n\t\t\tfieldEntry.add(entry);\n\t\t\tchanges[field] = fieldEntry;\n\t\t}\n\t});\n};\n",
"module-type": "relinkoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/fields.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text.js": {
"text": "/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\n\nvar textOperators = Object.create(null);\n$tw.modules.applyMethods('relinktextoperator', textOperators);\n\n// $:/DefaultTiddlers is a tiddler which has type \"text/vnd.tiddlywiki\",\n// but it lies. It doesn't contain wikitext. It contains a filter, so\n// we pretend it has a filter type.\n// If you want to be able to add more exceptions for your plugin, let me know.\nvar exceptions = {\n\t\"$:/DefaultTiddlers\": \"text/x-tiddler-filter\"\n};\n\nexports['text'] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = tiddler.fields;\n\tif (fields.text) {\n\t\tvar type = exceptions[fields.title] || fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\tvar entry = textOperators[type].call(this, tiddler, fromTitle, toTitle, options);\n\t\t\tif (entry) {\n\t\t\t\tchanges.text = entry;\n\t\t\t}\n\t\t}\n\t}\n};\n",
"module-type": "relinkoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js": {
"text": "/*\\\n\nThis relinks tiddlers which contain filters in their body, as oppose to\nwikitext.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getType('filter');\n\nexports['text/x-tiddler-filter'] = function(tiddler, fromTitle, toTitle, options) {\n\treturn filterHandler.relink(tiddler.fields.text, fromTitle, toTitle, options)\n};\n",
"module-type": "relinktextoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/filtertext.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js": {
"text": "/*\\\n\nChecks for fromTitle in a tiddler's text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar type = 'text/vnd.tiddlywiki';\nvar Placeholder = require(\"$:/plugins/flibbles/relink/js/utils/placeholder.js\");\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar wikitextHandler = settings.getType('wikitext');\n\nexports[type] = function(tiddler, fromTitle, toTitle, options) {\n\tvar placeholder = new Placeholder();\n\tvar currentOptions = $tw.utils.extend(\n\t\t{\n\t\t\tcurrentTiddler: tiddler.fields.title,\n\t\t\tplaceholder: placeholder\n\t\t}, options);\n\tvar entry = wikitextHandler.relink(tiddler.fields.text, fromTitle, toTitle, currentOptions);\n\tif (entry && entry.output) {\n\t\t// If there's output, we've also got to prepend any macros\n\t\t// that the placeholder defined.\n\t\tvar preamble = placeholder.getPreamble();\n\t\tentry.output = preamble + entry.output;\n\t}\n\treturn entry;\n}\n",
"module-type": "relinktextoperator",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles code blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"`` [[Renamed Title]] ``\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"codeinline\", \"codeblock\"];\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar reEnd;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// I'm lazy. This relink method works for both codeblock and codeinline\n\tif (this.match[0].length > 2) {\n\t\t// Must be a codeblock\n\t\treEnd = /\\r?\\n```$/mg;\n\t} else {\n\t\t// Must be a codeinline\n\t\treEnd = new RegExp(this.match[1], \"mg\");\n\t}\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(text);\n\tif (match) {\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn undefined;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/code.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"<!-- [[Renamed Title]] -->\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getType('filter');\nvar utils = require(\"./utils.js\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nvar FilteredTranscludeEntry = EntryNode.newType(\"filteredtransclude\");\n\nFilteredTranscludeEntry.prototype.report = function() {\n\tvar output = [];\n\tvar self = this;\n\t$tw.utils.each(this.children, function(child) {\n\t\tif (child.name === \"filter\") {\n\t\t\tvar append = \"}}}\";\n\t\t\tif (self.template) {\n\t\t\t\tappend = \"||\" + self.template + append;\n\t\t\t}\n\t\t\t$tw.utils.each(child.report(), function(report) {\n\t\t\t\toutput.push(\"{{{\" + report + append);\n\t\t\t});\n\t\t} else {\n\t\t\t// Must be the template\n\t\t\toutput.push(\"{{{\" + self.filter + \"||}}}\");\n\t\t}\n\t});\n\treturn output;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match;\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tentry = new FilteredTranscludeEntry();\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\n\tvar filterEntry = filterHandler.relink(filter, fromTitle, toTitle, options);\n\tif (filterEntry !== undefined) {\n\t\tentry.add(filterEntry);\n\t\tif (filterEntry.output) {\n\t\t\tmodified = true;\n\t\t\tfilter = filterEntry.output;\n\t\t}\n\t}\n\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tentry.add({name: \"title\", output: template});\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\tif (entry.children.length <= 0) {\n\t\t\treturn undefined;\n\t\t}\n\t} else {\n\t\tvar output = this.makeFilteredtransclude(filter, tooltip, template, style, classes, options);\n\t\tif (output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t} else {\n\t\t\t// By copying over the ending newline of the original\n\t\t\t// text if present, thisrelink method thus works for\n\t\t\t// both the inline and block rule\n\t\t\tentry.output = output + utils.getEndingNewline(m[0]);\n\t\t}\n\t\tentry.filter = filter;\n\t}\n\tentry.template = template;\n\treturn entry;\n};\n\nexports.makeFilteredtransclude = function(filter, tooltip, template, style, classes, options) {\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t} else if (!options.noWidgets) {\n\t\treturn widget(filter, tooltip, template, style, classes, options);\n\t}\n\treturn undefined;\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n\n/** Returns a filtered transclude as a string of a widget.\n */\nfunction widget(filter, tooltip, template, style, classes, options) {\n\tvar cannotDo = false;\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\tfunction wrap(name, value, treatAsTitle) {\n\t\tif (!value) {\n\t\t\treturn '';\n\t\t}\n\t\tvar wrappedValue = utils.wrapAttributeValue(value);\n\t\tif (wrappedValue === undefined) {\n\t\t\tif (!options.placeholder) {\n\t\t\t\tcannotDo = true;\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tvar category = treatAsTitle ? undefined : name;\n\t\t\twrappedValue = \"<<\"+options.placeholder.getPlaceholderFor(value,category,options)+\">>\";\n\t\t}\n\t\treturn \" \"+name+\"=\"+wrappedValue;\n\t};\n\tvar widget = [\n\t\t\"<$list\",\n\t\twrap(\"filter\", filter),\n\t\twrap(\"tooltip\", tooltip),\n\t\twrap(\"template\", template, true),\n\t\twrap(\"style\", style),\n\t\twrap(\"itemClass\", classes),\n\t\t\"/>\"\n\t];\n\tif (cannotDo) {\n\t\treturn undefined;\n\t}\n\treturn widget.join('');\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar refHandler = settings.getType('reference');\nvar filterHandler = settings.getType('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = \"html\";\n\nvar HtmlEntry = EntryNode.newCollection(\"html\");\n\nHtmlEntry.prototype.forEachChildReport = function(report, attribute, type) {\n\tvar rtn = attribute;\n\tif (type === \"filtered\") {\n\t\trtn += \"={{{\" + report + \"}}}\";\n\t} else if (type === \"indirect\") {\n\t\trtn += \"={{\" + report + \"}}\";\n\t} else if (type === \"macro\") {\n\t\trtn += \"=\"+report;\n\t} else{\n\t\t// must be string.\n\t\tif (report.length > 0) {\n\t\t\trtn += '=\"' + report + '\"';\n\t\t}\n\t}\n\treturn \"<\" + this.element + \" \" + rtn + \" />\";\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar managedElement = options.settings.getAttribute(this.nextTag.tag),\n\t\tbuilder = new Rebuilder(text, this.nextTag.start);\n\tvar importFilterAttr;\n\tvar widgetEntry = new HtmlEntry();\n\twidgetEntry.attributes = Object.create(null);\n\twidgetEntry.element = this.nextTag.tag;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldLength, quotedValue = undefined, entry;\n\t\tif (attr.type === \"string\") {\n\t\t\tvar handler = getAttributeHandler(this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tentry = handler.relink(attr.value, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (entry.output) {\n\t\t\t\tvar quote = utils.determineQuote(text, attr);\n\t\t\t\toldLength = attr.value.length + (quote.length * 2);\n\t\t\t\tquotedValue = utils.wrapAttributeValue(entry.output,quote);\n\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t\t// a macro in order to replace it.\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\t// but we can't...\n\t\t\t\t\t\tentry.impossible = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar value = options.placeholder.getPlaceholderFor(entry.output,handler.name,options)\n\t\t\t\t\t\tquotedValue = \"<<\"+value+\">>\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (attr.type === \"indirect\") {\n\t\t\tentry = refHandler.relinkInBraces(attr.textReference, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!entry.impossible) {\n\t\t\t\t// +4 for '{{' and '}}'\n\t\t\t\toldLength = attr.textReference.length + 4;\n\t\t\t\tquotedValue = \"{{\"+entry.output+\"}}\";\n\t\t\t}\n\t\t} else if (attr.type === \"filtered\") {\n\t\t\tentry = filterHandler.relinkInBraces(attr.filter, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!entry.impossible) {\n\t\t\t\t// +6 for '{{{' and '}}}'\n\t\t\t\toldLength = attr.filter.length + 6;\n\t\t\t\tquotedValue = \"{{{\"+ entry.output +\"}}}\";\n\t\t\t}\n\t\t} else if (attr.type === \"macro\") {\n\t\t\tvar macro = attr.value;\n\t\t\tentry = macrocall.relinkAttribute(macro, text, fromTitle, toTitle, options);\n\t\t\tif (entry === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!entry.impossible) {\n\t\t\t\t// already includes '<<' and '>>'\n\t\t\t\toldLength = macro.end-macro.start;\n\t\t\t\tquotedValue = entry.output;\n\t\t\t}\n\t\t}\n\t\twidgetEntry.addChild(entry, attributeName, attr.type);\n\t\tif (quotedValue === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\t// If this is an import variable filter, we gotta\n\t\t\t// remember this new value when we import lower down.\n\t\t\timportFilterAttr = quotedValue;\n\t\t}\n\t\t// We count backwards from the end to preserve whitespace\n\t\tvar valueStart = attr.end - oldLength;\n\t\tbuilder.add(quotedValue, valueStart, attr.end);\n\t}\n\tif (importFilterAttr) {\n\t\tprocessImportFilter(importFilterAttr, options);\n\t}\n\tthis.parser.pos = this.nextTag.end;\n\tif (widgetEntry.hasChildren()) {\n\t\twidgetEntry.output = builder.results(this.nextTag.end);\n\t\treturn widgetEntry;\n\t}\n\treturn undefined;\n};\n\n/** Returns the field handler for the given attribute of the given widget.\n * If this returns undefined, it means we don't handle it. So skip.\n */\nfunction getAttributeHandler(widget, attributeName, options) {\n\tif (widget.tag === \"$macrocall\") {\n\t\tvar nameAttr = widget.attributes[\"$name\"];\n\t\tif (nameAttr) {\n\t\t\tvar macro = options.settings.getMacro(nameAttr.value);\n\t\t\tif (macro) {\n\t\t\t\treturn macro[attributeName];\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvar element = options.settings.getAttribute(widget.tag);\n\t\tif (element) {\n\t\t\treturn element[attributeName];\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction computeAttribute(attribute, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = options.settings.getVariableWidget();\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = options.settings.getVariableWidget();\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = options.settings.getVariableWidget();\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n\n// This processes a <$importvariables> filter attribute and adds any new\n// variables to our parser.\nfunction processImportFilter(importAttribute, options) {\n\tif (typeof importAttribute === \"string\") {\n\t\t// It was changed. Reparse it. It'll be a quoted\n\t\t// attribute value. Add a dummy attribute name.\n\t\timportAttribute = $tw.utils.parseAttribute(\"p=\"+importAttribute, 0)\n\t}\n\tvar importFilter = computeAttribute(importAttribute, options);\n\toptions.settings.import(importFilter);\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[img[tiddler.jpg]]\n\n[img width=23 height=24 [Description|tiddler.jpg]]\n\n\\*/\n\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getType('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar utils = require(\"./utils.js\");\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = \"image\";\n\nvar ImageEntry = EntryNode.newCollection(\"image\");\n\nImageEntry.prototype.forEachChildReport = function(report, attribute, type) {\n\tvar value;\n\tif (attribute === \"source\") {\n\t\tif (this.tooltip) {\n\t\t\tvalue = \"[img[\" + this.tooltip.value + \"]]\";\n\t\t} else {\n\t\t\tvalue = \"[img[]]\";\n\t\t}\n\t} else {\n\t\tif (type === \"indirect\") {\n\t\t\tvalue = \"{{\" + report + \"}}\";\n\t\t} else if (type === \"filtered\") {\n\t\t\tvalue = \"{{{\" + report + \"}}}\";\n\t\t} else if (type === \"macro\") {\n\t\t\t// angle brackets already added...\n\t\t\tvalue = report;\n\t\t}\n\t\tvalue = \"[img \" + attribute + \"=\"+ value + \"]\";\n\t}\n\treturn value;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar ptr = this.nextImage.start;\n\tvar builder = new Rebuilder(text, ptr);\n\tvar makeWidget = false;\n\tvar skipSource = false;\n\tvar imageEntry = new ImageEntry();\n\timageEntry.attributes = Object.create(null);\n\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\n\t\tif (!options.noWidgets && (utils.wrapAttributeValue(toTitle) || options.placeholder)) {\n\t\t\tmakeWidget = true;\n\t\t\tbuilder.add(\"<$image\", ptr, ptr+4);\n\t\t} else {\n\t\t\t// We won't be able to make a placeholder to replace\n\t\t\t// the source attribute. We check now so we don't\n\t\t\t// prematurely convert into a widget.\n\t\t\t// Keep going in case other attributes need replacing.\n\t\t\tskipSource = true;\n\t\t}\n\t}\n\tptr += 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tif (makeWidget) {\n\t\t\t\tif (\" \\t\\n\".indexOf(text[ptr-1]) >= 0) {\n\t\t\t\t\tbuilder.add('', ptr, ptr+1);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(' ', ptr, ptr+1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tif (attr.value === fromTitle) {\n\t\t\t\tvar entry = {name: \"title\"};\n\t\t\t\tif (makeWidget) {\n\t\t\t\t\tvar quotedValue = utils.wrapAttributeValue(toTitle);\n\t\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t\tvar key = options.placeholder.getPlaceholderFor(toTitle, undefined, options);\n\t\t\t\t\t\tbuilder.add(\"source=<<\"+key+\">>\", ptr, ptr+fromTitle.length);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder.add(\"source=\"+quotedValue, ptr, ptr+fromTitle.length);\n\t\t\t\t\t}\n\t\t\t\t} else if (!skipSource) {\n\t\t\t\t\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\n\t\t\t\t} else {\n\t\t\t\t\tentry.impossible = true;\n\t\t\t\t}\n\t\t\t\timageEntry.addChild(entry, attributeName, \"string\");\n\t\t\t}\n\t\t\tptr = text.indexOf(']]', ptr);\n\t\t\tif (makeWidget) {\n\t\t\t\tbuilder.add(\"/>\", ptr, ptr+2);\n\t\t\t}\n\t\t\tptr += 2;\n\t\t} else if (attributeName === \"tooltip\") {\n\t\t\tif (makeWidget) {\n\t\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\t\tvar quotedValue = utils.wrapAttributeValue(attr.value);\n\t\t\t\tbuilder.add(\"tooltip=\"+quotedValue, ptr, ptr+attr.value.length);\n\t\t\t}\n\t\t\timageEntry.tooltip = this.nextImage.attributes.tooltip;\n\t\t} else {\n\t\t\tptr = relinkAttribute(attr, builder, fromTitle, toTitle, imageEntry, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n\tif (imageEntry.hasChildren()) {\n\t\timageEntry.output = builder.results(ptr);\n\t\treturn imageEntry;\n\t}\n\treturn undefined;\n};\n\nfunction relinkAttribute(attribute, builder, fromTitle, toTitle, entry, options) {\n\tvar text = builder.text;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tvar end;\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tend = ptr + quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\tvar ref = refHandler.relinkInBraces(attribute.textReference, fromTitle, toTitle, options);\n\t\tif (ref) {\n\t\t\tentry.addChild(ref, attribute.name, \"indirect\");\n\t\t\tif (ref.output) {\n\t\t\t\tbuilder.add(\"{{\"+ref.output+\"}}\", ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tvar filter = filterHandler.relinkInBraces(attribute.filter, fromTitle, toTitle, options);\n\t\tif (filter !== undefined) {\n\t\t\tentry.addChild(filter, attribute.name, \"filtered\");\n\t\t\tif (filter.output) {\n\t\t\t\tvar quoted = \"{{{\"+filter.output+\"}}}\";\n\t\t\t\tbuilder.add(quoted, ptr, end);\n\t\t\t}\n\t\t}\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tvar macroEntry = macrocall.relinkAttribute(macro, text, fromTitle, toTitle, options);\n\t\tif (macroEntry !== undefined) {\n\t\t\tentry.addChild(macroEntry, attribute.name, \"macro\");\n\t\t\tif (macroEntry.output) {\n\t\t\t\tbuilder.add(macroEntry.output, ptr, end);\n\t\t\t}\n\t\t}\n\t}\n\treturn end;\n};\n\nfunction canBePretty(title, tooltip) {\n\treturn title.indexOf(']') < 0 && (tooltip || title.indexOf('|') < 0);\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar settings = require(\"$:/plugins/flibbles/relink/js/settings.js\");\nvar filterRelinker = settings.getType('filter');\n\nexports.name = \"import\";\n\nfunction ImportEntry(filterEntry) {\n\tthis.filter = filterEntry;\n};\nImportEntry.prototype.name = \"import\";\nImportEntry.prototype.eachChild = function(block) { return block(this.filter);};\nImportEntry.prototype.report = function() {\n\treturn this.filter.report().map(function(report) {\n\t\tif (report.length > 0) {\n\t\t\treturn \"\\\\import \" + report;\n\t\t} else {\n\t\t\treturn \"\\\\import\";\n\t\t}\n\t});\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex;\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value;\n\tvar entry = undefined;\n\tvar filterEntry = filterRelinker.relink(filter, fromTitle, toTitle, options);\n\tif (filterEntry !== undefined) {\n\t\tentry = new ImportEntry(filterEntry);\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tif (filterEntry.output) {\n\t\t\tfilter = filterEntry.output;\n\t\t\tentry.output = \"\\\\import \" + filter + newline;\n\t\t}\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for, and any /relink pragma\n\toptions.settings.import(filter);\n\n\treturn entry;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<<myMacro '[[MyFilter]]' 'myTitle'>>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar EntryNode = require('$:/plugins/flibbles/relink/js/utils/entry');\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\n// Error thrown when a macro's definition is needed, but can't be found.\nfunction CannotFindMacroDef() {};\nCannotFindMacroDef.prototype.impossible = true;\nCannotFindMacroDef.prototype.name = \"macroparam\";\n// Failed relinks due to missing definitions aren't reported for now.\n// I may want to do something special later on.\nCannotFindMacroDef.prototype.report = function() { return []; };\n\nvar MacrocallEntry = EntryNode.newCollection(\"macrocall\");\n\nMacrocallEntry.prototype.forEachChildReport = function(report, parameter, type) {\n\tvar rtn;\n\tif (report.length > 0) {\n\t\trtn = parameter + ': \"' + report + '\"';\n\t} else {\n\t\trtn = parameter;\n\t}\n\treturn \"<<\" + this.macro + \" \" + rtn + \">>\";\n};\n\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2],\n\t\tmacroText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (!options.settings.survey(macroText, fromTitle, options)) {\n\t\treturn undefined;\n\t}\n\tvar start = this.matchRegExp.lastIndex - this.match[0].length;\n\tvar managedMacro = options.settings.getMacro(macroName);\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar offset = macroName.length+2;\n\toffset = $tw.utils.skipWhiteSpace(macroText, offset);\n\tvar params = parseParams(paramString, offset+start);\n\tvar macroInfo = {\n\t\tname: macroName,\n\t\tstart: start,\n\t\tend: this.matchRegExp.lastIndex,\n\t\tparams: params\n\t};\n\tvar mayBeWidget = !options.noWidgets;\n\tvar names = getParamNames(macroInfo.name, macroInfo.params, options);\n\tif (names === undefined) {\n\t\t// Needed the definition, and couldn't find it. So if a single\n\t\t// parameter needs to placeholder, just fail.\n\t\tmayBeWidget = false;\n\t}\n\tvar entry = relinkMacroInvocation(macroInfo, text, fromTitle, toTitle, mayBeWidget, options);\n\tif (entry && entry.output) {\n\t\tentry.output =macroToString(entry.output, text, names, options);\n\t}\n\treturn entry;\n};\n\n/** Relinks macros that occur as attributes, like <$element attr=<<...>> />\n * Processes the same, except it can't downgrade into a widget if the title\n * is complicated.\n */\nexports.relinkAttribute = function(macro, text, fromTitle, toTitle, options) {\n\tvar entry = relinkMacroInvocation(macro, text, fromTitle, toTitle, false, options);\n\tif (entry && entry.output) {\n\t\tentry.output = macroToStringMacro(entry.output, text, options);\n\t}\n\treturn entry;\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n * Output of the returned entry isn't a string, but a macro object. It needs\n * to be converted.\n */\nfunction relinkMacroInvocation(macro, text, fromTitle, toTitle, mayBeWidget, options) {\n\tvar managedMacro = options.settings.getMacro(macro.name);\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tif (macro.params.every(function(p) {\n\t\treturn !options.settings.survey(p.value, fromTitle, options);\n\t})) {\n\t\t// We cut early if the fromTitle doesn't even appear\n\t\t// anywhere in the title. This is to avoid any headache\n\t\t// about finding macro definitions (and any resulting\n\t\t// exceptions if there isn't even a title to replace.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\tvar macroEntry = new MacrocallEntry();\n\tmacroEntry.parameters = Object.create(null);\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index;\n\t\ttry {\n\t\t\tindex = getParamIndexWithinMacrocall(macro.name, managedArg, macro.params, options);\n\t\t} catch (e) {\n\t\t\tif (e instanceof CannotFindMacroDef) {\n\t\t\t\tmacroEntry.addChild(e);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar entry = handler.relink(param.value, fromTitle, toTitle, options);\n\t\tif (entry === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Macro parameters can only be string parameters, not\n\t\t// indirect, or macro, or filtered\n\t\tmacroEntry.addChild(entry, managedArg, \"string\");\n\t\tif (!entry.output) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = utils.wrapParameterValue(entry.output, quote);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tif (!mayBeWidget || !options.placeholder) {\n\t\t\t\tentry.impossible = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar ph = options.placeholder.getPlaceholderFor(entry.output,handler.name, options);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = entry.output;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (macroEntry.hasChildren()) {\n\t\tmacroEntry.macro = macro.name;\n\t\tif (modified) {\n\t\t\tmacroEntry.output = outMacro;\n\t\t}\n\t\treturn macroEntry;\n\t}\n\treturn undefined;\n};\n\nfunction mustBeAWidget(macro) {\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tif (macro.params[i].type === \"macro\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false\n};\n\n/**Given a macro object ({name:, params:, start: end:}), and the text where\n * it was parsed from, returns a new macro that maintains any syntactic\n * structuring.\n */\nfunction macroToString(macro, text, names, options) {\n\tif (mustBeAWidget(macro)) {\n\t\tvar attrs = [];\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar p = macro.params[i];\n\t\t\tvar val;\n\t\t\tif (p.newValue) {\n\t\t\t\tval = p.newValue;\n\t\t\t} else {\n\t\t\t\tval = utils.wrapAttributeValue(p.value);\n\t\t\t}\n\t\t\tattrs.push(\" \"+names[i]+\"=\"+val);\n\t\t}\n\t\treturn \"<$macrocall $name=\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\"/>\";\n\t} else {\n\t\treturn macroToStringMacro(macro, text, options);\n\t}\n};\n\nfunction macroToStringMacro(macro, text, options) {\n\tvar builder = new Rebuilder(text, macro.start);\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tvar param = macro.params[i];\n\t\tif (param.newValue) {\n\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t}\n\t}\n\treturn builder.results(macro.end);\n};\n\n/** Returns -1 if param definitely isn't in macrocall.\n */\nfunction getParamIndexWithinMacrocall(macroName, param, params, options) {\n\tvar index, i, anonsExist = false;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name === param) {\n\t\t\treturn i;\n\t\t}\n\t\tif (name === undefined) {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (!anonsExist) {\n\t\t// If no anonymous parameters are present, and we didn't find\n\t\t// it among the named ones, it must not be there.\n\t\treturn -1;\n\t}\n\tvar expectedIndex = indexOfParameterDef(macroName, param, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(macroName, params[i].name, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(macroName, paramName, options) {\n\tvar def = options.settings.getMacroDefinition(macroName);\n\tif (def === undefined) {\n\t\tthrow new CannotFindMacroDef();\n\t}\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nfunction getParamNames(macroName, params, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar def = options.settings.getMacroDefinition(macroName);\n\t\tif (def === undefined) {\n\t\t\t// If there are anonymous parameters, and we can't\n\t\t\t// find the definition, then we can't hope to create\n\t\t\t// a widget.\n\t\t\treturn undefined;\n\t\t}\n\t\tvar defParams = def.params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar settings = require(\"$:/plugins/flibbles/relink/js/settings\");\n\nexports.name = \"macrodef\";\n\nfunction MacrodefEntry(macroName, bodyEntry) {\n\tthis.macro = macroName;\n\tthis.body = bodyEntry;\n};\nMacrodefEntry.prototype.name = \"macrodef\";\nMacrodefEntry.prototype.eachChild = function(block) { return block(this.body);};\nMacrodefEntry.prototype.report = function() {\n\tvar macroStr = \"\\\\define \" + this.macro + \"()\";\n\tif (this.body.report) {\n\t\treturn this.body.report().map(function(report) {\n\t\t\treturn macroStr + \" \" + report;\n\t\t});\n\t} else {\n\t\treturn [macroStr];\n\t}\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse(),\n\t\tmacroEntry,\n\t\tm = this.match,\n\t\twhitespace;\n\toptions.settings.addMacroDefinition(setParseTreeNode[0]);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// m[3] means it's a multiline macrodef\n\tif (m[3]) {\n\t\tvalueRegExp = /\\r?\\n\\\\end[^\\S\\n\\r]*(?:\\r?\\n|$)/mg;\n\t\twhitespace = '';\n\t} else {\n\t\tvar newPos = $tw.utils.skipWhiteSpace(text, this.parser.pos);\n\t\tvalueRegExp = /(?:\\r?\\n|$)/mg;\n\t\twhitespace = text.substring(this.parser.pos, newPos);\n\t\tthis.parser.pos = newPos;\n\t}\n\tvar valueRegExp;\n\tvalueRegExp.lastIndex = this.parser.pos;\n\tvar match = valueRegExp.exec(text);\n\tif (match) {\n\t\tvar value = text.substring(this.parser.pos, match.index),\n\t\t\tplaceholder = /^relink-(?:(\\w+)-)?(\\d+)$/.exec(m[1]),\n\t\t// normal macro or special placeholder?\n\t\t\ttype = (placeholder && m[2] === '')? placeholder[1] || 'title' : 'wikitext',\n\t\t\thandler = settings.getType(type);\n\t\tif (handler) {\n\t\t\tvar entry = handler.relink(value, fromTitle, toTitle, options);\n\t\t}\n\t\tif (entry !== undefined) {\n\t\t\tmacroEntry = new MacrodefEntry(m[1], entry);\n\t\t\tif (entry.output) {\n\t\t\t\tmacroEntry.output = m[0] + whitespace + entry.output + match[0];\n\t\t\t}\n\t\t}\n\t\tthis.parser.pos = match.index + match[0].length;\n\t}\n\treturn macroEntry;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar utils = require(\"./utils.js\");\n\nfunction PrettyLinkEntry() {};\nPrettyLinkEntry.prototype.name = \"prettylink\";\nPrettyLinkEntry.prototype.report = function() {\n\treturn [\"[[\" + (this.caption || this.link) + \"]]\"];\n};\n\nexports.name = \"prettylink\";\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar entry = new PrettyLinkEntry();\n\tentry.caption = caption;\n\tentry.link = toTitle;\n\tentry.output = this.makeLink(toTitle, caption, options);\n\tif (entry.output === undefined) {\n\t\tentry.impossible = true;\n\t}\n\treturn entry;\n};\n\nexports.makeLink = function(tiddler, caption, options) {\n\tvar output, quoted;\n\tif (!options.noPrettylinks && this.canBePretty(tiddler, !!caption)) {\n\t\toutput = prettyLink(tiddler, caption);\n\t} else if (options.noWidgets) {\n\t\t// We aren't allowed to make widgets. Gotta fail.\n\t\toutput = undefined;\n\t} else if (caption === undefined) {\n\t\tif (exports.shorthandSupported(options)) {\n\t\t\tquoted = utils.wrapAttributeValue(tiddler);\n\t\t\tif (!quoted) {\n\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tquoted = \"<<\" + options.placeholder.getPlaceholderFor(tiddler,undefined,options) + \">>\";\n\t\t\t}\n\t\t\toutput = \"<$link to=\"+quoted+\"/>\";\n\t\t} else {\n\t\t\t// If we don't have a caption, we must resort to\n\t\t\t// placeholders anyway to prevent link/caption desync\n\t\t\t// from later relinks.\n\t\t\t// It doesn't matter whether the tiddler is quotable.\n\t\t\tif (options.placeholder) {\n\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(tiddler, undefined, options);\n\t\t\t\toutput = \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t\t\t}\n\t\t}\n\t} else if (quoted = utils.wrapAttributeValue(tiddler)) {\n\t\tvar safeCaption = sanitizeCaption(caption, options);\n\t\tif (safeCaption !== undefined) {\n\t\t\toutput = \"<$link to=\"+quoted+\">\"+safeCaption+\"</$link>\";\n\t\t}\n\t} else if (options.placeholder) {\n\t\tvar ph = options.placeholder.getPlaceholderFor(tiddler, undefined, options);\n\t\t// We don't test if caption is undefined here, because it\n\t\t// never will be. options.placeholder exists.\n\t\tvar safeCaption = sanitizeCaption(caption, options);\n\t\toutput = \"<$link to=<<\"+ph+\">>>\"+safeCaption+\"</$link>\";\n\t}\n\treturn output;\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nexports.canBePretty = function(value, customCaption) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']' && (customCaption || value.indexOf('|') < 0);\n};\n\n/**In version 5.1.20, Tiddlywiki made it so <$link to\"something\" /> would\n * use \"something\" as a caption. This is preferable. However, Relink works\n * going back to 5.1.14, so we need to have different handling for both\n * cases.\n */\nvar _supported;\nexports.shorthandSupported = function(options) {\n\tif (_supported === undefined) {\n\t\tvar test = options.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", \"<$link to=test/>\");\n\t\t_supported = (test === \"test\");\n\t}\n\treturn _supported;\n};\n\nfunction sanitizeCaption(caption, options) {\n\tvar plaintext = options.wiki.renderText(\"text/plain\", \"text/vnd.tiddlywiki\", caption);\n\tif (plaintext === caption && caption.indexOf(\"</$link>\") <= 0) {\n\t\treturn caption;\n\t} else {\n\t\tvar wrapped = utils.wrapAttributeValue(caption);\n\t\tif (wrapped) {\n\t\t\treturn \"<$text text=\"+wrapped+\"/>\";\n\t\t} else if (options.placeholder) {\n\t\t\tvar ph = options.placeholder.getPlaceholderFor(caption, \"caption\", options);\n\t\t\treturn \"<$text text=<<\"+ph+\">>/>\";\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}\n};\n\nfunction prettyLink(title, caption) {\n\tif (caption) {\n\t\treturn \"[[\" + caption + \"|\" + title + \"]]\";\n\t} else {\n\t\treturn \"[[\" + title + \"]]\";\n\t}\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js": {
"text": "/*\\\nmodule-type: wikirule\n\nThis defines the \\relink inline pragma used to locally declare\nrelink rules for macros.\n\nIt takes care of providing its own relink and report rules.\n\n\\*/\n\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"relink\";\nexports.types = {pragma: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /^\\\\relink[^\\S\\n]+([^(\\s]+)([^\\r\\n]*)(\\r?\\n)?/mg;\n};\n\n/**This makes the widget that the macro library will later parse to determine\n * new macro relink state.\n *\n * It's a <$set> widget so it can appear BEFORE \\define pragma and not\n * prevent that pragma from being scooped up by importvariables.\n * (importvariables stops scooping as soon as it sees something besides $set) */\nexports.parse = function() {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar macroName;\n\tvar macroParams = Object.create(null);\n\tvar error = undefined;\n\tvar rtn = [];\n\tvar self = this;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\tmacroName = macro;\n\t\tif (type && !settings.getType(type)) {\n\t\t\terror = language.getString(\"Error/UnrecognizedType\",\n\t\t\t\t{variables: {type: type}, wiki: self.parser.wiki});\n\t\t}\n\t\tmacroParams[parameter] = type;\n\t});\n\t// If no macroname. Return nothing, this rule will be ignored by parsers\n\tif (macroName) {\n\t\tvar relink = Object.create(null);\n\t\trelink[macroName] = macroParams;\n\t\trtn.push({\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: \"\"}\n\t\t\t},\n\t\t\tchildren: [],\n\t\t\tisMacroDefinition: true,\n\t\t\trelink: relink});\n\t}\n\tif (error) {\n\t\trtn.push({\n\t\t\ttype: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tc-error tc-relink-error\"\n\t\t\t\t}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: error}\n\t\t\t]});\n\t}\n\treturn rtn;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar self = this;\n\tthis.interpretSettings(function(macro, parameter, type) {\n\t\toptions.settings.addSetting(macro, parameter, type, options.currentTiddler);\n\t});\n\t// Return nothing, because this rule is ignored by the parser\n\treturn undefined;\n};\n\nexports.interpretSettings = function(block) {\n\tvar paramString = this.match[2];\n\tif (paramString !== \"\") {\n\t\tvar macro = this.match[1];\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*([^\\s]+))?/mg;\n\t\tvar paramMatch = reParam.exec(paramString);\n\t\twhile (paramMatch) {\n\t\t\tvar parameter = paramMatch[1];\n\t\t\tvar type = paramMatch[2];\n\t\t\tblock(macro, parameter, type);\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n};\n",
"module-type": "wikirule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/relink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() {\n\tthis.parse();\n\treturn undefined;\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles sys links\n\n$:/sys/link\n\nbut not:\n\n~$:/sys/link\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar prettylink = require('$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js');\n\nexports.name = \"syslink\";\n\nfunction SyslinkEntry() {};\nSyslinkEntry.prototype.name = \"syslink\";\nSyslinkEntry.prototype.report = function() {\n\treturn [\"~\" + this.link];\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== \"~\") {\n\t\tentry = new SyslinkEntry();\n\t\tentry.link = fromTitle;\n\t\tentry.output = this.makeSyslink(toTitle, options);\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeSyslink = function(title, options) {\n\tvar match = title.match(this.matchRegExp);\n\tif (match && match[0] === title && title[0] !== \"~\") {\n\t\treturn title;\n\t} else {\n\t\treturn prettylink.makeLink(title, undefined, options);\n\t}\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/syslink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nvar TranscludeEntry = function() {};\nTranscludeEntry.prototype.name = \"transclude\";\nTranscludeEntry.prototype.report = function() {\n\tvar ref = this.reference || {};\n\tvar output = [];\n\tif (this.referenceChanged) {\n\t\tvar suffix = \"\";\n\t\tif (ref.field) {\n\t\t\tsuffix = \"!!\" + ref.field;\n\t\t}\n\t\tif (ref.index) {\n\t\t\tsuffix = \"##\" + ref.index;\n\t\t}\n\t\tif (this.template) {\n\t\t\tsuffix = suffix + \"||\" + this.template;\n\t\t}\n\t\toutput.push(\"{{\" + suffix + \"}}\");\n\t}\n\tif (this.templateChanged) {\n\t\t// Must be template\n\t\tvar refString = refHandler.toString(ref);\n\t\toutput.push(\"{{\" + refString + \"||}}\");\n\t}\n\treturn output;\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = $tw.utils.parseTextReference(m[1]),\n\t\ttemplate = m[2],\n\t\tentry = new TranscludeEntry(),\n\t\tmodified = false;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif ($tw.utils.trim(reference.title) === fromTitle) {\n\t\t// preserve user's whitespace\n\t\treference.title = reference.title.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t\tentry.referenceChanged = true;\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t\tentry.templateChanged = true;\n\t}\n\tif (modified) {\n\t\tentry.reference = reference;\n\t\tentry.template = template;\n\t\tvar output = this.makeTransclude(reference, template, options);\n\t\tif (output) {\n\t\t\t// Adding any newline that might have existed is\n\t\t\t// what allows this relink method to work for both\n\t\t\t// the block and inline filter wikitext rule.\n\t\t\toutput = output + utils.getEndingNewline(m[0]);\n\t\t\tentry.output = output;\n\t\t} else {\n\t\t\tentry.impossible = true;\n\t\t}\n\t\treturn entry;\n\t}\n\treturn undefined;\n};\n\n/** This converts a reference and a template into a string representation\n * of a transclude.\n */\nexports.makeTransclude = function(reference, template, options) {\n\tvar rtn;\n\tif (!canBePrettyTemplate(template)) {\n\t\tif (!options.noWidgets) {\n\t\t\tvar resultTemplate = wrap(template, options);\n\t\t\tif (resultTemplate !== undefined) {\n\t\t\t\tif (reference.title) {\n\t\t\t\t\tvar resultTitle = wrap(reference.title, options);\n\t\t\t\t\tvar attrs = transcludeAttributes(reference.field, reference.index, options);\n\t\t\t\t\tif (resultTitle !== undefined && attrs !== undefined) {\n\t\t\t\t\t\trtn = \"<$tiddler tiddler=\"+resultTitle+\"><$transclude tiddler=\"+resultTemplate+attrs+\"/></$tiddler>\";\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trtn = \"<$transclude tiddler=\"+resultTemplate+\"/>\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (!canBePrettyTitle(reference.title)) {\n\t\tif (!options.noWidgets) {\n\t\t\t// This block and the next account for the 1%...\n\t\t\tvar resultTitle = wrap(reference.title, options);\n\t\t\tif (resultTitle !== undefined) {\n\t\t\t\tvar reducedRef = {field: reference.field, index: reference.index};\n\t\t\t\trtn = \"<$tiddler tiddler=\"+resultTitle+\">\"+prettyTransclude(reducedRef, template)+\"</$tiddler>\";\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// This block takes care of 99% of all cases\n\t\trtn = prettyTransclude(reference, template);\n\t}\n\treturn rtn;\n};\n\nfunction wrap(tiddler, options) {\n\ttiddler = $tw.utils.trim(tiddler);\n\tvar result = utils.wrapAttributeValue(tiddler);\n\tif (result === undefined) {\n\t\tif (options.placeholder) {\n\t\t\tresult = \"<<\" + options.placeholder.getPlaceholderFor(tiddler, undefined, options) + \">>\";\n\t\t}\n\t}\n\treturn result;\n};\n\nfunction canBePrettyTitle(value) {\n\treturn refHandler.canBePretty(value) && canBePrettyTemplate(value);\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn !value || (value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0);\n};\n\n/**Returns attributes for a transclude widget.\n * only field or index should be used, not both, but both will return\n * the intuitive (albeit useless) result.\n */\nfunction transcludeAttributes(field, index, options) {\n\tvar rtn = [\n\t\twrapAttribute(\"field\", field, options),\n\t\twrapAttribute(\"index\", index, options)\n\t];\n\tif (rtn[0] === undefined || rtn[1] === undefined) {\n\t\t// This can only happen if the transclude is using an\n\t\t// illegal key.\n\t\treturn undefined;\n\t}\n\treturn rtn.join('');\n};\n\nfunction wrapAttribute(name, value, options) {\n\tif (value) {\n\t\tvar wrappedValue = utils.wrapAttributeValue(value);\n\t\tif (wrappedValue === undefined) {\n\t\t\tif (!options.placeholder) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\twrappedValue = \"<<\"+options.placeholder.getPlaceholderFor(value, name, options)+\">>\";\n\t\t}\n\t\treturn \" \"+name+\"=\"+wrappedValue;\n\t}\n\treturn '';\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js": {
"text": "/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\n/**Like wrapAttribute value, except for macro parameters, not attributes.\n *\n * These are more permissive. Allows brackets,\n * and slashes and '<' in unquoted values.\n */\nexports.wrapParameterValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '[[', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\s>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t\"[[\": exports.canBePrettyOperand,\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nexports.canBePrettyOperand = function(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n/**Given some text, and a param or attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n\n// Finds the newline at the end of a string and returns it. Empty string if\n// none exists.\nexports.getEndingNewline = function(string) {\n\tvar l = string.length;\n\tif (string[l-1] === '\\n') {\n\t\treturn (string[l-2] === '\\r') ? \"\\r\\n\" : \"\\n\";\n\t}\n\treturn \"\";\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js": {
"text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar prettylink = require('$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js');\n\nexports.name = \"wikilink\";\n\nfunction WikilinkEntry() {};\nWikilinkEntry.prototype.name = \"wikilink\";\nWikilinkEntry.prototype.report = function() {\n\treturn [$tw.config.textPrimitives.unWikiLink + this.link];\n};\n\nexports.relink = function(text, fromTitle, toTitle, options) {\n\tvar entry = undefined;\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\tentry = new WikilinkEntry();\n\t\tentry.link = fromTitle;\n\t\tentry.output = this.makeWikilink(toTitle, options);\n\t\tif (entry.output === undefined) {\n\t\t\tentry.impossible = true;\n\t\t}\n\t}\n\treturn entry;\n};\n\nexports.makeWikilink = function(title, options) {\n\tif (title.match(this.matchRegExp) && title[0] !== $tw.config.textPrimitives.unWikiLink) {\n\t\treturn title;\n\t} else {\n\t\treturn prettylink.makeLink(title, undefined, options);\n\t}\n};\n",
"module-type": "relinkwikitextrule",
"title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/surveyors/raw.js": {
"text": "/*\\\n\nThis looks at text and sees if fromTitle is inside of it. That's all.\n\nSURVEYORS\n\nSurveyors are an optimization. They are way of quick-discarding text so it\ndoesn't have to be interpreted by the wikitext parser, the filter parser,\netc...\n\nThe reason I split this off into a module type is in case anyone wants to\nrelink patterns which might NOT contain the fromTitle in raw text.\n\nThey return false for \"no\", and true for \"maybe\". If any surveyor returns\n\"maybe\", the text in question is fully parsed.\n\nSee the documentation for more details.\n\n\\*/\n\nexports.survey = function(text, fromTitle, options) {\n\treturn text.indexOf(fromTitle) >= 0;\n};\n",
"module-type": "relinksurveyor",
"title": "$:/plugins/flibbles/relink/js/surveyors/raw.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/utils/entry.js": {
"text": "function EntryNode() {\n\tthis.children = [];\n};\n\nmodule.exports = EntryNode;\n\n/** PURE VIRTUAL\n * EntryNode.prototype.report = function() -> [\"string\", ...]\n */\n\nEntryNode.newType = function(name) {\n\tfunction NewEntry() {\n\t\tEntryNode.apply(this, arguments);\n\t};\n\tNewEntry.prototype = Object.create(EntryNode.prototype);\n\tNewEntry.prototype.name = name;\n\treturn NewEntry;\n};\n\nEntryNode.prototype.eachChild = function(method) {\n\tif (this.children) {\n\t\tfor (var i = 0; i < this.children.length; i++) {\n\t\t\tmethod(this.children[i]);\n\t\t}\n\t}\n};\n\nEntryNode.prototype.add = function(entry) {\n\tthis.children.push(entry);\n};\n\nEntryNode.prototype.report = function() {\n\tvar output = [];\n\t$tw.utils.each(this.children, function(child) {\n\t\t// All wikitext children should be able to report\n\t\t$tw.utils.each(child.report(), function(report) {\n\t\t\toutput.push(report);\n\t\t});\n\t});\n\treturn output;\n};\n\nfunction EntryCollection() {\n\tthis.children = Object.create(null);\n\tthis.types = Object.create(null);\n};\n\nEntryNode.newCollection = function(name) {\n\tfunction NewCollection() {\n\t\tEntryCollection.apply(this, arguments);\n\t};\n\tNewCollection.prototype = Object.create(EntryCollection.prototype);\n\tNewCollection.prototype.name = name;\n\treturn NewCollection;\n};\n\nEntryCollection.prototype.eachChild = function(method) {\n\tfor (var child in this.children) {\n\t\tmethod(this.children[child]);\n\t}\n};\n\nEntryCollection.prototype.addChild = function(child, name, type) {\n\tthis.children[name] = child;\n\tthis.types[name] = type;\n};\n\nEntryCollection.prototype.report = function() {\n\tvar output = [];\n\tfor (var name in this.children) {\n\t\tvar child = this.children[name];\n\t\tvar type = this.types[name];\n\t\tif (child.report) {\n\t\t\tvar reports = child.report();\n\t\t\tfor (var i = 0; i < reports.length; i++) {\n\t\t\t\toutput.push(this.forEachChildReport(reports[i], name, type));\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(this.forEachChildReport('', name, type));\n\n\t\t}\n\t}\n\treturn output;\n};\n\nEntryCollection.prototype.hasChildren = function() {\n\treturn Object.keys(this.children).length > 0;\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/utils/entry.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/utils/macroConfig.js": {
"text": "/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction MacroConfig(wiki, parent, title) {\n\tthis.macros = Object.create(null);\n\tthis.parent = parent;\n\tthis.title = title;\n\tthis.wiki = wiki;\n\tthis.widgetList = [];\n\tthis.reservedmacroNames = Object.create(null);\n};\n\nmodule.exports = MacroConfig;\n\nMacroConfig.prototype.import = function(filter) {\n\tvar parentWidget;\n\tif (this.parent) {\n\t\tparentWidget = this.getVariableWidget();\n\t}\n\tvar importWidget = createImportWidget(filter, this.wiki, parentWidget);\n\tthis._compileList(importWidget.tiddlerList);\n\tthis.widgetList.push(importWidget);\n\t// This only works if only one filter is imported\n\tthis.addWidget(importWidget);\n};\n\nMacroConfig.prototype.refresh = function(changes) {\n\tthis.parent.refresh(changes);\n\tif (this.widget.refresh(changes)) {\n\t\tthis.macros = Object.create(null);\n\t\t// Recompile all our widgets in the same order\n\t\tfor (var i = 0; i < this.widgetList.length; i++) {\n\t\t\tthis._compileList(this.widgetList[i].tiddlerList );\n\t\t}\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n// So fieldtypes can access settings through options.settings, instead of\n// including this file, which they can't, because that'd be cyclical dependency\nMacroConfig.prototype.getType = function(name) {\n\treturn settings.getType(name);\n};\n\n// This class does no special handling of fields, operators, or attributes.\n// we pass it along to the parent.\nMacroConfig.prototype.getFields = function() {\n\treturn this.parent.getFields();\n};\n\nMacroConfig.prototype.getOperators = function() {\n\treturn this.parent.getOperators();\n};\n\nMacroConfig.prototype.getAttributes = function() {\n\treturn this.parent.getAttributes();\n};\n\nMacroConfig.prototype.survey = function(text, fromTitle, options) {\n\treturn this.parent.survey(text, fromTitle, options);\n};\n\nMacroConfig.prototype.getAttribute = function(elementName) {\n\treturn this.parent.getAttribute(elementName);\n};\n\nMacroConfig.prototype.getMacros = function() {\n\tvar signatures = this.parent.getMacros();\n\tfor (var macroName in this.macros) {\n\t\tvar macro = this.macros[macroName];\n\t\tfor (var param in macro) {\n\t\t\tsignatures[macroName + \"/\" + param] = macro[param];\n\t\t}\n\t}\n\treturn signatures;\n};\n\n// But macro we handle differently.\nMacroConfig.prototype.getMacro = function(macroName) {\n\tvar theseSettings = this.macros[macroName];\n\tvar parentSettings;\n\tif (this.parent) {\n\t\tparentSettings = this.parent.getMacro(macroName);\n\t}\n\tif (theseSettings && parentSettings) {\n\t\t// gotta merge them without changing either. This is expensive,\n\t\t// but it'll happen rarely.\n\t\tvar rtnSettings = $tw.utils.extend(Object.create(null), theseSettings, parentSettings);\n\t\treturn rtnSettings;\n\t}\n\treturn theseSettings || parentSettings;\n};\n\nMacroConfig.prototype.addSetting = function(macroName, parameter, type, sourceTitle) {\n\tvar macro = this.macros[macroName];\n\ttype = type || settings.getDefaultType(this.wiki);\n\tif (macro === undefined) {\n\t\tmacro = this.macros[macroName] = Object.create(null);\n\t}\n\tvar handler = settings.getType(type);\n\tif (handler) {\n\t\thandler.source = sourceTitle;\n\t\t// We attach the fields of the defining tiddler for the benefit\n\t\t// of any 3rd party field types that want access to them.\n\t\tvar tiddler = this.wiki.getTiddler(sourceTitle);\n\t\thandler.fields = tiddler.fields;\n\t\tmacro[parameter] = handler;\n\t}\n};\n\nMacroConfig.prototype.createChildLibrary = function(title) {\n\treturn new MacroConfig(this.wiki, this, title);\n};\n\nMacroConfig.prototype.addWidget = function(widget) {\n\tthis.widget = widget;\n\twhile (this.widget.children.length > 0) {\n\t\tthis.widget = this.widget.children[0];\n\t}\n};\n\nMacroConfig.prototype.getVariableWidget = function() {\n\tif (!this.widget) {\n\t\tvar varWidget = this.parent && this.parent.widget;\n\t\tvar parentWidget = new Widget({}, {parentWidget: varWidget});\n\t\tparentWidget.setVariable(\"currentTiddler\", this.title);\n\t\tvar widget = new Widget({}, {parentWidget: parentWidget});\n\t\tthis.addWidget(widget);\n\t}\n\treturn this.widget;\n};\n\n/**This takes macros, specifically relink placeholders, and remembers them\n * It creates a dummy object for them, since we'll never need the definition\n */\nMacroConfig.prototype.reserveMacroName = function(variableName) {\n\tthis.reservedmacroNames[variableName] = {\n\t\tvalue: \"\",\n\t\tparams: []};\n};\n\nMacroConfig.prototype.addMacroDefinition = function(setParseTreeNode) {\n\tvar bottomWidget = this.getVariableWidget();\n\tvar setWidget = bottomWidget.makeChildWidget(setParseTreeNode);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\tthis.addWidget(setWidget);\n};\n\nMacroConfig.prototype.getMacroDefinition = function(variableName) {\n\treturn this.getVariableWidget().variables[variableName] || $tw.macros[variableName] || this.reservedmacroNames[variableName];\n};\n\nfunction createImportWidget(filter, wiki, parent) {\n\tvar widget = wiki.makeWidget( { tree: [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\t\"filter\": {\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: filter\n\t\t\t}\n\t\t}\n\t}] }, { parentWidget: parent} );\n\twidget.execute();\n\twidget.renderChildren();\n\tvar importWidget = widget.children[0];\n\treturn importWidget;\n};\n\nMacroConfig.prototype._compileList = function(titleList) {\n\tfor (var i = 0; i < titleList.length; i++) {\n\t\tvar parser = this.wiki.parseTiddler(titleList[i]);\n\t\tif (parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile (parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tif (parseTreeNode.relink) {\n\t\t\t\t\tfor (var macroName in parseTreeNode.relink) {\n\t\t\t\t\t\tvar parameters = parseTreeNode.relink[macroName];\n\t\t\t\t\t\tfor (paramName in parameters) {\n\t\t\t\t\t\t\tthis.addSetting(macroName, paramName, parameters[paramName], titleList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t}\n\t}\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/utils/macroConfig.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/utils/placeholder.js": {
"text": "/*\\\n\nA method which doles out placeholders when requested, and constructs\nthe necessary supporting pragma when requested.\n\n\\*/\n\nfunction Placeholder() {\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = Object.create(null);\n};\n\nmodule.exports = Placeholder;\n\nPlaceholder.prototype.getPlaceholderFor = function(value, category, options) {\n\tvar placeholder = this.reverseMap[value];\n\tvar config = options.settings || options.wiki.getRelinkConfig();\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (config.getMacroDefinition(placeholder));\n\tconfig.reserveMacroName(placeholder);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[value] = placeholder;\n\treturn placeholder;\n};\n\nPlaceholder.prototype.getPreamble = function() {\n\tvar results = [];\n\tfor (var name in this.placeholders) {\n\t\tvar val = this.placeholders[name];\n\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t}\n\treturn results.join('');\n};\n\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/utils/placeholder.js",
"type": "application/javascript"
},
"$:/plugins/flibbles/relink/js/utils/rebuilder.js": {
"text": "/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n",
"module-type": "library",
"title": "$:/plugins/flibbles/relink/js/utils/rebuilder.js",
"type": "application/javascript"
},
"$:/config/flibbles/relink/attributes/$button/set": {
"title": "$:/config/flibbles/relink/attributes/$button/set",
"text": "reference"
},
"$:/config/flibbles/relink/attributes/$button/setTo": {
"title": "$:/config/flibbles/relink/attributes/$button/setTo",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$button/to": {
"title": "$:/config/flibbles/relink/attributes/$button/to",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$checkbox/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$checkbox/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$checkbox/tag": {
"title": "$:/config/flibbles/relink/attributes/$checkbox/tag",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$count/filter": {
"title": "$:/config/flibbles/relink/attributes/$count/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$draggable/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$draggable/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$draggable/filter": {
"title": "$:/config/flibbles/relink/attributes/$draggable/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$edit-text/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$edit-text/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$edit/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$edit/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$encrypt/filter": {
"title": "$:/config/flibbles/relink/attributes/$encrypt/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$fieldmangler/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$fieldmangler/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$fields/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$fields/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$image/source": {
"title": "$:/config/flibbles/relink/attributes/$image/source",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$importvariables/filter": {
"title": "$:/config/flibbles/relink/attributes/$importvariables/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$linkcatcher/to": {
"title": "$:/config/flibbles/relink/attributes/$linkcatcher/to",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$linkcatcher/set": {
"title": "$:/config/flibbles/relink/attributes/$linkcatcher/set",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$link/to": {
"title": "$:/config/flibbles/relink/attributes/$link/to",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$list/filter": {
"title": "$:/config/flibbles/relink/attributes/$list/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$list/template": {
"title": "$:/config/flibbles/relink/attributes/$list/template",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$list/editTemplate": {
"title": "$:/config/flibbles/relink/attributes/$list/editTemplate",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$list/history": {
"title": "$:/config/flibbles/relink/attributes/$list/history",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$navigator/story": {
"title": "$:/config/flibbles/relink/attributes/$navigator/story",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$navigator/history": {
"title": "$:/config/flibbles/relink/attributes/$navigator/history",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$radio/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$radio/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$range/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$range/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$reveal/stateTitle": {
"title": "$:/config/flibbles/relink/attributes/$reveal/stateTitle",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$select/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$select/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$setvariable/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$setvariable/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$setvariable/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$setvariable/subtiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$setvariable/filter": {
"title": "$:/config/flibbles/relink/attributes/$setvariable/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$set/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$set/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$set/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$set/subtiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$set/filter": {
"title": "$:/config/flibbles/relink/attributes/$set/filter",
"text": "filter"
},
"$:/config/flibbles/relink/attributes/$tiddler/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$tiddler/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$transclude/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$transclude/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$transclude/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$transclude/subtiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$view/tiddler": {
"title": "$:/config/flibbles/relink/attributes/$view/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/attributes/$view/subtiddler": {
"title": "$:/config/flibbles/relink/attributes/$view/subtiddler",
"text": "title"
},
"$:/plugins/flibbles/relink/configuration": {
"title": "$:/plugins/flibbles/relink/configuration",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\" \"$:/plugins/flibbles/relink/ui/configuration/Fields\">>\n</div>\n"
},
"$:/config/flibbles/relink/fields/caption": {
"title": "$:/config/flibbles/relink/fields/caption",
"text": "wikitext"
},
"$:/config/flibbles/relink/fields/filter": {
"title": "$:/config/flibbles/relink/fields/filter",
"text": "filter"
},
"$:/config/flibbles/relink/fields/list": {
"title": "$:/config/flibbles/relink/fields/list",
"text": "list"
},
"$:/config/flibbles/relink/fields/list-after": {
"title": "$:/config/flibbles/relink/fields/list-after",
"text": "title"
},
"$:/config/flibbles/relink/fields/list-before": {
"title": "$:/config/flibbles/relink/fields/list-before",
"text": "title"
},
"$:/config/flibbles/relink/fields/tags": {
"title": "$:/config/flibbles/relink/fields/tags",
"text": "list"
},
"$:/plugins/flibbles/relink/language/PluginLibrary": {
"title": "$:/plugins/flibbles/relink/language/PluginLibrary",
"text": "//Relink// Library"
},
"$:/plugins/flibbles/relink/language/PluginLibrary/Hint": {
"title": "$:/plugins/flibbles/relink/language/PluginLibrary/Hint",
"text": "The //Relink// library contains //Relink// as well as its supplemental plugins. It is maintained by Flibbles. See the <a href={{$:/plugins/flibbles/relink!!source}}>github page</a> for more information."
},
"$:/plugins/flibbles/relink/language/Buttons/Delete/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/Delete/Hint",
"text": "delete"
},
"$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint",
"text": "go to defining tiddler"
},
"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint",
"text": "Specify a new widget/element attribute to be updated whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Buttons/NewField/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Hint",
"text": "Specify a new field to be updated whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewField/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint",
"text": "Specify a new filter operator to be considered whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint",
"text": "Specify a new macro parameter to be updated whenever a tiddler is renamed"
},
"$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption": {
"title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption",
"text": "add"
},
"$:/plugins/flibbles/relink/language/Error/InvalidAttributeName": {
"title": "$:/plugins/flibbles/relink/language/Error/InvalidAttributeName",
"text": "Illegal characters in attribute name \"<$text text=<<attributeName>>/>\". Attributes cannot contain slashes ('/'), closing angle or square brackets ('>' or ']'), quotes or apostrophes ('\"' or \"'\"), equals ('='), or whitespace"
},
"$:/plugins/flibbles/relink/language/Error/InvalidElementName": {
"title": "$:/plugins/flibbles/relink/language/Error/InvalidElementName",
"text": "Illegal characters in element/widget name \"<$text text=<<elementName>>/>\". Element tags can only contain letters and the characters hyphen (`-`) and dollar sign (`$`)"
},
"$:/plugins/flibbles/relink/language/Error/InvalidMacroName": {
"title": "$:/plugins/flibbles/relink/language/Error/InvalidMacroName",
"text": "Illegal characters in macro name \"<$text text=<<macroName>>/>\". Macros cannot contain whitespace"
},
"$:/plugins/flibbles/relink/language/Error/InvalidParameterName": {
"title": "$:/plugins/flibbles/relink/language/Error/InvalidParameterName",
"text": "Illegal characters in parameter name \"<$text text=<<parameterName>>/>\". Parameters can only contain letters, digits, and the characters underscore (`_`) and hyphen (`-`)"
},
"$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator": {
"title": "$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator",
"text": "Filter Error: Unknown suffix for the 'relink' filter operator"
},
"$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks": {
"title": "$:/plugins/flibbles/relink/language/Error/ReportFailedRelinks",
"text": "Relink could not update '<<from>>' to '<<to>>' inside the following tiddlers:"
},
"$:/plugins/flibbles/relink/language/Error/UnrecognizedType": {
"title": "$:/plugins/flibbles/relink/language/Error/UnrecognizedType",
"text": "Relink parse error: Unrecognized field type '<<type>>'"
},
"$:/plugins/flibbles/relink/language/Help/Attributes": {
"title": "$:/plugins/flibbles/relink/language/Help/Attributes",
"text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Attributes]]}}}>Attributes documentation page</a> for details."
},
"$:/plugins/flibbles/relink/language/Help/Fields": {
"title": "$:/plugins/flibbles/relink/language/Help/Fields",
"text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Fields]]}}}>Fields documentation page</a> for details."
},
"$:/plugins/flibbles/relink/language/Help/Macros": {
"title": "$:/plugins/flibbles/relink/language/Help/Macros",
"text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Macros]]}}}>Macros documentation page</a> for details."
},
"$:/plugins/flibbles/relink/language/Help/Operators": {
"title": "$:/plugins/flibbles/relink/language/Help/Operators",
"text": "See the <a href={{{[{$:/plugins/flibbles/relink!!demo}addsuffix[#Operators]]}}}>Operators documentation page</a> for details."
},
"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty": {
"title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty",
"text": "No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"
},
"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description": {
"title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description",
"text": "The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"
},
"$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption": {
"title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption",
"text": "//Relink// References"
},
"$:/plugins/flibbles/relink/language/ui/Attributes/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Attributes/Caption",
"text": "Attributes"
},
"$:/plugins/flibbles/relink/language/ui/Fields/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Fields/Caption",
"text": "Fields"
},
"$:/plugins/flibbles/relink/language/ui/Macros/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Macros/Caption",
"text": "Macros"
},
"$:/plugins/flibbles/relink/language/ui/Operators/Caption": {
"title": "$:/plugins/flibbles/relink/language/ui/Operators/Caption",
"text": "Operators"
},
"$:/config/flibbles/relink/macros/csvtiddlers/filter": {
"title": "$:/config/flibbles/relink/macros/csvtiddlers/filter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/datauri/title": {
"title": "$:/config/flibbles/relink/macros/datauri/title",
"text": "title"
},
"$:/config/flibbles/relink/macros/jsontiddler/title": {
"title": "$:/config/flibbles/relink/macros/jsontiddler/title",
"text": "title"
},
"$:/config/flibbles/relink/macros/jsontiddlers/filter": {
"title": "$:/config/flibbles/relink/macros/jsontiddlers/filter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/list-links/filter": {
"title": "$:/config/flibbles/relink/macros/list-links/filter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/list-links-draggable/tiddler": {
"title": "$:/config/flibbles/relink/macros/list-links-draggable/tiddler",
"text": "title"
},
"$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate": {
"title": "$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate",
"text": "title"
},
"$:/config/flibbles/relink/macros/list-tagged-draggable/tag": {
"title": "$:/config/flibbles/relink/macros/list-tagged-draggable/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate": {
"title": "$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate",
"text": "title"
},
"$:/config/flibbles/relink/macros/tabs/buttonTemplate": {
"title": "$:/config/flibbles/relink/macros/tabs/buttonTemplate",
"text": "title"
},
"$:/config/flibbles/relink/macros/tabs/default": {
"title": "$:/config/flibbles/relink/macros/tabs/default",
"text": "title"
},
"$:/config/flibbles/relink/macros/tabs/tabsList": {
"title": "$:/config/flibbles/relink/macros/tabs/tabsList",
"text": "filter"
},
"$:/config/flibbles/relink/macros/tabs/template": {
"title": "$:/config/flibbles/relink/macros/tabs/template",
"text": "title"
},
"$:/config/flibbles/relink/macros/tag/tag": {
"title": "$:/config/flibbles/relink/macros/tag/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/tag-pill/tag": {
"title": "$:/config/flibbles/relink/macros/tag-pill/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/timeline/subfilter": {
"title": "$:/config/flibbles/relink/macros/timeline/subfilter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/toc/tag": {
"title": "$:/config/flibbles/relink/macros/toc/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc/itemClassFilter": {
"title": "$:/config/flibbles/relink/macros/toc/itemClassFilter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/toc-expandable/tag": {
"title": "$:/config/flibbles/relink/macros/toc-expandable/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter": {
"title": "$:/config/flibbles/relink/macros/toc-expandable/itemClassFilter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/toc-expandable/exclude": {
"title": "$:/config/flibbles/relink/macros/toc-expandable/exclude",
"text": "list"
},
"$:/config/flibbles/relink/macros/toc-selective-expandable/tag": {
"title": "$:/config/flibbles/relink/macros/toc-selective-expandable/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter": {
"title": "$:/config/flibbles/relink/macros/toc-selective-expandable/itemClassFilter",
"text": "filter"
},
"$:/config/flibbles/relink/macros/toc-selective-expandable/exclude": {
"title": "$:/config/flibbles/relink/macros/toc-selective-expandable/exclude",
"text": "list"
},
"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/selectedTiddler",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/unselectedText",
"text": "wikitext"
},
"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/missingText",
"text": "wikitext"
},
"$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-external-nav/template",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/tag",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/selectedTiddler",
"text": "title"
},
"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/unselectedText",
"text": "wikitext"
},
"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/missingText",
"text": "wikitext"
},
"$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template": {
"title": "$:/config/flibbles/relink/macros/toc-tabbed-internal-nav/template",
"text": "title"
},
"$:/config/flibbles/relink/operators/list": {
"title": "$:/config/flibbles/relink/operators/list",
"text": "reference"
},
"$:/config/flibbles/relink/operators/tag": {
"title": "$:/config/flibbles/relink/operators/tag",
"text": "title"
},
"$:/config/flibbles/relink/operators/title": {
"title": "$:/config/flibbles/relink/operators/title",
"text": "title"
},
"$:/config/flibbles/relink/operators/field:title": {
"title": "$:/config/flibbles/relink/operators/field:title",
"text": "title"
},
"$:/language/EditTemplate/Title/Impossibles/Prompt": {
"title": "$:/language/EditTemplate/Title/Impossibles/Prompt",
"text": "''Warning:'' Not all references in the following tiddlers can be updated by //Relink// due to the complexity of the new title:"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following tiddlers will be updated if relinking:"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[all[relinkable]relink:references<fromTitle>limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$tiddler tiddler=<<fromTitle>> >\n\n<$set\n\tname=\"prompt\"\n\tfilter=\"[all[relinkable]relink:impossible<toTitle>]\"\n\tvalue=\"EditTemplate/Title/Impossibles/Prompt\"\n\temptyValue=\"EditTemplate/Title/References/Prompt\" >\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}}\n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}}\n<$macrocall $name=lingo title=<<prompt>> />\n</$button>\n</$reveal>\n</$set>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$list variable=\"listItem\" filter=\"[all[relinkable]!title[$:/StoryList]relink:references<fromTitle>sort[title]]\" template=\"$:/plugins/flibbles/relink/ui/ListItemTemplate\">\n</$list>\n</$reveal>\n</$tiddler>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/config/flibbles/relink/PluginLibrary": {
"title": "$:/config/flibbles/relink/PluginLibrary",
"caption": "{{$:/plugins/flibbles/relink/language/PluginLibrary}}",
"url": "https://flibbles.github.io/tw5-relink/library/index.html",
"tags": "$:/tags/PluginLibrary",
"text": "{{$:/plugins/flibbles/relink/language/PluginLibrary/Hint}}\n"
},
"$:/plugins/flibbles/relink/readme": {
"title": "$:/plugins/flibbles/relink/readme",
"type": "text/vnd.tiddlywiki",
"text": "When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee <a href={{$:/plugins/flibbles/relink!!source}}>the tw5-relink website</a> for more details and examples.\n"
},
"$:/config/flibbles/relink/settings/default-type": {
"title": "$:/config/flibbles/relink/settings/default-type",
"text": "title"
},
"$:/plugins/flibbles/relink/ui/ListItemTemplate": {
"title": "$:/plugins/flibbles/relink/ui/ListItemTemplate",
"text": "<$set\n\tname=\"classes\"\n\tfilter=\"[<listItem>relink:impossible<toTitle>]\"\n\tvalue=\"tc-menu-list-item tc-relink-impossible\"\n\temptyValue=\"tc-menu-list-item\">\n<div class=<<classes>>>\n<$link to=<<listItem>>><$text text=<<listItem>> /></$link>\n</div>\n</$set>\n"
},
"$:/plugins/flibbles/relink/ui/TiddlerInfo/References": {
"title": "$:/plugins/flibbles/relink/ui/TiddlerInfo/References",
"caption": "{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}",
"tags": "$:/tags/TiddlerInfo",
"text": "\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [relink:references<currentTiddler>!title[$:/StoryList]!prefix[$:/temp/]sort[title]]\n<$list filter=\"[subfilter<filter>first[]]\">\n\n<<lingo References/Description>>\n</$list>\n\n<table class=\"tc-relink-references-table\">\n<tbody>\n<$list filter=<<filter>> emptyMessage=<<lingo References/Empty>> variable=\"listItem\" template=\"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate\" />\n</tbody>\n</table>\n"
},
"$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate": {
"title": "$:/plugins/flibbles/relink/ui/TiddlerInfo/ReferencesTemplate",
"text": "<tr class=\"tc-relink-references\">\n<td class=\"tc-relink-references-title\">\n<$link to=<<listItem>>/>\n</td>\n<td class=\"tc-relink-references-report\">\n<$list filter=\"[<listItem>relink:report<currentTiddler>]\">\n\n<$text text=<<currentTiddler>> />\n</$list>\n\n</td>\n</tr>\n"
},
"$:/plugins/flibbles/relink/ui/components/button-delete": {
"title": "$:/plugins/flibbles/relink/ui/components/button-delete",
"text": "\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define prefix() $:/config/flibbles/relink/\n\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/Delete/Hint}}><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list><$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<<tiddlerName>> text=\"\" />\n</$list>\n{{$:/core/images/delete-button}}\n</$button>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$link><$button class=\"tc-btn-invisible\" tooltip={{$:/plugins/flibbles/relink/language/Buttons/LinkToInline/Hint}}>{{$:/core/images/link}}</$button></$link>\n</$list>\n"
},
"$:/plugins/flibbles/relink/ui/components/select-fieldtype": {
"title": "$:/plugins/flibbles/relink/ui/components/select-fieldtype",
"text": "\\define prefix() $:/config/flibbles/relink/\n\n<$vars type={{{ [<signature>relink:type[]] }}} >\n<$list filter=\"[all[current]prefix<prefix>]\" >\n<$select tiddler=<<currentTiddler>> >\n<$list variable=\"option\" filter=\"[relink:types[]]\">\n<option><$text text=<<option>> /></option>\n</$list>\n</$select>\n</$list><$list filter=\"[all[current]!prefix<prefix>]\">\n<$text text=<<type>> />\n</$list>\n</$vars>\n"
},
"$:/plugins/flibbles/relink/ui/components/tables": {
"title": "$:/plugins/flibbles/relink/ui/components/tables",
"text": "\\define .make-table(title, plugin, default-table-state:yes)\n\n<$list variable=\"render\" filter=\"[relink:signatures<__plugin__>prefix<__category__>first[]]\">\n<$set name=\"table-state\" value=<<qualify \"\"\"$:/state/flibbles/relink/tables/$title$\"\"\">>>\n<tr><th class=\"tc-relink-header-plugin\" colspan=<<column-count>> >\n<$reveal type=\"nomatch\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} ''$title$''\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}} ''$title$''\n</$button>\n</$reveal>\n</th></tr>\n<$list\n\tvariable=\"signature\"\n\tfilter=\"[relink:signatures<__plugin__>prefix<__category__>sort[]]\">\n<$vars key={{{ [<signature>removeprefix<__category__>removeprefix[/]] }}} >\n<$tiddler tiddler={{{[<signature>relink:source[]]}}} >\n<$reveal tag=\"tr\" type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> signature=<<signature>> />\n<td class=\"tc-relink-column-type\">{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td class=\"tc-relink-column-delete\">{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</$reveal>\n</$tiddler>\n</$vars>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n<$vars\n\tcolumn-count={{{[enlist<__header-list__>] [[DeleteColumn]] +[count[]]}}}>\n\n<table class=\"tc-relink-whitelist\"><tbody>\n<tr>\n<$list variable=\"header\" filter=\"[enlist<__header-list__>butlast[]]\"><th><<header>></th></$list>\n<!-- We have the last column extend into the delete/link column, which is unlabeled. -->\n<th colspan=2><$text text={{{ [enlist<__header-list__>last[]] }}} /></th>\n</tr>\n\n<<.make-table Custom \"\" yes>>\n\n<$list\n\tfilter=\"[plugin-type[plugin]![$:/core]![$:/plugins/flibbles/relink]]\">\n<$set name=\"subtitle\" value={{!!description}} emptyValue={{!!title}} >\n<$macrocall $name=\".make-table\" title=<<subtitle>> plugin=<<currentTiddler>> />\n</$set>\n</$list>\n\n<<.make-table Core \"$:/plugins/flibbles/relink\">>\n\n</tbody></table>\n</$vars>\n\\end\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Attributes": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Attributes",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define element-name-tiddler() $:/state/flibbles/relink/element-name\n\\define attribute-name-tiddler() $:/state/flibbles/relink/attribute-name\n\n\\define row()\n<$set name=\"element\"\n filter=\"[<key>splitbefore[/]removesuffix[/]]\">\n<$set name=\"attribute\"\n filter=\"[<key>removeprefix<element>removeprefix[/]]\">\n<td><$text text=<<element>> /></td>\n<td><$text text=<<attribute>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<em class=\"tc-edit\">Add a new attribute:</em>\n<$edit-text\n\ttiddler=<<element-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"widget/element\" />\n<$edit-text\n\ttiddler=<<attribute-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"attribute\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<element-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<attribute-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewAttribute/Hint}}\n\taria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-attribute\"\n\telement={{$(element-name-tiddler)$}}\n\tattribute={{$(attribute-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<attribute-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<element-name-tiddler>> />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<attribute-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<element-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n</$reveal>\n\n<$macrocall\n\t$name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Fields": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Fields",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define field-name-tiddler() $:/state/flibbles/relink/field-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<em class=\"tc-edit\">Add a new field:</em>\n<$edit-text\n\ttiddler=<<field-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"field name\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<field-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewField/Hint}}\n\taria-label={{$(lingo-base)$NewField/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-field\"\n\tfield={{$(field-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<field-name-tiddler>> />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<field-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n</$reveal>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Macros": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Macros",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define macro-name-tiddler() $:/state/flibbles/relink/macro-name\n\\define parameter-name-tiddler() $:/state/flibbles/relink/parameter-name\n\n\\define row()\n<$set name=\"parameter\"\n filter=\"[<key>relink:splitafter[/]]\">\n<$set name=\"macro\"\n filter=\"[<key>removesuffix<parameter>removesuffix[/]]\">\n<td><$text text=<<macro>> /></td>\n<td><$text text=<<parameter>> /></td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<em class=\"tc-edit\">Add a new macro parameter:</em>\n<$edit-text\n\ttiddler=<<macro-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"macro\" />\n<$edit-text\n\ttiddler=<<parameter-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"parameter\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<macro-name-tiddler>> >\n<$reveal type=\"nomatch\" text=\"\" state=<<parameter-name-tiddler>> >\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewParameter/Hint}}\n\taria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-parameter\"\n\tmacro={{$(macro-name-tiddler)$}}\n\tparameter={{$(parameter-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<parameter-name-tiddler>> />\n<$action-deletetiddler $tiddler=<<macro-name-tiddler>> />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<parameter-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<macro-name-tiddler>> >\n<$button>\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n</$reveal>\n\n\n<$macrocall\n\t$name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/configuration/Operators": {
"title": "$:/plugins/flibbles/relink/ui/configuration/Operators",
"caption": "{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}",
"tags": "$:/tags/flibbles/relink/Configuration",
"text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define operator-name-tiddler() $:/state/flibbles/relink/operator-name\n\n\\define row()\n<td><$text text=<<key>> /></td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<em class=\"tc-edit\">Add a new filter operator:</em>\n<$edit-text\n\ttiddler=<<operator-name-tiddler>>\n\ttag=\"input\"\n\tdefault=\"\"\n\tplaceholder=\"operator name\" />\n<$reveal type=\"nomatch\" text=\"\" state=<<operator-name-tiddler>>>\n<$relinkmangler>\n<$button\n\ttooltip={{$(lingo-base)$NewOperator/Hint}}\n\taria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$action-sendmessage\n\t$message=\"relink-add-operator\"\n\toperator={{$(operator-name-tiddler)$}} />\n<$action-deletetiddler $tiddler=<<operator-name-tiddler>> />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$relinkmangler>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=<<operator-name-tiddler>>>\n<$button>\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n</$reveal>\n\n<$macrocall\n\t$name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]]\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
},
"$:/plugins/flibbles/relink/ui/stylesheet.css": {
"title": "$:/plugins/flibbles/relink/ui/stylesheet.css",
"text": ".tc-relink-references {\n}\n\n.tc-relink-references-table {\n\twidth: 100%;\n\tborder: none;\n}\n\n.tc-relink-references-table td {\n\tborder-left: none;\n}\n\n.tc-relink-references-table tr:first-child td {\n\tborder-top: none;\n}\n\n.tc-relink-references-title {\n\ttext-align: left;\n\tvertical-align: top;\n}\n\n.tc-relink-references-occurrence {\n\tfont-style: italic;\n\ttext-align: left;\n\tfont-weight: 200;\n\tpadding-left: 25px;\n\tvertical-align: top;\n}\n\n.tc-relink-header-plugin {\n\ttext-align: left;\n}\n\n.tc-relink-header-plugin button {\n\twidth: 100%\n}\n\n.tc-relink-column-type {\n\twidth: 8em;\n}\n\n.tc-relink-column-type select {\n\twidth: 100%;\n}\n\n.tc-relink-column-delete {\n\tborder-left: none;\n\ttext-align: left;\n}\n\n.tc-relink-column-delete button {\n\tpadding-left: 1em;\n}\n\n.tc-relink-impossible a.tc-tiddlylink {\n\tcolor: red;\n}\n",
"tags": "$:/tags/Stylesheet",
"type": "text/css"
}
}
}
{
"tiddlers": {
"$:/plugins/gt6796c/graph-tw5/example": {
"title": "$:/plugins/gt6796c/graph-tw5/example",
"text": "Notation\n\n```\n<$graph color='blue' thickness='1' minX=\"0\" minY=\"-6\" maxY=\"6\" equation=\"\nreturn 5 * Math.sin(x)\n \">\n</$graph>\n```\nResults\n\n<$graph color='blue' thickness='1' minX=\"0\" minY=\"-6\" maxY=\"6\" equation=\"\n5 * Math.sin(x)\n \">\n</$graph>\n\nNotation for multiple functions in one graph\n\n```\n<$graph color='[\"red\",\"blue\",\"green\"]' unitsPerTick=\"2\" minX=\"0\" minY=\"-6\" maxY=\"6\">\n5 * Math.sin(x)\n1/x\nx*x+x\n</$graph>\n```\nResults\n\n<$graph color='[\"red\",\"blue\",\"green\"]' unitsPerTick=\"2\" minX=\"0\" minY=\"-6\" maxY=\"6\">\n5 * Math.sin(x)\n1/x\nx*x+x\n</$graph>\n\nNotation for points and point sets in one graph (Note the space between the two opening array brackets. This is to prevent TiddlyWiki from treating it as a Tiddler.)\n\n```\n<$graph color='[\"red\",\"blue\",\"green\"]' minX=\"0\" minY=\"0\">\nx+3\n[2,2]\n[ [3,2],[4,1],[2,5] ]\n</$graph>\n```\nResults\n\n<$graph color='[\"red\",\"blue\",\"green\"]' minX=\"0\" minY=\"0\">\nx+3\n[2,2]\n[ [3,2],[4,1],[2,5] ]\n</$graph>\n\nYou can even do things like limits on your functions like this:\n(Note that the entire clause must not have any newlines in it)\n\n```\n<$graph color='blue' thickness='1' bounds=\"[0,-6,10,6]\" equation=\"\nx < /*lower*/ Math.PI/2 ? undefined : /*upper*/ x > 5*Math.PI/2 ? undefined : /*function*/ 5 * Math.sin(x)\n\">\n</$graph>\n```\n\nResults\n\n<$graph color='blue' thickness='1' bounds=\"[0,-6,10,6]\" equation=\"\nx < /*lower*/ Math.PI/2 ? undefined : /*upper*/ x > 5*Math.PI/2 ? undefined : /*function*/ 5 * Math.sin(x)\n\">\n</$graph>\n"
},
"$:/plugins/gt6796c/graph-tw5/graph.js": {
"text": "/*\\\ntitle: $:/plugins/gt6796c/graph-tw5/graph.js\ntype: application/javascript\nmodule-type: lib\n\n\\*/\n// Based on http://www.html5canvastutorials.com/labs/html5-canvas-graphing-an-equation/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\n function Graph() { }\n\n Graph.prototype.configure = function(config) {\n // user defined properties\n this.canvas = config.canvas;\n this.minX = config.minX;\n this.minY = config.minY;\n this.maxX = config.maxX;\n this.maxY = config.maxY;\n this.unitsPerTick = config.unitsPerTick;\n\n // constants\n this.axisColor = '#aaa';\n this.font = '8pt Calibri';\n this.tickSize = 20;\n\n // relationships\n this.context = this.canvas.getContext('2d');\n this.rangeX = this.maxX - this.minX;\n this.rangeY = this.maxY - this.minY;\n this.unitX = this.canvas.width / this.rangeX;\n this.unitY = this.canvas.height / this.rangeY;\n this.centerY = Math.round(Math.abs(this.minY / this.rangeY) * this.canvas.height);\n this.centerX = Math.round(Math.abs(this.minX / this.rangeX) * this.canvas.width);\n this.iteration = (this.maxX - this.minX) / 1000;\n\n if (typeof(config.step) != \"undefined\")\n {\n // don't let absurd values through\n var step = parseFloat(config.step);\n if (step >= this.iteration)\n this.iteration=step;\n }\n\n this.scaleX = this.canvas.width / this.rangeX;\n this.scaleY = this.canvas.height / this.rangeY;\n\n // draw x and y axis\n this.drawXAxis();\n this.drawYAxis();\n }\n\n Graph.prototype.drawXAxis = function() {\n var context = this.context;\n var ypos = this.canvas.height - this.centerY;\n context.save();\n context.beginPath();\n context.moveTo(0, ypos);\n context.lineTo(this.canvas.width, ypos);\n context.strokeStyle = this.axisColor;\n context.lineWidth = 2;\n context.stroke();\n\n // draw tick marks\n var xPosIncrement = this.unitsPerTick * this.unitX;\n var xPos, unit;\n context.font = this.font;\n context.textAlign = 'center';\n context.textBaseline = 'top';\n\n // draw left tick marks\n xPos = this.centerX - xPosIncrement;\n unit = -1 * this.unitsPerTick;\n while(xPos > 0) {\n context.moveTo(xPos, ypos - this.tickSize / 2);\n context.lineTo(xPos, ypos + this.tickSize / 2);\n context.stroke();\n context.fillText(unit, xPos, ypos + this.tickSize / 2 + 3);\n unit -= this.unitsPerTick;\n xPos = Math.round(xPos - xPosIncrement);\n }\n\n // draw right tick marks\n xPos = this.centerX + xPosIncrement;\n unit = this.unitsPerTick;\n while(xPos < this.canvas.width) {\n context.moveTo(xPos, ypos - this.tickSize / 2);\n context.lineTo(xPos, ypos + this.tickSize / 2);\n context.stroke();\n context.fillText(unit, xPos, ypos + this.tickSize / 2 + 3);\n unit += this.unitsPerTick;\n xPos = Math.round(xPos + xPosIncrement);\n }\n context.restore();\n };\n\n Graph.prototype.drawYAxis = function() {\n var context = this.context;\n var ypos = this.canvas.height - this.centerY;\n context.save();\n context.beginPath();\n context.moveTo(this.centerX, 0);\n context.lineTo(this.centerX, this.canvas.height);\n context.strokeStyle = this.axisColor;\n context.lineWidth = 2;\n context.stroke();\n\n // draw tick marks\n var yPosIncrement = this.unitsPerTick * this.unitY;\n var yPos, unit;\n context.font = this.font;\n context.textAlign = 'right';\n context.textBaseline = 'middle';\n\n // draw top tick marks\n yPos = ypos - yPosIncrement;\n unit = this.unitsPerTick;\n while(yPos > 0) {\n context.moveTo(this.centerX - this.tickSize / 2, yPos);\n context.lineTo(this.centerX + this.tickSize / 2, yPos);\n context.stroke();\n context.fillText(unit, this.centerX - this.tickSize / 2 - 3, yPos);\n unit += this.unitsPerTick;\n yPos = Math.round(yPos - yPosIncrement);\n }\n\n // draw bottom tick marks\n yPos = ypos + yPosIncrement;\n unit = -1 * this.unitsPerTick;\n while(yPos < this.canvas.height) {\n context.moveTo(this.centerX - this.tickSize / 2, yPos);\n context.lineTo(this.centerX + this.tickSize / 2, yPos);\n context.stroke();\n context.fillText(unit, this.centerX - this.tickSize / 2 - 3, yPos);\n unit -= this.unitsPerTick;\n yPos = Math.round(yPos + yPosIncrement);\n }\n context.restore();\n };\n\n Graph.prototype.drawEquation = function(equation, color, thickness) {\n var context = this.context;\n context.save();\n context.save();\n this.transformContext();\n\n context.beginPath();\n context.moveTo(this.minX, equation(this.minX));\n\n var result = equation(this.minX.toFixed(4));\n // see if they've passed an array for points\n if (result instanceof Array)\n {\n // if what they sent is not an array of arrays (multiple points)\n // go ahead and wrap it so we have one code path\n var points = result[0] instanceof Array ? result : [result];\n var w = this.scaleY*this.iteration/3;\n var z = this.scaleX*this.iteration/3;\n for (var pi=0;pi<points.length;++pi)\n {\n var px = points[pi][0];\n var py = points[pi][1];\n context.fillStyle = color;\n context.fillRect(px-w,py-z,2*w,2*z);\n }\n\n }\n else {\n for (var x = this.minX + this.iteration; x <= this.maxX; x += this.iteration) {\n result = equation(x.toFixed(4));\n if (isFinite(result))\n context.lineTo(x, equation(x));\n }\n }\n\n context.restore();\n context.lineJoin = 'round';\n context.lineWidth = thickness;\n context.strokeStyle = color;\n context.stroke();\n context.restore();\n };\n\n Graph.prototype.transformContext = function() {\n var context = this.context;\n\n // move context to center of canvas\n this.context.translate(this.centerX, this.canvas.height - this.centerY);\n\n /*\n * stretch grid to fit the canvas window, and\n * invert the y scale so that that increments\n * as you move upwards\n */\n context.scale(this.scaleX, -this.scaleY);\n };\n\n exports.graph = Graph;\n\n})();\n",
"title": "$:/plugins/gt6796c/graph-tw5/graph.js",
"type": "application/javascript",
"module-type": "lib"
},
"$:/plugins/gt6796c/graph-tw5/license": {
"title": "$:/plugins/gt6796c/graph-tw5/license",
"text": "The MIT License (MIT)\n\nCopyright (c) 2016 Nathaniel Jones\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nDependencies:\nBased in part on http://www.html5canvastutorials.com/labs/html5-canvas-graphing-an-equation/ No License Found\n"
},
"$:/plugins/gt6796c/graph-tw5/readme": {
"title": "$:/plugins/gt6796c/graph-tw5/readme",
"text": "This is a TiddlyWiki plugin for creating simple graphs.\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n\n!Installation\nYou can either build from [[Source code|https://github.com/gt6796c/graph-tw5]] or install from [[here|https://gt6796c.github.io]]\n\n!Dependencies\n;This plugin requires:\n*[[rocklib Plugin|https://gt6796c.github.io]]\n\n! History\n;0.1.2\n*Fixed single color attributes and fixed example to use //color// instead of //colors//"
},
"$:/plugins/gt6796c/graph-tw5/typed-parser.js": {
"text": "/*\\\ntitle: $:/plugins/gt6796c/graph-tw5/typed-parser.js\ntype: application/javascript\nmodule-type: parser\n\nThis parser wraps unadorned railroad syntax into a railroad widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n\tvar GraphParser = function(type,text,options) {\n\t\tvar element = {\n\t\t\ttype: \"graph\",\n\t\t\ttag: \"$graph\",\n\t\t\ttext: text\n\t\t};\n\t\tthis.tree = [element];\n\t};\n\n\texports[\"text/vnd.tiddlywiki.graph\"] = GraphParser;\n\n})();\n\n",
"title": "$:/plugins/gt6796c/graph-tw5/typed-parser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/plugins/gt6796c/graph-tw5/usage": {
"title": "$:/plugins/gt6796c/graph-tw5/usage",
"text": "This widget allows the user to create simple graphs and display them in a tiddler. The equation will be provided an 'x' value\nand should return the 'y' value. Multiple Equations can be specified on separate lines to represent a system of equations. Points can\nbe represented by defining the point's coordinates in the form of an array. Arrays can be nested to allow for multiple points\nto be the same color. (See examples)\n\nThe equation body can either be placed in the \"equation\" attribute or as the body of the widget.\n\nThe following attributes are customizable for the widget:\n\n; minX - integer\n: defaults to -1\n; minY - integer\n: defaults to -1\n; maxX - integer\n: defaults to 10\n; maxY - integer\n: default to 10\n; width - integer\n: defaults to \"not specified\"\n; height - integer\n: defaults to \"not specified\"\n; color - string\n: defaults to 'red'\n;thickness - integer\n: defaults to 2\n; unitsPerTick\n: defaults to 1\n; bounds - integer array\n: no default 2 elements sets the minX & minY. 4 elements sets minX, minY, maxX and maxY\n; step - float\n: defaults to '0.001'\n\nThe following attributes are for systems of equations:\n\n;color - json array of colors e.g. ['red','green','blue']\n: defaults to using value of 'color' attribute defined above\n;thickness - json array of integers e.g. [2,2,1]\n: defaults to using value of 'thickness' attribute defined above\n\nNote the number of colors & thicknesses should match the number of equations specified. If there are more equations specified, random colors will\nbe assigned.\n\n!!Notes\n*The body of the text is parsed as a Tiddler. If you need conflicting elements, use either the ``equation`` attribute on the widget or set the type field to ``text/vnd.tiddlywiki.graph`` and transclude the whole Tiddler\n** In particular, the Javascript array of array syntax will be parsed as a Tiddler Title unless you leave an empty space between the two opening brackets.\n* If you author a Tiddler with the Content type ``text/vnd.tiddlywiki.graph`` CamelCased variables may be assigned by using a 'dot' notation. (e.g. minX would be graph-min.x)\n"
},
"$:/plugins/gt6796c/graph-tw5/widget.js": {
"text": "/*\\\ntitle: $:/plugins/gt6796c/graph-tw5/widget.js\ntype: application/javascript\nmodule-type: widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n var Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n var Rocklib = require(\"$:/plugins/gt6796c/rocklib/widget-tools.js\").rocklib;\n var Graph = require(\"./graph.js\").graph;\n\n if ($tw.browser) {\n window.graph = new Graph();\n window.rocklib = new Rocklib();\n }\n\n\n var GraphWidget = function(parseTreeNode, options) {\n this.initialise(parseTreeNode, options);\n };\n\n GraphWidget.prototype = new Widget();\n\n /*\n Render this widget into the DOM\n */\n GraphWidget.prototype.render = function(parent,nextSibling) {\n this.parentDomNode = parent;\n this.computeAttributes();\n this.execute();\n\n var tag = 'graph';\n var scriptBody = rocklib.getScriptBody(this,\"equation\").trim();\n var canvas = rocklib.getCanvas(this,tag,\"canvas\");\n try {\n var options = {}\n options.minX = -1;\n options.minY = -1;\n options.maxX = 10;\n options.maxY = 10;\n options.color = '#000';\n options.thickness = 2;\n options.unitsPerTick = 1;\n\n rocklib.getOptions(this, tag, options);\n if (options.hasOwnProperty('bounds'))\n {\n var bounds = options['bounds']\n if (bounds.length == 2 || bounds.length == 4)\n {\n options.minX = bounds[0];\n options.minY = bounds[1];\n if (bounds.length == 4)\n {\n options.maxX = bounds[2];\n options.maxY = bounds[3];\n }\n }\n }\n // swap mins/maxes if they're messed up\n if (options.minY > options.maxY)\n {\n var s = options.maxY;\n options.maxY = options.minY;\n options.minY = s;\n }\n if (options.minX > options.maxX)\n {\n var s = options.maxX;\n options.maxX = options.minX;\n options.minX = s;\n }\n rocklib.hue = 0;\n options.canvas = canvas;\n graph.configure(options);\n var eqs = scriptBody.split('\\n');\n for (var i=0;i<eqs.length;++i) {\n var eq = eqs[i].trim();\n var f = Function('x', \"return \" + eq + \";\");\n var c = options.color;\n var needColor = options.color instanceof Array && i >= options.color.length;\n needColor |= typeof(options.color) == \"string\" && i > 0;\n if (needColor)\n {\n c = rocklib.nextColor(.75, 0.95);\n }\n else\n {\n c = typeof(options.color) == \"string\" ? options.color : options.color[i];\n }\n var t = typeof(options.thicknesses) != \"undefined\" && i < options.thicknesses.length ? options.thicknesses[i] : options.thickness;\n graph.drawEquation(f, c, t);\n }\n }\n catch(ex)\n {\n canvas = this.document.createElement(\"div\");\n canvas.innerText = ex.stack;\n }\n parent.insertBefore(canvas, nextSibling);\n\n this.domNodes.push(canvas);\n };\n\n GraphWidget.prototype.execute = function() {\n // Nothing to do\n };\n\n /*\n Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n */\n GraphWidget.prototype.refresh = function(changedTiddlers) {\n return false;\n };\n\n exports.graph = GraphWidget;\n\n})();\n",
"title": "$:/plugins/gt6796c/graph-tw5/widget.js",
"type": "application/javascript",
"module-type": "widget"
}
}
}
{
"tiddlers": {
"$:/plugins/gt6796c/rocklib/widget-tools.js": {
"type": "application/javascript",
"title": "$:/plugins/gt6796c/rocklib/widget-tools.js",
"module-type": "library",
"text": "/*\\\n title: $:/plugins/gt6796c/rocklib/widget-tools.js\n type: application/javascript\n*/\n\n(function() {\n\n\"use strict\";\n\n function Rocklib()\n {\n this.uniqueID = 1;\n this.hue = .2;\n };\n\n // tries to un-parse the wikitext. of dubious value\n Rocklib.prototype.getScriptBody = function(src,attr)\n {\n var scriptBody= src.getAttribute(attr, src.parseTreeNode.text || \"\");\n\n if (src.parseTreeNode.text) {\n scriptBody = src.parseTreeNode.text;\n }\n else if (src.parseTreeNode.children)\n {\n var kids = src.parseTreeNode.children;\n for (var k in kids)\n {\n var kk = kids[k];\n switch(kk.type)\n {\n // no wikiparsing found\n case \"text\":\n scriptBody += kk.text; break;\n // internal link, make it a permalink reference\n case \"link\":\n scriptBody += \"#\" + kk.children[0].text; break;\n // -- gets interpreted as an HTML element, we don't want that\n case \"entity\":\n switch(kk.entity)\n {\n case \"–\":\n scriptBody+=\"--\"; break;\n };\n break;\n // just re-write it back out\n case \"element\":\n switch (kk.tag)\n {\n case \"a\":\n scriptBody+=kk.children[0].text;\n }\n };\n }\n }\n\n return scriptBody;\n };\n\n /**\n * Runs through lots of ways to get options. It can pull them from a named data Tiddler, from the fields of the\n * Tiddler, and from the attributes of the widget specified by 'tag'. Any value pulled is treated as JSON first\n * and then as straight text.\n * @param src\n * @param tag\n * @param options\n * @returns {*}\n */\n Rocklib.prototype.getOptions = function(src, tag, options)\n {\n try {\n // try to set options from fields on tiddler first\n // [tag-xxx]\n var tt = src.getVariable('currentTiddler');\n if (tt) {\n var t = src.wiki.getTiddler(tt);\n if (t)\n {\n // this looks for fields that start with our tag\n // and then maps a.x to aX since something is\n // unCamelCasing the vars\n for (var f in t.fields) {\n var fi = f.indexOf(tag);\n if (fi != 0) continue;\n var k = f.substring(tag.length + 1);\n var cap = k.indexOf(\".\");\n while (cap > -1) {\n if (k.length < cap+2) break;\n k = k.substring(0, cap) + k.charAt(cap + 1).toUpperCase() + k.substring(cap + 2);\n cap = k.indexOf(\".\");\n }\n var v = t.fields[f];\n // try as JSON\n try {\n options[k] = JSON.parse(v);\n }\n // last attempt is just a string\n catch (ex) {\n options[k] = v;\n }\n }\n }\n }\n // treat any attributes as JSON representations of options\n // for the object\n for (var att in src.attributes) {\n\n var attval = src.getAttribute(att);\n // allow for data from named tiddlers\n if ($tw.wiki.tiddlerExists(attval))\n {\n var data = $tw.wiki.getTiddlerData(attval);\n options[att] = data;\n }\n else {\n // try as JSON\n try { options[att] = JSON.parse(attval); }\n // last attempt is just a string\n catch (ex) { options[att] = attval; }\n }\n }\n }\n catch (ex) { console.error(ex); }\n\n return options;\n\n };\n\n /**\n * Retrieves a canvas to work with based on the calling functions need of a \"div\" or \"canvas\" element\n * @param src\n * @param tag\n * @param type\n * @returns {Element}\n */\n Rocklib.prototype.getCanvas = function(src, tag, type) {\n type = typeof(type) === \"undefined\" ? \"div\" : type;\n\n var height = src.getAttribute(\"height\");\n var width = src.getAttribute(\"width\");\n\n var canvas = src.document.createElement(type);\n var style = \"\";\n if (type === \"canvas\") {\n if (width) canvas.width = width;\n if (height) canvas.height = height;\n }\n else {\n if (height) style += \" height:\" + height;\n if (width) style += \" width:\" + width;\n if (style) canvas.setAttribute(\"style\", style);\n }\n canvas.setAttribute(\"id\", tag+\"_\" + this.uniqueID);\n\n this.uniqueID++;\n return canvas;\n };\n\n /**\n * based on http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\n * @param s\n * @param v\n * @returns {string}\n */\n Rocklib.prototype.nextColor = function(s, v)\n {\n var golden_ratio_conjugate = 0.618033988749895\n this.hue += golden_ratio_conjugate;\n this.hue %= 1;\n var rgb = this.hsv_to_rgb(this.hue, s, v);\n return \"#\" + rgb.r.toString(16) + rgb.g.toString(16) + rgb.b.toString(16);\n };\n\n\n /**\n * Taken from http://stackoverflow.com/questions/17242144/javascript-convert-hsb-hsv-color-to-rgb-accurately\n */\n /* accepts parameters\n * r Object = {r:x, g:y, b:z}\n * OR\n * r, g, b\n */\n\n Rocklib.prototype.rgb_to_hsv = function (r, g, b) {\n if (arguments.length === 1) {\n g = r.g, b = r.b, r = r.r;\n }\n var max = Math.max(r, g, b), min = Math.min(r, g, b),\n d = max - min,\n h,\n s = (max === 0 ? 0 : d / max),\n v = max / 255;\n\n switch (max) {\n case min: h = 0; break;\n case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break;\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\n }\n\n return {\n h: h,\n s: s,\n v: v\n };\n };\n\n /**\n * Taken from http://stackoverflow.com/questions/17242144/javascript-convert-hsb-hsv-color-to-rgb-accurately\n */\n /* accepts parameters\n * h Object = {h:x, s:y, v:z}\n * OR\n * h, s, v\n */\n Rocklib.prototype.hsv_to_rgb = function(h, s, v) {\n var r, g, b, i, f, p, q, t;\n if (arguments.length === 1) {\n s = h.s, v = h.v, h = h.h;\n }\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0: r = v, g = t, b = p; break;\n case 1: r = q, g = v, b = p; break;\n case 2: r = p, g = v, b = t; break;\n case 3: r = p, g = q, b = v; break;\n case 4: r = t, g = p, b = v; break;\n case 5: r = v, g = p, b = q; break;\n }\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n };\n\n exports.rocklib = Rocklib;\n\n})();\n\n"
},
"$:/plugins/gt6796c/rocklib/license": {
"title": "$:/plugins/gt6796c/rocklib/license",
"text": "The MIT License (MIT)\n\nCopyright (c) 2016 Nathaniel Jones\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
},
"$:/plugins/gt6796c/rocklib/readme": {
"title": "$:/plugins/gt6796c/rocklib/readme",
"text": "\nThis plugin packages [[rocklib|https://github.com/gt6796c/rocklib]] for use by other plugins. It does not provide any end-user visible features.\n\nNo user-visible elements.\n\nprovides the following functions:\n\n;getScriptBody(src, att)\n: attempts to pull the text out of ``src`` element's body or the specified attribute ``att``\n\n;getOptions(src,tag,options)\n: in the case of a widget, adds all of ``src`` element's attributes into the ``options`` object\n: in the case of a Tiddler, adds all of the fields that begin with ``tag`` into the ``options`` object (minus the ``tag-`` prefix)\n: All options are first treated as Data Tiddler Names, then JSON, and finally as plain text\n\n;getCanvas(src,tag,type)\n: creates a uniquely-named \"canvas\" which may be of type ``type``. Supported types are ``div`` and ``canvas``\n: The height and width attributes from the ``src`` element will be applied to the canvas\n\n;nextColor(s,v)\n: returns a random-ish color string from the same palette as specified byt the ``s`` saturation and ``h`` hue.\n: The color is in the form of ``#rrggbb``\n\n;rgb_to_hsv(r,g,b)\n: returns array of [hue, saturation, value]\n: r can be array of [r,g,b] or individual parameters can be used\n\n;hsv_to_rgb(h,s,v)\n: returns array of [red, green, blue]\n: h can be array of [h,s,v] or individual parameters can be used\n"
}
}
}
{
"tiddlers": {
"$:/plugins/ihm/tidgraph/changelog": {
"created": "20151024161547099",
"creator": "ihm4u",
"modified": "20151031061347109",
"modifier": "ihm4u",
"tags": "",
"title": "$:/plugins/ihm/tidgraph/changelog",
"text": "For the complete changelog see\n\nhttps://ihm4u.github.io/tw5plugs/#Tidgraph%20-%20Changelog\n"
},
"$:/plugins/ihm/tidgraph/documentation": {
"title": "$:/plugins/ihm/tidgraph/documentation",
"text": "!!Example\nThe following example shows a tiddler which tags 7 children:\n\n``<$tidgraph start=\"Virtues\" />``\n\nlooks like this:\n\n{{$:/plugins/ihm/tidgraph/tidgraph.png}}\n\n!!Usage\nSimple usage:\n\n``<$tidgraph start=\"MyRootTiddler\" />``\n\nThe map will start with MyRootTiddler on the left, and show all its children recursively. The default maximum depth is 10 levels, it can be changed with the `maxdepth` attribute.\n\nAll options:\n\n|!Attribute |!Description|!Default |\n|`start` |Initial tiddler that starts the map | none |\n|`startat` |First level to display. 0 is the root tiddler named in the `start` attribute. 1 is the next level, etc. | 0 |\n|`maxdepth` |Maximum depth to display.| 10 |\n|`mode` |//tagging// or //linking// or custom. This is how to identify the children of a node. With //tagging// Tiddlers that tag other tiddlers become their parent. With //linking// tiddlers that link to other tiddlers become their parent. A custom mode can be specified by a `$:/config/tidgraph/modes/MyMode` tiddler where `MyMode` is the name of the mode. The subfilter can be also specified directly; e.g. `mode=\"fields[]\"`. See [[Custom Mode Demo|https://ihm4u.github.io/tw5plugs/#Custom%20Mode%20Demo]] for an example | //tagging// |\n|`nodetitle` |Field to use as title for the node. | //title// (or //caption// if present) |\n|`tooltip` |List of fields to use for node tooltip. The first field with a non empty value is used. | //summary// |\n|`filter` |Only tiddlers matching filter will be used | none |\n|`nocollapse` |Disable ability to collapse nodes. The graph allows node collapsing by default. | false |\n|`nodetemplate` |One or mode node templates to make node look like you want. See the [[Node Templates Demo|https://ihm4u.github.io/tw5plugs/#Node%20Templates%20Demo]] for examples of how to use them. | none |\n|`layout` |`E` for East (Vertical) or `S` for south (Horizontal) layout. | E |\n\n!CSS classes\nYou can also change colors, and other styles with the following CSS classes.\n\n|!Class |!Description |\n|tgr-node |Style for each node. If you want to change the color of the links inside the node use the `.tgr-node a` selector. |\n|tgr-edge |Style for the SVG path that connects the nodes. The old name was tgr-link. |\n|tgr-arrow |Style for the SVG polyline that draws the arrow at the end of the link |\n"
},
"$:/plugins/ihm/tidgraph/readme": {
"created": "20151024054526558",
"modified": "20151024065317719",
"tags": "",
"title": "$:/plugins/ihm/tidgraph/readme",
"text": "!!How\nSimply put this in your tiddler:\n\n``<$tidgraph start=\"MyRootTiddler\" />``\n\nThere are other options covered in the [[documentation|$:/plugins/ihm/tidgraph/documentation]].\n\n!!Features\n* No third-party libraries\n* Light weight\n* Rendering of map/graph with HTML5 and SVG (no heavy png or jpg images)\n* Automatic map/graph creation, no need for dragging/connecting/etc\n* Figures out tree-graph by means of tags or links, or custom modes \n* Collapse/expand nodes\n* User defined Node Templates!!\n\n!!Limitations\n* Layout is horizontal from left to right, if needed a vertical layout will be added later\n"
},
"$:/plugins/ihm/tidgraph/stylesheet": {
"tags": "$:/tags/Stylesheet",
"title": "$:/plugins/ihm/tidgraph/stylesheet",
"type": "text/css",
"text": "/*Eliminate border in table and cells*/\n.ihm-tgr-table {\n border-collapse: collapse;\n border: none;\n background-color: transparent;\n padding: 0;\n margin: 0;\n}\n\n.ihm-tgr-tablediv {\n /* We need this margin to prevent spurius vertical scroll\n * in tgr-container. It needs to have the SAME pixel value\n * as top and left in tgr-svg-int class so that the SVG\n * arrows match properly (this assures same origin coordinates\n * for table and svg)\n */\n margin: 10px; \n}\n\n.tgr-container table td {\n border: none;\n background-color: transparent;\n}\n\n/*nice round box around tiddlers*/\n.tgr-container td a {\n \n}\n\n.tgr-container {\n position:relative; \n left:0px; \n top:0px; \n background-color: transparent;\n overflow: auto; /* This is needed to scroll on big maps */\n z-index:1;\n}\n.tgr-svg-int { \n\tz-index: -1;\n\tposition:absolute;\n\tbackground-color:transparent;\n\topacity: 1;\n left: 10px;\n top: 10px;\n}\n\n/* SVG arrows */\n.ihm-tgr-link {\n fill: none;\n stroke-width: 2;\n stroke: #aeb0b5;\n}\n\n.tgr-edge-weak {\n stroke-dasharray: 3,5;\n}\n\n.tgr-arrow {\n fill: #aeb0b5;\n stroke-width: 0;\n}\n\n.ihm-tgr-node-container {\n position: relative;\n}\n\n.ihm-tgr-node-container-east {\n margin: 6px 10px;\n}\n\n.ihm-tgr-node-container-south {\n margin: 16px 4px;\n display: inline-block; /*FIXME*/\n}\n\n.ihm-tgr-node-container p {\n margin-top: 0px;\n margin-bottom: 0px;\n}\n\n.ihm-tgr-node {\n background-color: #dce4ef;\n border-radius: 15px;\n padding: 0.1em 0.4em;\n /* border: 0px dashed #cd2026; */\n box-shadow: 4px 4px 5px #888888;\n text-align: center;\n vertical-align: middle;\n font-size: 1em;\n color: #0071bc;\n}\n\n/* Collapse feature */\n.ihm-tgr-collapse {\n position: absolute;\n cursor: pointer;\n width: 14px;\n height: 14px;\n right: -14px;\n}\n\n.ihm-tgr-collapse-east {\n top: 50%;\n transform: translateY(-50%);\n -ms-transform: translateY(-50%);\n -webkit-transform: translateY(-50%);\n}\n\n.ihm-tgr-collapse-south {\n left: 50%;\n transform: translateX(-50%);\n -ms-transform: translateX(-50%);\n -webkit-transform: translateX(-50%);\n}\n\na.ihm-tgr-collapse:hover {\n text-decoration: none;\n background: #999999;\n}\n\n/* Vertical layout divs */\n.ihm-tgr-divtable {\n display: table;\n}\n\n.ihm-tgr-node-group {\n display: table-row;\n}\n\n.ihm-tgr-node-cell {\n display: table-cell;\n vertical-align: top;\n text-align: center;\n}\n"
},
"$:/plugins/ihm/templates/collapse": {
"created": "20151120174133063",
"modified": "20151120180705805",
"tags": "",
"title": "$:/plugins/ihm/templates/collapse",
"type": "text/vnd.tiddlywiki",
"text": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\"\n\t y=\"0px\" width=\"14px\" height=\"14px\" >\n<circle cx=\"7\" cy=\"7\" r=\"6\" stroke=\"#aeb0b5\" stroke-width=\"1\" fill=\"#aeb0b5\"/>\n<polyline points=\"4,7 10,7\" fill=\"none\" stroke=\"white\"/>\n</svg>\n"
},
"$:/plugins/ihm/templates/expand": {
"created": "20151120174133063",
"modified": "20151120180705805",
"tags": "",
"title": "$:/plugins/ihm/templates/expand",
"type": "text/vnd.tiddlywiki",
"text": "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\"\n\t y=\"0px\" width=\"14px\" height=\"14px\" >\n<circle cx=\"7\" cy=\"7\" r=\"6\" stroke=\"#aeb0b5\" stroke-width=\"1\" fill=\"#aeb0b5\"/>\n<polyline points=\"4,7 10,7 7,7 7,10 7,4\" fill=\"none\" stroke=\"white\"/>\n</svg>\n"
},
"$:/plugins/ihm/tidgraph/utils.js": {
"text": "/*\\\ntitle: $:/plugins/ihm/tidgraph/utils.js\ntype: application/javascript\nmodule-type: library\n\nInternal utility functions for tidgraph plugin.\n\n\\*/\n(function(){function u(a){var c=a.getBoundingClientRect(),b=document.body,e=document.documentElement,g=c.top-(a.scrollTop||window.pageYOffset||e.scrollTop||b.scrollTop)-(e.clientTop||b.clientTop||0);a=c.left-(a.scrollLeft||window.pageXOffset||e.scrollLeft||b.scrollLeft)-(e.clientLeft||b.clientLeft||0);return{top:g,left:a,width:c.width,height:c.height,right:a+c.width,bottom:g+c.height}}function q(a,c,b){b=b||function(a,b,c){if(a)return!0};a=$tw.utils.parseStringArray(a);for(var e=a.length,g=c.length,\nf=0;f<g;f++)for(var h=0;h<e;h++){var d=$tw.wiki.getTiddler(c[f]);if(d&&(d=d.getFieldString(a[h]),b(d,a[h],c[f])))return d}return\"\"}function x(a){var c=!1;return(a=q(\"_tgr_node_class _tgr_node_class_add\",[a.id,a.template],function(a,e,g){if(a)return c=\"_tgr_node_class_add\"===e?!0:!1,!0}))&&\"tgr-default\"!==a?c?\"ihm-tgr-node tgr-node \"+a:a:\"ihm-tgr-node tgr-node\"}function w(a,c,b){var e;a=u(a);if(\"string\"===typeof b){if(e=document.querySelector(b),null==e)return null}else b instanceof HTMLElement&&(e=\nb);var g=u(e);b=g.bottom-a.top;e=g.left-a.left;var f=g.right-a.left;a=g.top-a.top;g=\"\";switch(c.toUpperCase()){case \"L\":g=[Math.round(e),Math.round(b/2+a/2)];break;case \"R\":g=[Math.round(f),Math.round(b/2+a/2)];break;case \"T\":g=[Math.round(f/2+e/2),Math.round(a)];break;case \"B\":g=[Math.round(f/2+e/2),Math.round(b)]}return g}function y(a,c,b,e,g){var f;a:{var h=u(c),d=u(b);f=h.left+h.width/2;var h=h.top+h.height/2,n=d.left+d.width/2,d=d.top+d.height/2;switch(e){case \"E\":f=4>n-f?[\"R\",\"R\"]:[\"R\",\"L\"];\nbreak a;case \"S\":f=4>d-h?[\"B\",\"B\"]:[\"B\",\"T\"];break a}f=void 0}d=w(a,f[0],c);a=w(a,f[1],b);var m,l,h=10,n=\"\";g&&(n=' class=\"tgr-edge-weak\"');if(null==c||null==b)return error(\"can't connect null element\");if(null==d)return error(\"port not found for \"+c.tagName+\" - \"+c.innerHTML);if(null==a)return error(\"port not found for \"+b.tagName+\" - \"+b.innerHTML);c=Math.abs(a[1]-d[1]);b=Math.abs(a[0]-d[0]);switch(e){case \"E\":return a[1]>d[1]&&(m=c/2),a[1]<d[1]&&(m=-c/2),5>c&&(m=0),\"L\"==f[1]&&(l=-10),\"R\"==f[1]&&\n(l=10,h=20),'<path d=\"M'+d[0]+\",\"+d[1]+\" Q\"+(d[0]+h)+\",\"+d[1]+\" \"+(d[0]+h)+\",\"+(d[1]+m)+\" Q\"+(d[0]+h)+\",\"+a[1]+\" \"+(a[0]+l)+\",\"+a[1]+'\"'+n+' marker-end=\"url(#tgr-arrow)\"/>';case \"S\":return a[0]>d[0]&&(l=b/2),a[0]<d[0]&&(l=-b/2),5>b&&(l=0),\"T\"==f[1]&&(m=-10,h=10),\"B\"==f[1]&&(m=10,h=20),'<path d=\"M'+d[0]+\",\"+d[1]+\" Q\"+d[0]+\",\"+(d[1]+h)+\" \"+(d[0]+l)+\",\"+(d[1]+h)+\" Q\"+a[0]+\",\"+(d[1]+h)+\" \"+a[0]+\",\"+(a[1]+m)+'\"'+n+' marker-end=\"url(#tgr-arrow)\"/>'}}function v(a,c){var b;switch(c.mode){case \"tagging\":b=\n\"[[\"+a+\"]tagging[]]+\"+c.filter;break;case \"linking\":b=\"[[\"+a+\"]links[]!is[missing]]+\"+c.filter;break;default:b=\"[[\"+a+\"]\"+c.mode+\"]+\"+c.filter}return $tw.wiki.filterTiddlers(b)}function z(a,c,b){switch(b.mode.toLowerCase()){case \"tagging\":return(b=$tw.wiki.getTiddler(a))?b.hasTag(c):!1;default:return b=v(c,b),-1!==b.indexOf(a)}}function A(a,c){function b(b,l,k){h=l;d=b;n=encodeURIComponent(h);m=encodeURIComponent(d);g=document.getElementById(c.id+\"-\"+n);f=document.getElementById(c.id+\"-\"+m);g&&f&&\ne.push(y(a,g,f,c.layout,k))}var e=[],g,f,h,d,n,m;p(c.root,function(a,c,d){(c=a.parent)&&b(a.id,c.id)},{},{skipvisited:!0});for(var l=c.outliers.length,k=0;k<l;k++)b(c.outliers[k][0],c.outliers[k][1],!0);return e.join(\" \")}function p(a,c,b,e){e=e||{};var g=e.done||[],f=e.getCh||function(a){return a.collapse?[]:a.children},h=e.lvl||0,d=void 0===e.skipvisited?!0:e.skipvisited;e.leave=e.leave||!1;if(d&&-1!==g.indexOf(a))return b;g.push(a);f=f(a);d=f.length;b=b||{};e.lvl=h+1;e.done=g;if(!1===c(a,b,h))return e.leave=\n!0,b;for(a=0;a<d;a++)if(b=p(f[a],c,b,e),e.leave)return b;e.lvl--;return b}function B(a,c,b,e){e=e||{};var g=e.getCh||function(a){return a.collapse?[]:a.children},f=e.getId||function(a){return a.id},h=void 0===e.skipvisited?!0:e.skipvisited,d=e.maxdepth||Number.MAX_VALUE;b=b||{};var n=[],m=[],l=[],k=0;n.push(a);l[f(a)]=void 0;do{a=n.length;for(var q=0;q<a;q++){var r=n.shift(),p;p=h?-1===m.indexOf(r)?!1:!0:!1;if(!p&&!1===c(r,l[f(r)],b,k))return b;m.push(r);p=g(r);n=n.concat(p);p&&p.forEach(function(a){var b=\nl[f(a)];b?f(b)!==f(r)&&e.outlier&&e.outlier(a,r):l[f(a)]=r})}k++}while(0!==n.length&&k<=d);return b}function C(a,c){return p(a,function(a,c){c.cnt++;return!0},{cnt:0},{skipvisited:c}).cnt-1}function D(a,c,b){function e(a,b){if(-1!==$tw.utils.parseStringArray(b).indexOf(c.toString()))return!0}b=$tw.utils.parseStringArray(b);var g=q(\"_tgr_node_template\",[a]),f=[];$tw.utils.each(b,function(b){var c=$tw.wiki.getTiddler(b),c=c?c.getFieldString(\"_tgr_node_filter\"):\"\",d=$tw.wiki.filterTiddlers(c);c&&-1===\nd.indexOf(a)&&f.push(b)});0<f.length&&$tw.utils.removeArrayEntries(b,f);g||q(\"_tgr_node_filter\",b,function(b,c,d){c=$tw.wiki.filterTiddlers(b);if(b&&-1!==c.indexOf(a))if(b=$tw.wiki.getTiddler(d).getFieldString(\"_tgr_node_level\")){if(e(d,b))return g=d,!0}else return g=d,!0});g||q(\"_tgr_node_level\",b,function(a,b,c){if(e(c,a))return g=c,!0});if(!g)for(var h=b.length,d=0;d<h;d++){var n=$tw.wiki.getTiddler(b[d]);if(n&&!n.hasField(\"_tgr_node_level\")&&!n.hasField(\"_tgr_node_filter\")){g=b[d];break}}g||(g=\n\"tgr-default\");return g}function t(a,c,b,e){if(!(this instanceof t))throw\"Error: call new tnode(id=\"+c+\")\";this.parent=a;this.id=c;this.children=[];this.collapse=!1;this.widget=e;this.template=void 0;a=D(c,b,e.nodetemplate);\"tgr-default\"!==a&&(this.transcluder=b=\"$:/temp/tidgraph/\"+e.tidtree.id+\"/\"+c,this.template=a,$tw.wiki.addTiddler(new $tw.Tiddler({title:b,text:\"{{\"+c+\"||\"+a+\"}}\"})),-1===e.templatesInUse.indexOf(a)&&e.templatesInUse.push(a))}exports.buildTable=function(a,c){function b(a,b){return $tw.utils.domMaker(a,\n$tw.utils.extend(b,{document:c.document}))}function e(a){var d=encodeURIComponent(a.id),e;var f=a.id;e=$tw.wiki.tiddlerExists(f)?c.nodetitle?q(c.nodetitle,[f]):q(\"caption title\",[f]):f;var g=$tw.wiki.tiddlerExists(a.id)?\"tc-tiddlylink-resolves\":\"tc-tiddlylink-missing\",g=\"tc-tiddlylink \"+g,f=x(a);a.template?a=b(\"div\",{\"class\":f,innerHTML:$tw.wiki.renderTiddler(\"text/html\",a.transcluder)}):(a=b(\"a\",{\"class\":g,text:e,attributes:{href:\"#\"+d}}),a=b(\"div\",{\"class\":f,children:[a]}));return a}function g(a,\nd){var e=1+C(a,!0),f=encodeURIComponent(a.id),g=q(c.tooltip,[a.id]),k;!1===c.nocollapse&&a.children&&0<a.children.length?(k=$tw.wiki.renderTiddler(\"text/html\",\"$:/plugins/ihm/templates/\"+(a.collapse?\"expand\":\"collapse\")).replace(/^<p>/,\"<span>\").replace(/<\\/p>$/,\"</span>\"),k=b(\"span\",{\"class\":\"ihm-tgr-collapse \"+(\"E\"==a.widget.tidtree.layout?\"ihm-tgr-collapse-east\":\"ihm-tgr-collapse-south\")+\" tc-tiddlylink\",innerHTML:k}),$tw.utils.addEventListeners(k,[{name:\"click\",handlerObject:a,handlerMethod:\"collapseClickEvent\"}]),\nk=[d,k]):k=[d];f=b(\"div\",{\"class\":\"ihm-tgr-node-container \"+(\"E\"==a.widget.tidtree.layout?\"ihm-tgr-node-container-east\":\"ihm-tgr-node-container-south\"),children:k,attributes:{id:c.id+\"-\"+f,title:g}});return\"E\"===c.layout?b(\"td\",{attributes:{rowspan:e},children:[f]}):b(\"div\",{attributes:{\"class\":\"ihm-tgr-node-cell\"},children:[f]})}var f;f=\"E\"==c.layout?b(\"table\",{\"class\":\"ihm-tgr-table\",attributes:{id:c.id+\"-table\"}}):b(\"div\",{\"class\":\"ihm-tgr-divtable\",attributes:{id:c.id+\"-table\"}});(function(a){switch(c.layout){case \"E\":p(c.root,\nfunction(d,f,m){m>=c.startat&&(f=e(d),d=g(d,f),d=b(\"tr\",{children:[d]}),a.appendChild(d));return!0},{},{skipvisited:!0});break;case \"S\":p(c.root,function(d,f,m){if(m>=c.startat){var l=e(d),l=g(d,l),k=f.nodegroup[f.nodegroup.length-1];k?m>=f.lastdepth?k.appendChild(l):m<f.lastdepth&&(f.nodegroup.pop(),k=f.nodegroup[f.nodegroup.length-1],k.appendChild(l)):a.appendChild(l);!d.collapse&&0<d.children.length&&(d=b(\"div\",{\"class\":\"ihm-tgr-node-group\"}),f.nodegroup.push(d),l.appendChild(d))}f.lastdepth=m;\nreturn!0},{nodegroup:[],lastdepth:-1},{skipvisited:!0})}})(f);return f};exports.error=function(a){return'<span style=\"color:green; font-size:1.5em\">\\u26a0 Tidgraph: </span><span style=\"color:red\">'+a+\"</span>\"};exports.buildSVG=function(a,c){var b=document.getElementById(c.id+\"-table\");if(b)return getComputedStyle(b),'<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"'+a.offsetHeight+'px\" width=\"'+a.offsetWidth+'px\" style=\"overflow: visible\"><g class=\"ihm-tgr-link tgr-link tgr-edge\" style=\"overflow: visible\"> <defs> <marker id=\"tgr-arrow\" viewBox=\"0 0 10 10\" refX=\"1\" refY=\"5\" markerUnits=\"strokeWidth\" orient=\"auto\" markerWidth=\"8\" markerHeight=\"6\"> <polyline class=\"ihm-tgr-arrow tgr-arrow\" points=\"0,0 10,5 0,10 0,5\" style=\"opacity:1;\" /></marker></defs> '+\nA(a,c)+\"</g> </svg>\"};exports.isDescendant=function(a,c,b){if(z(a,c,b))return!0;var e=!1;p(c,function(b,c,h){if(b===a)return e=!0,!1},{},{skipvisited:!0,getCh:function(a){return v(a,b)}});return e};exports.makeTidTree=function(a,c,b){b=b||{};var e=!1;c.outliers=[];var g=new t(void 0,a,0,b.widget);B(a,function(a,c,d,e){if(c){a:{for(var g=d.visited,l=g.length,k=0;k<l;k++)if(g[k].id===c){c=g[k];break a}c=void 0}a=c.addChild(a,e,b.widget);d.visited.push(a)}return!0},{visited:[g]},{getId:function(a){return a},\ngetCh:function(a){return v(a,c)},maxdepth:c.maxdepth,skipvisited:!0,outlier:function(a,b){e=!1;$tw.utils.each(c.outliers,function(c){c[0]===a&&c[1]===b&&(e=!0)});e||c.outliers.push([a,b])}});return g};t.prototype.addChild=function(a,c,b){a=new t(this,a,c,b);this.children.push(a);return a};t.prototype.toString=function(){return\"tnode(id=\"+this.id+\")\"};t.prototype.collapseClickEvent=function(a){this.collapse=!this.collapse;this.widget.paint()}})();\n",
"title": "$:/plugins/ihm/tidgraph/utils.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/ihm/tidgraph/tidgraph.png": {
"created": "20151024064703806",
"modified": "20151024064720670",
"title": "$:/plugins/ihm/tidgraph/tidgraph.png",
"type": "image/png",
"text": "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\n"
},
"$:/plugins/ihm/widgets/tidgraph.js": {
"text": "/*\\\ntitle: $:/plugins/ihm/widgets/tidgraph.js\ntype: application/javascript\nmodule-type: widget\n\nTidgraph widget to render HTML5/SVG graph of tiddlers\n\n\\*/\n(function(){var e=require(\"$:/core/modules/widgets/widget.js\").widget,c=function(b,f){this.initialise(b,f)},d=require(\"$:/plugins/ihm/tidgraph/utils.js\");c.prototype=new e;c.prototype.render=function(b,f){this.tidtree&&this.delTempTiddlers();this.parentDomNode=b;this.nextSiblingDomNode=f;this.computeAttributes();this.execute();-1===[\"tagging\",\"linking\"].indexOf(this.mode)&&(this.mode=$tw.wiki.getTiddlerText(\"$:/config/tidgraph/modes/\"+this.mode)||this.mode);this.tidtree=[];this.tidtree.mode=this.mode;\nthis.tidtree.maxdepth=this.maxdepth;this.tidtree.startat=this.startat;this.tidtree.nodetitle=this.nodetitle;this.tidtree.tooltip=this.tooltip;this.tidtree.filter=this.filter;this.tidtree.nocollapse=this.nocollapse;this.tidtree.document=this.document;this.tidtree.nodetemplate=this.nodetemplate;this.tidtree.layout=this.layout;this.templatesInUse=$tw.utils.parseStringArray(this.nodetemplate);this.tidtree.id=(new Date).valueOf();if($tw.wiki.getTiddler(this.startTid)){this.div=this.document.createElement(\"div\");\nthis.div.className=\"tgr-container tgr\";this.tablediv=this.document.createElement(\"div\");this.tablediv.className=\"ihm-tgr-tablediv\";this.table=void 0;this.div.appendChild(this.tablediv);this.svgdiv=this.document.createElement(\"div\");this.svgdiv.className=\"tgr-svg-int\";this.div.appendChild(this.svgdiv);this.parentDomNode.insertBefore(this.div,this.nextSiblingDomNode);this.domNodes.push(this.div);this.tidtree.root=d.makeTidTree(this.startTid,this.tidtree,{widget:this});this.paint();var a=this,c=function(){a.svgdiv.innerHTML=\nd.buildSVG(a.tablediv,a.tidtree);a.oldresize&&a.oldresize()},e=function(){a.svgdiv.innerHTML=d.buildSVG(a.tablediv,a.tidtree)};this.div.onscroll=function(){a.scroll_to||clearTimeout(a.scroll_to);a.scroll_to=setTimeout(e,100)};this.onresize_updated||(window.onresize&&void 0==this.oldresize&&(this.oldresize=window.onresize),window.onresize=function(){a.resize_to||clearTimeout(a.resize_to);a.resize_to=setTimeout(c,100)},this.onresize_updated=!0)}};c.prototype.delTempTiddlers=function(){var b=$tw.wiki.filterTiddlers(\"[prefix[$:/temp/tidgraph/\"+\nthis.tidtree.id+\"]]\");$tw.utils.each(b,function(b){$tw.wiki.deleteTiddler(b)})};c.prototype.paint=function(){this.sidebar=$tw.wiki.getTiddlerText(\"$:/state/sidebar\");var b=d.buildTable(this.startTid,this.tidtree);this.table?this.tablediv.replaceChild(b,this.table):this.tablediv.appendChild(b);this.svgdiv.innerHTML=d.buildSVG(this.tablediv,this.tidtree);this.table=b};c.prototype.execute=function(){this.startTid=this.getAttribute(\"start\");this.mode=this.getAttribute(\"mode\",\"tagging\");this.maxdepth=\nparseInt(this.getAttribute(\"maxdepth\",\"10\"));this.startat=this.getAttribute(\"startat\",\"0\");this.nodetitle=this.getAttribute(\"nodetitle\");this.tooltip=this.getAttribute(\"tooltip\",\"summary\");this.filter=this.getAttribute(\"filter\",\"[!is[system]]\");this.nocollapse=this.hasAttribute(\"nocollapse\");this.nodetemplate=this.getAttribute(\"nodetemplate\",\"\");this.layout=this.getAttribute(\"layout\",\"E\");-1==[\"E\",\"S\"].indexOf(this.layout)&&(this.layout=\"E\")};c.prototype.refresh=function(b){var c=!1,a;this.computeAttributes();\nthis.execute();for(a in b)if((b=document.getElementById(this.tidtree.id+\"-\"+encodeURIComponent(a))||d.isDescendant(a,this.startTid,this.tidtree)||-1!==this.templatesInUse.indexOf(a))||(b=(b=$tw.wiki.getTiddler(a))&&b.hasTag(\"$:/tags/Stylesheet\")?!0:!1),b||-1!==a.indexOf(\"$:/config/tidgraph/modes\")){c=!0;break}$tw.wiki.getTiddlerText(\"$:/state/sidebar\")!==this.sidebar&&(c=!0);return c?(this.refreshSelf(),!0):!1};exports.tidgraph=c})();\n",
"title": "$:/plugins/ihm/widgets/tidgraph.js",
"type": "application/javascript",
"module-type": "widget"
}
}
}
{
"tiddlers": {
"$:/plugins/jd/mob/config": {
"created": "20171029115120346",
"creator": "JD",
"text": "<style>\n.tc-btn-invisible { text-align: left; }\n</style>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##freshinstall\" text=\"yes\">\n<div class=\"jd-bq\">\n<p>\nThanks for installing this plugin! You can always find the latest updates <a target=\"blank\" href=\"http://j.d.simplemobile.tiddlyspot.com\">here</a>\n</p>\n<p>\nThis plugin options tiddler is also available at ''Control panel'' >> ''Appearance'' >> ''JD Mob''\n</p>\n<p>\n<$button>\n<<jdconfig freshinstall no>>\nClose message\n</$button>\n</p>\n</div>\n<br>\n<hr>\n<br>\n</$reveal>\nShow as:\n<$select tiddler=\"$:/plugins/jd/mob/config/config\" index=\"configtype\">\n<option value=\"list\">List</option>\n<option value=\"htabs\">Horizontal tabs</option>\n<option value=\"vtabs\">Vertical tabs</option>\n</$select>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##configtype\" text=\"list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/jd/config]]\"><$transclude/><hr></$list>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##configtype\" text=\"htabs\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/jd/config]!has[draft.of]]\" \"$:/plugins/jd/mob/config/barpresets\">>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##configtype\" text=\"vtabs\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/jd/config]!has[draft.of]]\" \"$:/plugins/jd/mob/config/barpresets\" \"$:/state/tab/JDconfig\" \"tc-vertical\">>\n</$reveal>",
"title": "$:/plugins/jd/mob/config",
"tags": "$:/tags/ControlPanel/Appearance",
"subtitle": "Configure JD mobile layout",
"modifier": "JD",
"modified": "20171122151014084",
"caption": "JD Mob"
},
"$:/plugins/jd/mob/config/fonts": {
"created": "20171031124255884",
"creator": "JD",
"text": "<style> .texte { width: calc(100% - 60px); } </style>\n\n<h2>Fonts and heights presets</h2>\n\n\n<$button class=\"tc-btn-invisible\">\n<<jdfont 38px 30px 38px 28px 20px>>\n<<jdconfig fontsize largest>>\n<<jdradbut fontsize largest>>\n</$button> Largest\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 34px 26px 34px 24px 20px>>\n<<jdconfig fontsize larger>>\n<<jdradbut fontsize larger>>\n</$button> Larger\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 30px 22px 30px 20px 20px>>\n<<jdconfig fontsize large>>\n<<jdradbut fontsize large>>\n</$button> Large\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 26px 18px 26px 16px 20px>>\n<<jdconfig fontsize medium>>\n<<jdradbut fontsize medium>>\n</$button> Medium\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 22px 14px 20px 12px 20px>>\n<<jdconfig fontsize small>>\n<<jdradbut fontsize small>>\n</$button> Small\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont 18px 10px 16px 8px 20px>>\n<<jdconfig fontsize smaller>>\n<<jdradbut fontsize smaller>>\n</$button> Smaller\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdfont>>\n<<jdconfig fontsize default>>\n<<jdradbut fontsize default>>\n</$button> TW5 default\n<br>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-title\" caption=\"Title\" list-before=\"$:/temp/jd/mob/font/font-body\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-body\" caption=\"Body, text buttons\" list-after=\"$:/temp/jd/mob/font/font-title\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/lineheight\" caption=\"Lineheight\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-tab-button\" caption=\"Tab buttons\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-button\" caption=\"Image buttons\"/>\n<<jdconfig fontsize custom>>\n<<jdradbut fontsize custom>>\n</$button> Custom\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##fontsize\" text=\"custom\">\n\nInclude unit (''px'' or ''em'') when entering custom values\n\n<table style=\"width:100%\">\n<tr>\n<th style=\"width:40%\">Element</th>\n<th style=\"width:60%\">Adjust</th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/temp/jd/mob/font/]!suffix[sitetitle]]\">\n<tr>\n<td><$view field=\"caption\"/></td>\n<td><$edit-text tiddler={{!!title}} field=\"temp\" placeholder={{!!text}} class=\"texte\"/>\n<$reveal type=\"match\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✓</$button>\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✕</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} text={{!!temp}}/>\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✓</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✕</$button>\n</$reveal>\n</td>\n</tr>\n</$list>\n</table>\n</$reveal>\n<br><br>",
"title": "$:/plugins/jd/mob/config/fonts",
"tags": "$:/tags/jd/config",
"modifier": "JD",
"modified": "20171120143104637",
"caption": "Fonts and heights"
},
"$:/plugins/jd/mob/readme": {
"created": "20171030143047925",
"creator": "JD",
"text": "This is a mobile layout that applies to narrow screens. It introduces the following:\n\n# A Topbar that can be any of the following:\n#* Hidden\n#* Titlebar (search, title, subtitle, menu)\n#* Mobbuttons bar\n#** Buttons tagged ''~$:/tags/jd/mobbutton''\n#* Searchbar\n#** Simple searchbar lists standard search results only\n#** Combined searchbar lists all search results (possibly slow on some devices)\n#* Control area containing ''Top Left Bar'', ''Page Control'', ''Mob-only'', and ''Top Right Bar'' buttons (in that order)\n#** ''Top Left Bar'' >> buttons tagged ''~$:/tags/TopLeftBar''\n#** ''Page control'' >> buttons tagged ''~$:/tags/PageControls''\n#** ''Mob-only'' >> other buttons tagged ''~$:/tags/jd/mobbutton''\n#** ''Top Right Bar'' >> buttons tagged ''~$:/tags/TopRightBar''\n#** Buttons you don't want to appear here should be tagged ''~$:/tags/jd/mobno'' \n\n# A Bottombar that can be any of the following:\n#* Hidden\n#* Mobbuttons bar\n#** Buttons tagged ''~$:/tags/jd/mobbutton''\n#* Control area containing ''Top Left Bar'', ''Page Control'', ''Mob-only'', and ''Top Right Bar'' buttons (in that order)\n#** ''Top Left Bar'' >> buttons tagged ''~$:/tags/TopLeftBar''\n#** ''Page control'' >> buttons tagged ''~$:/tags/PageControls''\n#** ''Mob-only'' >> other buttons tagged ''~$:/tags/jd/mobbutton''\n#** ''Top Right Bar'' >> buttons tagged ''~$:/tags/TopRightBar''\n#** Buttons you don't want to appear here should be tagged ''~$:/tags/jd/mobno'' \n\n//Note:// \n\nThis layout is tied to the ''Sidebar Breakpoint'' set at ''Control Panel'' >> ''Appearance'' >> ''Theme Tweaks''.\n\nThis layout is compatible with any core theme as of release date.\n\n<a target=\"blank\" href=\"http://j.d.simplemobile.tiddlyspot.com\">Project Homepage on Tiddlyspot</a>\n\n!! Version History\n\n!!! 2018-09-03 Release of version 1.0.4\n\n* Added ability to create tiddler out of search term via \"+\" button, or keyboard shortcut: \"ctrl+space\"\n\n[[Detailed changelog|http://j.d.simplemobile.tiddlyspot.com/#Changelog]]",
"title": "$:/plugins/jd/mob/readme",
"tags": "",
"modifier": "JD",
"modified": "20180903122259331"
},
"$:/plugins/jd/mob/config/config": {
"created": "20171109145547252",
"creator": "JD",
"text": "freshinstall: yes\ndefaultconfirm: cancel\nconfigtype: list\nfontsize: default\nscrollbars: show\nbarpreset: 4\nstoryfix: no\ntitlebaradjust: no\ntopbar: fixedsearch\ntopbarchoice: hide\nsearchbar: yes\nradbuttop: fixedsearch\nsearchbarchoice: simple\nbottombar: controls\nradbuttopfixedsearchops: hide\nradbuttopcontrolsops: hide\nradbuttopmobbuttonsops: hide\nradbuttoptitleops: hide\nbottombarcontrolsops: hide\nbottombarmobbuttonsops: hide\nbarpreset1ops: hide\nbarpreset2ops: hide\nbarpreset3ops: hide\nbarpreset4ops: hide\nsearchbutton: simple\nfocus: show",
"type": "application/x-tiddler-dictionary",
"title": "$:/plugins/jd/mob/config/config",
"modifier": "JD",
"modified": "20171122154523597"
},
"$:/plugins/jd/mob/config/topbar": {
"created": "20171028024424838",
"creator": "JD",
"text": "<h2>Topbar</h2>\n<$button class=tc-btn-invisible>\n<<setTopsearchbar>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop fixedsearch>>\n</$button> Fixed searchbar\n<<moreOps radbuttop fixedsearch searchbar>>\n<$button class=tc-btn-invisible>\n<<setTopcontrols>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop controls>>\n</$button> Controls\n<<moreOps radbuttop controls searchbutton>>\n<$button class=tc-btn-invisible>\n<<setTopmobbuttons>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop mobbuttons>>\n</$button> Mob buttons only\n<<moreOps radbuttop mobbuttons searchbutton>>\n<$button class=tc-btn-invisible>\n<<setToptitlebar>>\n<<tglSearch>>\n<<jdconfig searchbutton simple>>\n<<jdradbut radbuttop title>>\n</$button> Titlebar\n<<moreOps radbuttop title titlebar>>\n<$button class=tc-btn-invisible>\n<<setTophide>>\n<<jdradbut radbuttop hide>>\n</$button> Hidden\n<br>",
"title": "$:/plugins/jd/mob/config/topbar",
"modifier": "JD",
"modified": "20171122131221362",
"list-before": "$:/plugins/jd/mob/config/bottombar",
"caption": "Topbar style"
},
"$:/plugins/jd/mob/config/bottombar": {
"created": "20171110164302862",
"creator": "JD",
"text": "<h2>Bottombar</h2>\n<$button class=\"tc-btn-invisible\">\n<<setBottomcontrols>>\n<<jdradbut bottombar controls>>\n</$button> Controls\n<<moreOps bottombar controls searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig bottombar mobbuttons>>\n<<jdradbut bottombar mobbuttons>>\n</$button> Mob buttons only\n<<moreOps bottombar mobbuttons searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<noBottom>>\n<<jdradbut bottombar hide>>\n</$button> Hidden\n<br>",
"title": "$:/plugins/jd/mob/config/bottombar",
"modifier": "JD",
"modified": "20171122131210851",
"list-after": "$:/plugins/jd/mob/config/topbar",
"caption": "Bottombar style"
},
"$:/plugins/jd/mob/config/barpresets": {
"created": "20171113033257223",
"creator": "JD",
"text": "<h2>Topbar and bottombar presets</h2>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 1>>\n<<setToptitlebar>>\n<<noBottom>>\n<<jdradbut barpreset 1>>\n</$button> ''Titlebar'' on top, hidden bottom\n<<moreOps barpreset 1 titlebar>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 2>>\n<<setTopcontrols>>\n<<noBottom>>\n<<jdradbut barpreset 2>>\n</$button> ''Controls'' on top, hidden bottom\n<<moreOps barpreset 2 searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 3>>\n<<setTophide>>\n<<setBottomcontrols>>\n<<jdradbut barpreset 3>>\n</$button> Hidden top, ''Controls'' on bottom\n<<moreOps barpreset 3 searchbutton>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 4>>\n<<setTopsearchbar>>\n<<setBottomcontrols>>\n<<jdradbut barpreset 4>>\n</$button> ''Searchbar'' on top, ''Controls'' on bottom\n<<moreOps barpreset 4 searchbar>>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig barpreset 5>>\n<<jdradbut barpreset 5>>\n</$button> Custom topbar and bottombar\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##barpreset\" text=\"5\">\n{{$:/plugins/jd/mob/config/topbar}}\n{{$:/plugins/jd/mob/config/bottombar}}\n</$reveal>\n<br><br>",
"title": "$:/plugins/jd/mob/config/barpresets",
"tags": "$:/tags/jd/config",
"modifier": "JD",
"modified": "20171122154450000",
"caption": "Top and bottom bars"
},
"$:/plugins/jd/mob/template/topbar": {
"text": "<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"fixedsearch\">\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##fixedsearch\" text=\"combined\">\n{{$:/plugins/jd/mob/template/combinedsearch}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##fixedsearch\" text=\"simple\">\n{{$:/plugins/jd/mob/template/simplesearch}}\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"controls\">\n<span class=\"jd-topbar\">\n{{$:/plugins/jd/mob/template/controls}}\n</span>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"mobbuttons\">\n<span class=\"jd-topbar\">\n<div class=\"tc-page-controls\">\n{{$:/plugins/jd/mob/template/mobbuttons}}\n</div>\n</span>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"title\">\n<span class=\"jd-topbar\">\n{{$:/plugins/jd/mob/template/titlebar}}\n</span>\n</$reveal>",
"title": "$:/plugins/jd/mob/template/topbar",
"tags": "$:/tags/PageTemplate",
"modifier": "JD",
"modified": "20171118170723817",
"fixedsearch": "{{$:/plugins/jd/mob/template/combinedsearch}}",
"creator": "JD",
"created": "20171018115714311"
},
"$:/plugins/jd/mob/template/titlebar": {
"created": "20171112032454483",
"creator": "JD",
"text": "<div class=\"jd-title-wrapper\">\n<span class=\"tc-site-title\"><$transclude tiddler=\"$:/SiteTitle\"/></span>\n<span class=\"tc-site-subtitle\"><$transclude tiddler=\"$:/SiteSubtitle\"/></span>\n</div>\n<div class=\"jd-title-controls\">\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbutton\" text=\"simple\">\n{{$:/plugins/jd/mob/button/search}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbutton\" text=\"combined\">\n{{$:/plugins/jd/mob/button/search}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbutton\" text=\"core\">\n{{$:/core/ui/Buttons/advanced-search}}\n</$reveal>\n{{$:/core/ui/TopBar/menu}}\n</div>",
"title": "$:/plugins/jd/mob/template/titlebar",
"tags": "",
"modifier": "JD",
"modified": "20171122134204001"
},
"$:/plugins/jd/mob/template/controls": {
"created": "20171111135718973",
"creator": "JD",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]!tag[$:/tags/jd/mobno]]\">\n<$transclude/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]!tag[$:/tags/jd/mobno]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>>/>\n</$reveal>\n</$list>\n{{$:/plugins/jd/mob/template/mobbuttons}}\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]!tag[$:/tags/jd/mobno]]\">\n<$transclude/>\n</$list>\n</div>",
"title": "$:/plugins/jd/mob/template/controls",
"tags": "",
"modifier": "JD",
"modified": "20171119140040863"
},
"$:/plugins/jd/mob/template/bottombar": {
"text": "<div class=\"jd-bottombar\">\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"controls\">\n{{$:/plugins/jd/mob/template/controls}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"mobbuttons\">\n<div class=\"tc-page-controls\">\n{{$:/plugins/jd/mob/template/mobbuttons}}\n</div>\n</$reveal>\n</div>",
"title": "$:/plugins/jd/mob/template/bottombar",
"tags": "$:/tags/PageTemplate",
"modifier": "JD",
"modified": "20171118170729880",
"creator": "JD",
"created": "20171115114644869"
},
"$:/plugins/jd/mob/template/mobbuttons": {
"text": "\\define config-mobtitle()\n$:/config/jd/mobbutton/visibility/$(listItem)$\n\\end\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/jd/mobbutton]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-mobtitle>> text=\"hide\">\n<$transclude tiddler=<<listItem>>/>\n</$reveal>\n</$list>",
"title": "$:/plugins/jd/mob/template/mobbuttons",
"tags": "",
"modifier": "JD",
"modified": "20171118161831963",
"creator": "JD",
"created": "20171118055005587"
},
"$:/plugins/jd/mob/config/mobbuttons": {
"created": "20171118051624478",
"creator": "JD",
"text": "\\define config-base() $:/config/jd/mobbutton/visibility/\n<h2>Mob buttons</h2>\n<p>Here are buttons tagged <b>~$:/tags/jd/mobbutton</b></p>\n<p>Choose which ones are displayed. Drag and drop to change the ordering</p>\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/jd/mobbutton\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n</$set>\n</$set>\n<br>",
"title": "$:/plugins/jd/mob/config/mobbuttons",
"tags": "$:/tags/jd/config",
"modifier": "JD",
"modified": "20171122150902808",
"caption": "Mob buttons"
},
"$:/plugins/jd/mob/button/config": {
"text": "<$button tooltip=\"Configure JD mobile layout\" class=\"tc-btn-invisible\">{{$:/core/images/theme-button}}<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/jd/mob/config\"/></$button>",
"title": "$:/plugins/jd/mob/button/config",
"tags": "$:/tags/jd/mobbutton",
"modifier": "JD",
"modified": "20171122114923959",
"description": "Configure JD mobile layout",
"creator": "JD",
"created": "20171117090228867",
"caption": "{{$:/core/images/theme-button}} configure JDmob"
},
"$:/plugins/jd/mob/stylesheet": {
"created": "20171016123229521",
"creator": "JD",
"text": "@media print\n{\n.tc-sidebar-scrollable,\n.jd-search,\n.jd-topbar,\n.jd-bottombar { display: none !important; }\n}\n\n/** CONFIG RADIO BUTTONS **/\n\n.radbutton, .radbuttoff { \n display: inline-block; \n height: 12px; \n width: 12px; \n border: 2px solid <<colour muted-foreground>>; \n -webkit-transition-duration: {{$:/config/AnimationDuration}}ms;\n -moz-transition-duration: {{$:/config/AnimationDuration}}ms;\n -ms-transition-duration: {{$:/config/AnimationDuration}}ms;\n -o-transition-duration: {{$:/config/AnimationDuration}}ms;\n transition-duration: {{$:/config/AnimationDuration}}ms;\n}\n\n.radbutton { background: <<colour primary>>; }\n.radbuttoff { background: <<colour muted-foreground>>; }\n.radbutton:hover, .radbuttoff:hover { \n border: 2px solid <<colour primary>>;\n background: <<colour primary>>; \n}\n\n.jd-bq {\n margin: 5px;\n padding: 5px;\n border: 1px solid <<colour tab-border>>;\n}\n\n.jd-bq, .radbutton, .radbuttoff {\n -webkit-border-radius: 6px;\n -moz-border-radius: 6px;\n -ms-border-radius: 6px;\n -o-border-radius: 6px;\n border-radius: 6px;\n}\n\n.jd-btn-txt {\n border: none;\n background: none;\n font-size: inherit;\n text-decoration: underline;\n padding: 0;\n margin: 0;\n}\n\n.jd-btn-txt:hover {\n text-decoration: none;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { \n.jd-topbar, \n.jd-bottombar,\n.jd-search { display: none; }\n} \n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { \n\n.tc-topbar { display: none !important; } \n\n.tc-tags-wrapper { margin: 5px 0 !important; }\n\n\n/** NOTIFICATIONS **/\n\n.tc-notification {\n position: fixed; \n top: 60px !important;\n right: 10px !important;\n z-index: {{!!z-bar}} !important;\n}\n\n.tc-modal {\n top: 50px !important;\n left: 50px !important;\n right: 50px !important;\n}\n\n.tc-modal-body { max-height: calc(100vh - 200px) !important; }\n\n.tc-modal-wrapper,\n.tc-plugin-reload-warning { z-index: {{!!z-notif}} !important; }\n\n\n/** STORY RIVER **/\n\n.tc-story-river { \n margin: 0 !important;\n padding-top: 0 !important;\n}\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##storyfix\" text=\"no\">\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n@media print\n{\n.tc-story-river { margin-top: 0 !important; }\n}\n\n@media screen\n{\n.tc-story-river { margin-top: 50px !important; }\n}\n\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n\n.tc-story-river { margin-bottom: 50px !important; }\n\n</$reveal>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##storyfix\" text=\"yes\">\n\n.tc-story-river { \n width: 100% !important;\n position: fixed !important;\n left: 0 !important;\n overflow-y: auto !important;\n}\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 50px !important;\n height: calc(100% - 50px) !important;\n}\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 50px !important; \n height: calc(100% - 100px) !important;\n}\n</$reveal>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 0 !important; \n height: 100% !important;\n}\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-story-river { \n top: 0 !important; \n height: calc(100% - 50px) !important;\n}\n</$reveal>\n\n</$reveal>\n\n</$reveal>\n\n.tc-tiddler-frame {\n margin-bottom: 2px !important;\n padding: 15px 10px;\n overflow: auto;\n}\n\n\n/** POPUPS AND DROPDOWNS INSIDE VIEW AREA **/\n\n.tc-drop-down,\n.tc-block-dropdown {\n position: fixed !important;\n top: 50% !important;\n left: 50% !important;\n text-align: left;\n white-space: normal !important;\n max-height: calc(100% - 160px) !important;\n min-width: calc(100% - 90px) !important;\n max-width: calc(100% - 60px) !important;\n -webkit-transform: translate(-50%, -50%) !important;\n -moz-transform: translate(-50%, -50%) !important;\n -ms-transform: translate(-50%, -50%) !important;\n -o-transform: translate(-50%, -50%) !important;\n transform: translate(-50%, -50%) !important;\n -webkit-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n -moz-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n -ms-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n -o-box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n box-shadow: 0 0 10px 5px rgba(0,0,0,0.5);\n overflow: auto !important;\n z-index: {{!!z-dropdown}} !important;\n}\n\n.tc-menu-list-item {\n padding-left: 5px;\n text-indent: -5px;\n white-space: normal !important;\n word-wrap: break-word !important;\n -webkit-word-break: break-all !important;\n -moz-word-break: break-all !important;\n -ms-word-break: break-all !important;\n -o-word-break: break-all !important;\n word-break: break-all !important;\n}\n\n.tc-edit-type-dropdown { overflow: auto; }\n\n\n/** SCROLLBARS **/\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##scrollbars\" text=\"hide\">\n\nbody { \n -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\ndiv::-webkit-scrollbar,\n.tc-edit-type-dropdown::-webkit-scrollbar,\n.tc-block-dropdown::-webkit-scrollbar,\n.tc-drop-down::-webkit-scrollbar,\n.jd-search-results::-webkit-scrollbar,\n.tc-story-river::-webkit-scrollbar,\n.tc-sidebar-scrollable::-webkit-scrollbar {\n background: transparent;\n width: 0;\n}\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##scrollbars\" text=\"show\">\n\nbody { \n scrollbar-face-color: <<colour background>>;\n scrollbar-arrow-color: <<colour page-background>>;\n scrollbar-track-color: <<colour page-background>>;\n scrollbar-shadow-color: <<colour page-background>>;\n}\n\ndiv::-webkit-scrollbar,\n.tc-edit-type-dropdown::-webkit-scrollbar,\n.tc-block-dropdown::-webkit-scrollbar,\n.tc-drop-down::-webkit-scrollbar,\n.tc-story-river::-webkit-scrollbar,\n.tc-sidebar-scrollable::-webkit-scrollbar {\n background: <<colour background>>;\n width: 6px;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n}\n\ndiv::-webkit-scrollbar-thumb,\n.tc-edit-type-dropdown::-webkit-scrollbar-thumb,\n.tc-block-dropdown::-webkit-scrollbar-thumb,\n.tc-drop-down::-webkit-scrollbar-thumb,\n.jd-search-results::-webkit-scrollbar,\n.tc-story-river::-webkit-scrollbar-thumb,\n.tc-sidebar-scrollable::-webkit-scrollbar-thumb {\n background: <<colour page-background>>; \n width: 6px;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n}\n\n.jd-search-results::-webkit-scrollbar-thumb {\n background: <<colour primary>>;\n width: 6px;\n -webkit-border-radius: 3px;\n border-radius: 3px;\n}\n\n</$reveal>\n\n\n/** FOCUS **/\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##focus\" text=\"hide\">\ntextarea:focus, select:focus, button:focus, input:focus { outline: none; }\n</$reveal>\n\n\n/** TOPBAR & BOTTOMBAR **/\n\n.jd-topbar,\n.jd-bottombar {\n width: 100%;\n position: fixed;\n left: 0;\n background: <<colour page-background>>;\n overflow: hidden;\n z-index: {{!!z-bar}};\n}\n\n.jd-topbar { top: 0; height: 50px; }\n.jd-bottombar { bottom: 0; }\n\n\n/** SEARCH **/\n\n.jd-search { z-index: {{!!z-search}}; }\n\n.jd-search-results {\n background: <<colour page-background>>;\n width: 100%;\n position: fixed;\n top: 50px;\n left: 0;\n margin: 0;\n padding: 0 10px;\n overflow-y: auto;\n z-index: {{!!z-searchwrapper}};\n}\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.jd-search-results { max-height: calc(100% - 100px); }\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.jd-search-results { max-height: calc(100% - 50px); }\n</$reveal>\n\n.jd-searchwrapper {\n background: <<colour page-background>>;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n z-index: {{!!z-searchwrapper}};\n}\n\n.jd-searchbar {\n width: calc(100% - 20px);\n height: 30px; \n position: fixed;\n top: 0;\n left: 0;\n font-size: 16px !important;\n background: transparent !important;\n border: none;\n border-bottom: 2px solid<<colour primary>>;\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"combined\">\n padding: 0 160px 0 10px;\n</$reveal>\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"simple\">\n padding: 0 100px 0 10px;\n</$reveal>\n margin: 10px;\n}\n\n.jd-search-buttons {\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"combined\">\n width: 160px; \n</$reveal>\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"simple\">\n width: 100px; \n</$reveal>\n position: fixed; \n top: 12px;\n right: 0; \n background: <<colour page-background>>;\n border: transparent;\n margin-right: 20px; \n text-align: right;\n vertical-align: middle;\n}\n\n.jd-search-buttons {\n z-index: {{!!z-searchbuttons}};\n}\n\n.jd-search-buttons .tc-popup-keep,\n.jd-search-buttons .tc-btn-invisible {\n font-size: 18px;\n background: transparent;\n border: transparent;\n cursor: pointer;\n}\n\n.jd-search-buttons .tc-btn-invisible { margin-left: 8px; }\n\n\n/** CONTROLS **/\n\n.jd-title-controls {\n display: flex;\n justify-content: space-between;\n margin: 10px;\n}\n\n.jd-search-buttons button,\n.jd-title-controls button {\n fill: <<colour sidebar-controls-foreground>>;\n font-size: 1.6em;\n -webkit-transition-duration: {{$:/config/AnimationDuration}}ms;\n -moz-transition-duration: {{$:/config/AnimationDuration}}ms;\n -ms-transition-duration: {{$:/config/AnimationDuration}}ms;\n -o-transition-duration: {{$:/config/AnimationDuration}}ms;\n transition-duration: {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-search-buttons button:hover,\n.jd-title-controls button:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.jd-topbar .tc-page-controls,\n.jd-bottombar .tc-page-controls {\n display: flex;\n justify-content: space-between;\n height: 30px;\n margin: 10px;\n}\n\n.tc-page-controls button { margin: 0 !important;}\n\n\n/** TITLEBAR **/\n\n.jd-title-wrapper .tc-site-title,\n.jd-title-wrapper .tc-site-subtitle {\n position: absolute;\n left: 50%;\n text-align: center;\n -webkit-transform: translate(-50%, 50%);\n -moz-transform: translate(-50%, 50%);\n -ms-transform: translate(-50%, 50%);\n -o-transform: translate(-50%, 50%);\n transform: translate(-50%, 50%);\n}\n\n.jd-title-wrapper .tc-site-subtitle {\n width: calc(100% - 100px);\n}\n\n\n/** SIDEBAR LISTS **/\n\n.tc-sidebar-scrollable .tc-site-title,\n.tc-sidebar-scrollable .tc-site-subtitle,\n.tc-sidebar-scrollable .tc-page-controls,\n.tc-sidebar-scrollable .tc-search\n { display: none; }\n\n.tc-sidebar-header { padding: 0 !important; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n.tc-sidebar-scrollable {\n background: <<colour background>>;\n width: 100%;\n position: fixed;\n left: 0; \n z-index: {{!!z-sidebar}};\n overflow: auto !important;\n}\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/sidebar\" text=\"no\">\n\n.tc-sidebar-scrollable { display:none; }\n\n.tc-tab-set { overflow-y: auto !important; }\n\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 50px !important;\n height: calc(100% - 50px) !important;\n}\n\n.tc-sidebar-scrollable .tc-tab-buttons { top: 50px; }\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 50px !important;\n height: calc(100% - 100px) !important;\n}\n\n.tc-sidebar-scrollable .tc-tab-buttons { top: 50px; }\n</$reveal>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##topbar\" text=\"hide\">\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 0 !important;\n height: 100% !important;\n}\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##bottombar\" text=\"hide\">\n.tc-sidebar-scrollable { \n top: 0 !important;\n height: calc(100% - 50px) !important;\n}\n</$reveal>\n\n</$reveal>\n\n\n/** SIDEBAR LISTS BUTTONS **/\n\n.tc-sidebar-scrollable .tc-tab-buttons { margin: 10px; }\n\n.tc-sidebar-scrollable .tc-tab-content { \n margin: 10px !important; \n border: 0 !important;\n}\n\n\n/** ADJUSTABLE FONTS AND HEIGHTS **/\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##titlebaradjust\" text=\"no\">\n.jd-title-wrapper .tc-site-title { top: -3px; font-size: 18px; }\n.jd-title-wrapper .tc-site-subtitle { top: 15px; font-size: 12px; }\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##titlebaradjust\" text=\"yes\">\n.jd-title-wrapper .tc-site-title { top: {{!!height-sitetitle}}; font-size: {{!!font-sitetitle}}; }\n.jd-title-wrapper .tc-site-subtitle { top: {{!!height-subsitetitle}}; font-size: {{!!font-subsitetitle}}; }\n</$reveal>\n\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##fontsize\" text=\"default\">\n\n.tc-tiddler-view-frame h2.tc-title,\ninput.tc-titlebar.tc-edit-texteditor { \n font-size: {{!!font-title}} !important; \n}\n\n.tc-tiddler-view-frame .tc-subtitle { \n font-size: calc({{!!font-body}} - 4px) !important; \n}\n\nh1, h1 a { \n font-size: calc({{!!font-body}} + 6px) !important; \n}\n\nh2, h2 a { \n font-size: calc({{!!font-body}} + 4px) !important; \n}\n\nh3, h3 a { \n font-size: calc({{!!font-body}} + 2px) !important; \n}\n\nh4, a, li, table,\ninput, textarea, select,\n.tc-tiddler-preview-preview p,\n.tc-tiddler-view-frame p,\n.tc-modal p,\n.tc-btn-text,\n.jd-search-results,\n.tc-tab-content,\n.tc-modal-header h3 { \n font-size: {{!!font-body}} !important; \n line-height: {{!!lineheight}} !important;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button,\n.tc-tag-label.tc-btn-invisible { \n font-size: calc({{!!font-body}} - 4px) !important; \n}\n\n.tc-tab-buttons button,\n.tc-tab-buttons.tc-vertical button,\n.tc-sidebar-scrollable .tc-tab-buttons button,\n.tc-sidebar-scrollable .tc-tab-buttons.tc-vertical button {\n font-size: {{!!font-tab-button}} !important;\n}\n\n.tc-btn-invisible,\n.tc-tiddler-controls button, \n.tc-tiddler-controls button svg, \n.tc-tiddler-controls button img,\n.tc-image-buttons,\n.tc-page-controls { \n font-size: {{!!font-button}} !important; \n}\n\n.tc-tiddler-controls button svg, \n.tc-tiddler-controls button img,\n.tc-image-buttons { \n height: {{!!font-button}} !important; \n width: {{!!font-button}} !important; \n}\n\n</$reveal>\n\n}",
"z-sidebar": "1500",
"z-searchwrapper": "2500",
"z-searchbuttons": "4100",
"z-search": "4000",
"z-notif": "9000",
"z-dropdown": "4000",
"z-bar": "2000",
"title": "$:/plugins/jd/mob/stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "JD",
"modified": "20180903124046078",
"lineheight": "{{$:/temp/jd/mob/font/lineheight}}",
"height-subsitetitle": "{{$:/temp/jd/mob/font/height-subsitetitle}}",
"height-sitetitle": "{{$:/temp/jd/mob/font/height-sitetitle}}",
"font-title": "{{$:/temp/jd/mob/font/font-title}}",
"font-tab-button": "{{$:/temp/jd/mob/font/font-tab-button}}",
"font-subsitetitle": "{{$:/temp/jd/mob/font/font-subsitetitle}}",
"font-sitetitle": "{{$:/temp/jd/mob/font/font-sitetitle}}",
"font-button": "{{$:/temp/jd/mob/font/font-button}}",
"font-body": "{{$:/temp/jd/mob/font/font-body}}",
"list-after": "$:/themes/tiddlywiki/vanilla/base"
},
"$:/plugins/jd/mob/config/searchbutton": {
"created": "20171118142818660",
"creator": "JD",
"text": "<h3>Choose search button</h3>\n\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"hide\"/>\n<<jdconfig searchbarchoice simple>>\n<<jdconfig searchbutton simple>>\n<<jdradbut searchbutton simple>>\n</$button> Toggle for simple searchbar\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"hide\"/>\n<<jdconfig searchbarchoice combined>>\n<<jdconfig searchbutton combined>>\n<<jdradbut searchbutton combined>>\n</$button> Toggle for combined searchbar\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch hide>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"show\"/>\n<<jdconfig searchbutton core>>\n<<jdradbut searchbutton core>>\n</$button> Button to core search\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch hide>>\n<$action-setfield $tiddler=\"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search\" text=\"hide\"/>\n<<jdconfig searchbutton hide>>\n<<jdradbut searchbutton hide>>\n</$button> Hidden\n<br><br>",
"title": "$:/plugins/jd/mob/config/searchbutton",
"tags": "",
"modifier": "JD",
"modified": "20171122125953528",
"caption": "Choose search button"
},
"$:/plugins/jd/mob/config/titlebar": {
"created": "20171118171842911",
"creator": "JD",
"text": "<h3>Vertical position</h3>\n\n<$button class=tc-btn-invisible>\n<<jdconfig titlebaradjust no>>\n<<jdradbut titlebaradjust no>>\n</$button> Default\n<br>\n<$button class=tc-btn-invisible>\n<<jdconfig titlebaradjust yes>>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/height-sitetitle\" caption=\"Site title vertical position\" text=\"-3px\" list-after=\"$:/temp/jd/mob/font/font-sitetitle\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-sitetitle\" caption=\"Site title font size\" text=\"18px\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/height-subsitetitle\" caption=\"Site subtitle vertical position\" text=\"15px\" list-after=\"$:/temp/jd/mob/font/font-subsitetitle\"/>\n<$action-setfield $tiddler=\"$:/temp/jd/mob/font/font-subsitetitle\" caption=\"Site subtitle font size\" text=\"12px\"/>\n<<jdradbut titlebaradjust yes>>\n</$button> Custom\n\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##titlebaradjust\" text=\"yes\">\n\nInclude unit (''px'' or ''em'') when entering custom values\n\n<table style=\"width:100%\">\n<tr>\n<th style=\"width:40%\">Element</th>\n<th style=\"width:60%\">Adjust</th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/temp/jd/mob/font/]suffix[sitetitle]]\">\n<tr>\n<td><$view field=\"caption\"/></td>\n<td><$edit-text tiddler={{!!title}} field=\"temp\" placeholder={{!!text}} class=\"texte\"/>\n<$reveal type=\"match\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✓</$button>\n<$button class=\"tc-btn-invisible\" style=\"color:grey; cursor:not-allowed;\">✕</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=!!temp text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} text={{!!temp}}/>\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✓</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler={{!!title}} temp=\"\"/>✕</$button>\n</$reveal>\n</td>\n</tr>\n</$list>\n</table>\n</$reveal>\n{{$:/plugins/jd/mob/config/searchbutton}}",
"title": "$:/plugins/jd/mob/config/titlebar",
"modifier": "JD",
"modified": "20171119072342630",
"caption": "Fonts and heights",
"tags": ""
},
"$:/plugins/jd/mob/config/searchbar": {
"created": "20171118171759396",
"creator": "JD",
"text": "<h3>Choose searchbar style</h3>\n\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<<jdconfig searchbarchoice combined>>\n<<jdconfig searchbutton combined>>\n<<jdradbut searchbutton combined>>\n</$button> Combined search\n<br>\n<$button class=\"tc-btn-invisible\">\n<<tglSearch show>>\n<<jdconfig searchbarchoice simple>>\n<<jdconfig searchbutton simple>>\n<<jdradbut searchbutton simple>>\n</$button> Simple search\n<p>\n<$checkbox tiddler=\"$:/config/jd/mobbutton/visibility/$:/plugins/jd/mob/button/search\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> Show search button at controls\n</p>",
"title": "$:/plugins/jd/mob/config/searchbar",
"tags": "",
"modifier": "JD",
"modified": "20171122123127279",
"caption": "Choose searchbar style"
},
"$:/plugins/jd/mob/macros": {
"created": "20171119044207910",
"creator": "JD",
"text": "\\define jdconf() $:/plugins/jd/mob/config/config\n\\define jdconfont() $:/temp/jd/mob/font/\n\\define jdconfig(config:\"\" choice:\"\")\n<$action-setfield $tiddler=<<jdconf>> $index=\"$config$\" $value=$choice$/>\n\\end\n\\define moreOps(config:\"\" choice:\"\" option:\"\")\n<$reveal type=\"match\" state=\"$(jdconf)$##$config$\" text=\"$choice$\">\n<$reveal type=\"nomatch\" state=\"$(jdconf)$##$config$$choice$ops\" text=\"show\">\n<$button class =\"jd-btn-txt\" set=\"$(jdconf)$##$config$$choice$ops\" setTo=\"show\"> Show options</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$(jdconf)$##$config$$choice$ops\" text=\"show\">\n<$button class =\"jd-btn-txt\" set=\"$(jdconf)$##$config$$choice$ops\" setTo=\"hide\"> Hide options</$button>\n<div class=\"jd-bq\">{{$:/plugins/jd/mob/config/$option$}}</div>\n</$reveal>\n</$reveal>\n<br>\n\\end\n\\define jdfont(font-title:\"\" font-body:\"\" lineheight:\"\" font-tab:\"\" font-button:\"\")\n<$action-setfield $tiddler=\"$(jdconfont)$font-title\" text=\"$font-title$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$font-body\" text=\"$font-body$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$lineheight\" text=\"$lineheight$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$font-tab-button\" text=\"$font-tab$\"/>\n<$action-setfield $tiddler=\"$(jdconfont)$font-button\" text=\"$font-button$\"/>\n\\end\n\\define jdradbut(config:\"\" choice:\"\")\n<$reveal type=\"match\" state=\"$(jdconf)$##$config$\" text=\"$choice$\"><div class=\"radbutton\"></div></$reveal>\n<$reveal type=\"nomatch\" state=\"$(jdconf)$##$config$\" text=\"$choice$\"><div class=\"radbuttoff\"></div></$reveal>\n\\end\n\\define tglSearch(choice:\"show\")\n<$action-setfield $tiddler=\"$:/config/jd/mobbutton/visibility/$:/plugins/jd/mob/button/search\" text=$choice$/>\n\\end\n\\define notPreset()\n<<jdconfig barpreset 0>>\n\\end\n\\define setTopsearchbar()\n<<jdconfig topbar fixedsearch>>\n<<jdconfig topbarchoice hide>>\n<<jdconfig searchbar yes>>\n<<jdconfig radbuttop fixedsearch>>\n\\end\n\\define setToptitlebar()\n<<jdconfig searchbar no>>\n<<jdconfig topbar title>>\n<<jdconfig topbarchoice title>>\n<<jdconfig radbuttop title>>\n\\end\n\\define setTopcontrols()\n<<jdconfig searchbar no>>\n<<jdconfig topbar controls>>\n<<jdconfig topbarchoice controls>>\n<<jdconfig radbuttop controls>>\n\\end\n\\define setTopmobbuttons()\n<<jdconfig searchbar no>>\n<<jdconfig topbar mobbuttons>>\n<<jdconfig topbarchoice mobbuttons>>\n<<jdconfig radbuttop mobbuttons>>\n\\end\n\\define setTophide()\n<<jdconfig searchbar no>>\n<<jdconfig topbar hide>>\n<<jdconfig topbarchoice hide>>\n<<jdconfig radbuttop hide>>\n\\end\n\\define noBottom()\n<<jdconfig bottombar hide>>\n\\end\n\\define setBottomcontrols()\n<<jdconfig bottombar controls>>\n\\end\n\\define setJDmobdefaults()\n<<tglSearch>>\n<<jdconfig freshinstall yes>>\n<<jdconfig configtype list>>\n<<jdfont>>\n<<jdconfig fontsize default>>\n<<jdconfig scrollbars show>>\n<<jdconfig focus show>>\n<<jdconfig storyfix no>>\n<<jdconfig titlebaradjust no>>\n<<jdconfig topbarchoice hide>>\n<<jdconfig searchbarchoice simple>>\n<<jdconfig searchbutton simple>>\n<<jdconfig barpreset 4>>\n<<setTopsearchbar>>\n<<setBottomcontrols>>\n<<jdconfig radbuttopfixedsearchops hide>>\n<<jdconfig radbuttopcontrolsops hide>>\n<<jdconfig radbuttopmobbuttonsops hide>>\n<<jdconfig radbuttoptitleops hide>>\n<<jdconfig bottombarcontrolsops hide>>\n<<jdconfig bottombarmobbuttonsops hide>>\n<<jdconfig barpreset1ops hide>>\n<<jdconfig barpreset2ops hide>>\n<<jdconfig barpreset3ops hide>>\n<<jdconfig barpreset4ops hide>>\n<$fieldmangler tiddler=\"$:/plugins/jd/mob/button/search\">\n<$action-sendmessage $message=\"tm-add-tag\" $param=\"$:/tags/jd/mobbutton\"/>\n</$fieldmangler>\n\\end",
"title": "$:/plugins/jd/mob/macros",
"tags": "$:/tags/Macro",
"modifier": "JD",
"modified": "20171122150921869"
},
"$:/plugins/jd/mob/button/search": {
"created": "20171122115403541",
"creator": "JD",
"text": "<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##searchbar\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Show searchbar\" set=\"$:/plugins/jd/mob/config/config##searchbar\" setTo=\"yes\">\n<<jdconfig topbar search>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##searchbar\" text=\"yes\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Hide searchbar\" set=\"$:/plugins/jd/mob/config/config##searchbar\" setTo=\"no\">\n<<jdconfig topbar hide>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>",
"title": "$:/plugins/jd/mob/button/search",
"tags": "$:/tags/jd/mobbutton",
"modifier": "JD",
"modified": "20171122154523596",
"description": "Toggle searchbar visibility",
"caption": "{{$:/core/images/advanced-search-button}} search"
},
"$:/plugins/jd/mob/template/search": {
"created": "20171018115714311",
"creator": "JD",
"text": "\\define NewTidActions(searcharea)\n<$action-createtiddler $basetitle={{$searcharea$}} $savetitle=\"$:/temp/NewTidTitle\"/>\n<$action-sendmessage $message=\"tm-edit-tiddler\" $param={{$:/temp/NewTidTitle}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTidTitle\"/>\n<$action-setfield $tiddler=\"$searcharea$\" text=\"\"/>\n\\end\n\n\\define NewTidBtn(searcharea)\n<$button tooltip=\"Create new tiddler with this title\" class=\"tc-btn-invisible\" actions=<<NewTidActions \"$searcharea$\">>>\n{{$:/core/images/new-button}}\n</$button>\n\\end\n\n\\define lingo-base() $:/language/Search/\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"simple\">\n<div class=\"jd-search\">\n<$keyboard class=\"jd-searchwrapper\" tag=\"div\" key=\"ctrl+space\" actions=<<NewTidActions \"$:/temp/search\">>>\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" placeholder={{$:/language/Search/Search}} class=\"jd-searchbar\"/>\n</$keyboard>\n<div class=\"jd-search-buttons\">\n<$list filter=\"[[$:/temp/search]!text[]]\" variable=\"statecheck\">\n<<NewTidBtn \"$:/temp/search\">>\n</$list>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$list filter=\"[[$:/temp/search]!text[]]\" variable=\"statecheck\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Clear searchbar\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<jdconfig searchbar no>>\n<<jdconfig topbar {{$:/plugins/jd/mob/config/config##topbarchoice}}>>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\" tooltip=\"Clear and hide searchbar\">\n<<jdconfig searchbar no>>\n<<jdconfig topbar {{$:/plugins/jd/mob/config/config##topbarchoice}}>>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n<div class=\"jd-search-results\">\n<$list filter=\"[[$:/temp/search]!text[]]\" variable=\"statecheck\">\n<$scrollable fallthrough=\"no\" class=\"results\">\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$scrollable>\n</$list>\n</div>\n</div>\n</$reveal>\n\n<$reveal state=\"$:/plugins/jd/mob/config/config##searchbarchoice\" type=\"match\" text=\"combined\">\n<div class=\"jd-search\">\n<$keyboard class=\"jd-searchwrapper\" tag=\"div\" key=\"ctrl+space\" actions=<<NewTidActions \"$:/temp/advancedsearch\">>>\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" placeholder={{$:/language/Search/Search}} class=\"jd-searchbar\"/>\n</$linkcatcher>\n</$keyboard>\n<div class=\"jd-search-buttons\">\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<<NewTidBtn \"$:/temp/advancedsearch\">>\n</$list>\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete}}\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown}}\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/export}}\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n{{$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear}} \n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##radbuttop\" text=\"fixedsearch\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Clear and hide searchbar\">\n<<jdconfig searchbar no>>\n<<jdconfig topbar {{$:/plugins/jd/mob/config/config##topbarchoice}}>>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n<div class=\"jd-search-results\">\n<!--STANDARD-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br>\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"{{$:/language/Search/Search/TooShort}}\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$list>\n<!--STANDARD-->\n<!--FILTER-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br><br>\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nFilter search: <<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n</$list>\n<!--FILTER-->\n<!--SYSTEM-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br>\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\nSystem search: <<lingo System/Matches>>\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n</$list>\n</$list>\n<!--SYSTEM-->\n<!--SHADOWS-->\n<$list filter=\"[[$:/temp/advancedsearch]!text[]]\" variable=\"statecheck\">\n<br>\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\nShadows search: <<lingo Shadows/Matches>>\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n</$list>\n</$list>\n<!--SHADOWS-->\n</div>\n</div>\n</$reveal>\n</$reveal>",
"title": "$:/plugins/jd/mob/template/search",
"tags": "$:/tags/PageTemplate",
"modifier": "JD",
"modified": "20180903123722931"
},
"$:/plugins/jd/mob/config/misc": {
"created": "20171122140327337",
"creator": "JD",
"text": "<h2>Miscellaneous</h2>\n<h3>Config button</h3>\n<$checkbox tiddler=\"$:/config/jd/mobbutton/visibility/$:/plugins/jd/mob/button/config\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> Show {{$:/core/images/theme-button}} button at ''Controls'' / ''Mobbuttons''\n<br><br>\n<hr>\n<h3>Scrollbars</h3>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig scrollbars hide>>\n<<jdradbut scrollbars hide>>\n</$button> Invisible scrollbars\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig scrollbars show>>\n<<jdradbut scrollbars show>>\n</$button> Visible scrollbars\n<br><br>\n<hr>\n<h3>Focus</h3>\n<p>Here we can hide the hightlight / outline on focused text inputs and buttons</p>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig focus show>>\n<<jdradbut focus show>>\n</$button> Default\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig focus hide>>\n<<jdradbut focus hide>>\n</$button> Hide focus\n<br><br>\n<hr>\n<h3>Story river</h3>\nHere we can try to stop the fist tiddler in the story river from scrolling past the topbar\n<br>\n''Side effects:''\n<br>\n<li>For ''classic'' and ''pop'' story view: tiddlers won't automatically scroll into view on link click</li>\n<li>Browser search bar won't automatically hide on scroll up (tested on Chrome for Android)</li>\n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig storyfix yes>>\n<<jdradbut storyfix yes>>\n</$button> Apply \n<br>\n<$button class=\"tc-btn-invisible\">\n<<jdconfig storyfix no>>\n<<jdradbut storyfix no>>\n</$button> Don't apply\n<br><br>\n<hr>\n<h3>Restore defaults</h3>\n<div class=\"jd-bq\">\n<p>\nTo reset to...\n</p>\n<p>\nDefault font size, Visible scrollbars, ''Simple searchbar'' on top, ''Controls'' on bottom, ''Simple searchbar button'' on controls, Story river hack not applied...\n</p>\n<p>\nClick:\n</p>\n<p>\n<$reveal type=\"nomatch\" state=\"$:/plugins/jd/mob/config/config##defaultconfirm\" text=\"confirm\">\n<$button class=\"jd-btn-txt\">\n<<jdconfig defaultconfirm confirm>>\nRestore defaults\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/plugins/jd/mob/config/config##defaultconfirm\" text=\"confirm\">\n<$button class=\"jd-btn-txt\">\n<<setJDmobdefaults>>\n<<jdconfig defaultconfirm cancel>>\nConfirm\n</$button>\n<$button class=\"jd-btn-txt\">\n<<jdconfig defaultconfirm cancel>>\nCancel\n</$button>\n</$reveal>\n</p>\n</div>\n<br>",
"title": "$:/plugins/jd/mob/config/misc",
"tags": "$:/tags/jd/config",
"modified": "20171122141012375",
"modifier": "JD",
"caption": "Miscellaneous"
}
}
}
freshinstall: no
defaultconfirm: cancel
configtype: list
fontsize: default
scrollbars: show
barpreset: 4
storyfix: no
titlebaradjust: no
topbar: search
topbarchoice: hide
searchbar: yes
radbuttop: fixedsearch
searchbarchoice: simple
bottombar: controls
radbuttopfixedsearchops: hide
radbuttopcontrolsops: hide
radbuttopmobbuttonsops: hide
radbuttoptitleops: hide
bottombarcontrolsops: hide
bottombarmobbuttonsops: hide
barpreset1ops: hide
barpreset2ops: hide
barpreset3ops: hide
barpreset4ops: hide
searchbutton: simple
focus: show
{
"tiddlers": {
"$:/plugins/JR/showpreview/StoryTiddler": {
"created": "20170706110242401",
"text": "<$list filter=\"[{$:/HistoryList!!current-tiddler}]\">\n<$transclude tiddler=<<currentTiddler>>mode=\"block\"/>\n</$list>",
"title": "$:/plugins/JR/showpreview/StoryTiddler",
"tags": "",
"modified": "20170706110457618"
},
"$:/plugins/JR/showpreviewWindow": {
"created": "20170706104816706",
"creator": "JR",
"text": "<$button message=\"tm-open-window\" param =\"$:/plugins/JR/showpreview/StoryTiddler\" tooltip=\"Show Remotecontrol\" aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/preview-open}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=\"Remote\"/></span>\n</$list>\n</$button>",
"title": "$:/plugins/JR/showpreviewWindow",
"tags": "",
"modified": "20170708204351671",
"modifier": "JR"
},
"showpreview Window Button": {
"created": "20170706110515779",
"text": "{{$:/plugins/JR/showpreviewWindow}}",
"title": "showpreview Window Button",
"tags": "",
"modified": "20170706111202144"
}
}
}
<$list filter="[{$:/HistoryList!!current-tiddler}]">
<$transclude tiddler=<<currentTiddler>>mode="block"/>
</$list>
<$button message="tm-open-window" param ="$:/plugins/JR/showpreview/StoryTiddler" tooltip="Show Remotecontrol" aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/preview-open}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text="Remote"/></span>
</$list>
</$button>
{
"tiddlers": {
"$:/plugins/spangenhelm/enhancedsearch/SearchTabManager.js": {
"text": "/*\\\ntitle: $:/plugins/spangenhelm/enhancedsearch/SearchTabManager.js\ntype: application/javascript\nmodule-type: macro\n\\*/\n\n(function(){\n \n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"search-tab-manager\";\nexports.params = [ { name : \"searchTerm\" }, { name: \"qualifier\" } ];\n\n// constants\nvar sideBarTabPrefix = \"$:/state/tab/sidebar-\";\nvar searchTabTRef = \"$:/core/ui/SearchResults\";\nvar tabBackup = null;\n\n/**\n * Called: <$macrocall $name=\"search-tab-manager\" searchTerm={{$:/temp/search}} />\n */\nexports.run = function(searchTerm, qualifier) {\n \n var tabsStateTRef = sideBarTabPrefix + this.getStateQualifier(); \n var tabsStateTObj = $tw.wiki.getTiddler(tabsStateTRef);\n \n console.log(\"sr:\", tabsStateTObj);\n \n if(tabsStateTObj) {\n \n if(searchTerm && tabsStateTObj.fields.text !== searchTabTRef) {\n \n // backup old tab\n tabBackup = tabsStateTObj.fields.text;\n \n // set tab to search results\n $tw.wiki.addTiddler(new $tw.Tiddler({\n title: tabsStateTRef,\n text: searchTabTRef\n }));\n \n } else if(!searchTerm && tabsStateTObj.fields.text === searchTabTRef && tabBackup) {\n \n // set tab to search results\n $tw.wiki.addTiddler(new $tw.Tiddler({\n title: tabsStateTRef,\n text: tabBackup\n }));\n \n }\n \n }\n \n // always return an empty string\n return \"\";\n \n};\n\n})();",
"title": "$:/plugins/spangenhelm/enhancedsearch/SearchTabManager.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/plugins/EnhancedSearchResults/Stylesheet": {
"title": "$:/plugins/EnhancedSearchResults/Stylesheet",
"tags": "$:/tags/Stylesheet",
"type": "text/css",
"text": "div.tc-search-results {\n padding-top: 0;\n}"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<div class=\"tc-sidebar-lists\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus=\"true\"/>\n<$macrocall $name=\"search-tab-manager\" searchTerm={{$:/temp/search}} />\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<$macrocall $name=\"tabs\" tabsList=\"$:/core/ui/SearchResults[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default=\"$:/core/ui/SearchResults\" state=\"$:/state/tab/sidebar\" />\n</$set>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</$reveal>\n</div>"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"caption": "{{$:/language/SideBar/Search/Caption}}",
"text": "<div class=\"tc-search-results\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</div>\n"
},
"$:/language/SideBar/Search/Caption": {
"title": "$:/language/SideBar/Search/Caption",
"text": "Search"
},
"$:/plugins/EnhancedSearchResults/readme": {
"title": "$:/plugins/EnhancedSearchResults/readme",
"text": "This plugin allows you to have the search-results displayed in a tab without hiding other existing tabs in the sidebar.\n"
}
}
}
{
"tiddlers": {
"$:/_sq/Stories/config/openLinkDivert": {
"text": "bottom",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/openLinkDivert",
"modified": "20200422063802598",
"created": "20170629173808777"
},
"$:/_sq/Stories/config/showRiverDropZones": {
"text": "disable",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/showRiverDropZones",
"modified": "20200523213957947",
"created": "20200417170940547"
},
"$:/_sq/Stories/config/sidebaroverlaybreakpoint": {
"text": "1500px",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/sidebaroverlaybreakpoint",
"modified": "20200416182732404",
"created": "20170616192704225"
},
"$:/_sq/Stories/config/snippets/viewswitcher": {
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/_sq/Stories/config/Story2-storyview\">\n<div class=\"tc-chooser\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/_sq/Stories/config/Story2-storyview}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/snippets/viewswitcher",
"tags": "",
"modified": "20200416183434009",
"created": "20200416183108721"
},
"$:/_sq/Stories/config/Story2-storyview": {
"text": "classic",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/Story2-storyview",
"tags": "",
"modified": "20200417205214764",
"created": "20200415213157946"
},
"$:/_sq/Stories/config/twostorybreakpoint": {
"text": "1100px",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/twostorybreakpoint",
"modified": "20200416182753284",
"created": "20170616192701335"
},
"$:/_sq/Stories/CorePatch/ButtonDispatchMessage": {
"text": "var ButtonWidget = require(\"$:/core/modules/widgets/button.js\").button;\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event, navigateFromNode: this});\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nButtonWidget.prototype.invokeActions = function(triggeringWidget,event) {\nevent.navigateFromNode = this;\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/_sq/Stories/CorePatch/ButtonDispatchMessage",
"tags": "",
"module-type": "startup",
"modified": "20200430193633599",
"created": "20170616103202530"
},
"$:/_sq/Stories/divertTiddlerEditMacro": {
"text": "\\define divertTiddlerEditButton()\n<$set name=\"original\" value={{!!draft.title}}>\n<$set name=\"otherStoryList\" filter=\"[enlist{$:/_sq/Stories/StoriesList!!list}] -[<tv-story-list>]\" select=\"0\">\n<$set name=\"otherHistoryList\" filter=\"[enlist{$:/_sq/Stories/HistoriesList!!list}] -[<tv-history-list>]\" select=\"0\">\n\t<$button class=<<tv-config-toolbar-class>> tooltip=\"Divert this tiddler to the other story for viewing\">\n\t\t<$navigator story=<<otherStoryList>> history=<<otherHistoryList>> >\n\t\t\t<$action-navigate $to=<<original>> />\n\t\t</$navigator>\n\t\t<span class=\"sq-button-divert-right sq-button-divert\">{{$:/_sq/Stories/icons/divert-right.svg}}</span><span class=\"sq-button-divert-left sq-button-divert\">{{$:/_sq/Stories/icons/divert-left.svg}}</span>\n\t</$button>\n</$set>\n</$set>\n</$set>\n\\end\n\n<<divertTiddlerEditButton>>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/divertTiddlerEditMacro",
"tags": "$:/tags/EditToolbar",
"modified": "20200523202347182",
"list-before": "$:/core/ui/Buttons/delete",
"description": "divert right/left",
"created": "20170616074148780",
"caption": "{{$:/_sq/Stories/icons/divert-right.svg}}"
},
"$:/_sq/Stories/divertTiddlerMacro": {
"created": "20170609055347900",
"text": "\\define divertTiddlerButton()\n<$set name=\"otherStoryList\" filter=\"[enlist{$:/_sq/Stories/StoriesList!!list}] -[<tv-story-list>]\" select=\"0\">\n<$set name=\"otherHistoryList\" filter=\"[enlist{$:/_sq/Stories/HistoriesList!!list}] -[<tv-history-list>]\" select=\"0\">\n\t<$button class=<<tv-config-toolbar-class>> tooltip=\"Divert this tiddler to the other story\">\n\t\t<$navigator story=<<tv-story-list>> history=<<tv-history-list>> >\n\t\t\t<$action-sendmessage $message=\"tm-close-tiddler\" $param=<<currentTiddler>> />\n\t\t</$navigator>\n\t\t<$navigator story=<<otherStoryList>> history=<<otherHistoryList>> >\n\t\t\t<$action-navigate $to=<<currentTiddler>> />\n\t\t</$navigator>\t\n\t\t<span class=\"sq-button-divert-right sq-button-divert\">{{$:/_sq/Stories/icons/divert-right.svg}}</span><span class=\"sq-button-divert-left sq-button-divert\">{{$:/_sq/Stories/icons/divert-left.svg}}</span>\n\t</$button>\n</$set>\n</$set>\n\\end\n\n<<divertTiddlerButton>>\n",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/divertTiddlerMacro",
"tags": "$:/tags/ViewToolbar",
"modified": "20200806034422564",
"list-before": "",
"description": "Divert left/right",
"caption": "{{$:/_sq/Stories/icons/divert-right.svg}} divert left/right"
},
"$:/_sq/Stories/EditTiddlerHook": {
"text": "$tw.hooks.addHook(\"th-editing-tiddler\", function(event) {\n\tvar targetTitle = event.tiddlerTitle;\n\tvar stories = $tw.wiki.getTiddlerList('$:/_sq/Stories/StoriesList');\n\tvar draftTitle = $tw.wiki.findDraft(targetTitle);\n\tvar shiftKey = (event && event.event) ? event.event.shiftKey : null;\n\n\t//if !draftTitle, its not open anywhere\n\t//cant be open without existing, but can exist without being opened\n\n\tif(!draftTitle && !shiftKey) {\n\t\treturn true;\n\t}\n\n\tvar node = event.navigateFromNode;\n\tvar thisStory = node.getVariable(\"tv-story-title\");\n\tvar otherStory = (stories[0] == thisStory)? stories[1] : stories[0];\n\tvar otherStoryList = $tw.wiki.getTiddlerList(otherStory);\n\n\tif(otherStoryList.indexOf(draftTitle) > -1) {\n\t\talert(\"This tiddler is already open for editing in the other story\");\n\t\treturn false;\n\t}\n\n\tvar generateDraftTitle = function(title) {\n\t\tvar c = 0,\n\t\tdraftTitle;\n\t\tdo {\n\t\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\";\n\t\t\tc++;\n\t\t} while($tw.wiki.tiddlerExists(draftTitle));\n\t\treturn draftTitle;\n\t};\n\t\n\tif(shiftKey) {\n //open in other story\n\t\tif(!draftTitle) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(targetTitle);\n\t\t\tdraftTitle = generateDraftTitle(targetTitle);\n\t\t\tvar draftTiddler = new $tw.Tiddler(\n\t\t\t\ttiddler,\n\t\t\t\t{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\t\"draft.of\": targetTitle\n\t\t\t\t},\n\t\t\t\t$tw.wiki.getModificationFields()\n\t\t\t);\n\t\t\t$tw.wiki.addTiddler(draftTiddler);\n\t\t}\n\t\tvar otherStoryTiddler = $tw.wiki.getTiddler(otherStory);\n\t\totherStoryList.splice(0 ,0, draftTitle);\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: otherStory},\n\t\t\totherStoryTiddler,\n\t\t\t{list:otherStoryList}\n\t\t));\n\t\treturn false;\n\t}\n\n\treturn true;\n});\n",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/_sq/Stories/EditTiddlerHook",
"tags": "",
"module-type": "startup",
"modified": "20200729135111179",
"created": "20170616091547338"
},
"$:/_sq/Stories/HistoriesList": {
"text": "",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/HistoriesList",
"tags": "",
"modified": "20200414145004336",
"list": "$:/_sq/Stories/Story2HistoryList $:/HistoryList",
"created": "20170610091606312"
},
"$:/_sq/Stories/icons/bars-empty.svg": {
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 100 100\" version=\"1.1\" x=\"0px\" y=\"0px\" class=\"tc-image-bars-empty tc-image-button\" width=\"40pt\" height=\"40pt\"><title>Single fold</title><desc>Created with Sketch.</desc><g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g stroke=\"#000000\"><rect stroke-width=\"2\" x=\"17\" y=\"17\" width=\"66\" height=\"66\" rx=\"2\"/><path d=\"M50.5,18.5 L50.5,80.789646\" stroke-linecap=\"round\" stroke-dasharray=\"2,3,2,3\"/></g></g></svg>",
"bag": "default",
"revision": "0",
"type": "image/svg+xml",
"title": "$:/_sq/Stories/icons/bars-empty.svg",
"tags": "",
"modified": "20200414145004334",
"created": "20170617203017607"
},
"$:/_sq/Stories/icons/bars.svg": {
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\" class=\"tc-image-bars tc-image-button\" width=\"20\" height=\"20\" ><path d=\"M41.667,0h-37.5C0,0,0,0,0,4.167v91.667C0,100,0,100,4.167,100h37.5c4.167,0,4.167,0,4.167-4.167V4.167 C45.833,0,45.833,0,41.667,0z M95.833,0h-37.5c-4.167,0-4.167,0-4.167,4.167v91.667c0,4.167,0,4.167,4.167,4.167h37.5 C100,100,100,100,100,95.833V4.167C100,0,100,0,95.833,0z\"/></svg>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/icons/bars.svg",
"modified": "20200414145004333",
"created": "20170608202154511"
},
"$:/_sq/Stories/icons/divert-left.svg": {
"text": "<svg class=\"tc-image-button\" x=\"0px\" y=\"0px\" width=\"30pt\" height=\"30pt\" viewBox=\"0 0 100 125\" ><path d=\"M7.197,44.697l27.5-27.5c2.929-2.929,7.678-2.929,10.607,0c2.929,2.929,2.929,7.678,0,10.607L30.607,42.5H70 h0c5.118,0,10.237,1.953,14.142,5.858c7.81,7.81,7.81,20.474,0,28.284c-2.929,2.929-7.678,2.929-10.607,0 c-2.929-2.929-2.929-7.678,0-10.607c1.953-1.953,1.953-5.118,0-7.071C72.559,57.988,71.28,57.5,70,57.5h0v0H30.607l14.697,14.697 c2.929,2.929,2.929,7.678,0,10.607c-2.929,2.929-7.678,2.929-10.607,0L16.036,64.142l-8.839-8.839 C4.268,52.374,4.268,47.626,7.197,44.697z\"/></svg>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/icons/divert-left.svg",
"modified": "20200414145004330",
"created": "20170609061834078"
},
"$:/_sq/Stories/icons/divert-right.svg": {
"text": "<svg class=\"tc-image-button\" x=\"0px\" y=\"0px\" width=\"30pt\" height=\"30pt\" viewBox=\"0 0 100 125\" ><path d=\"M92.803,44.697l-27.5-27.5c-2.929-2.929-7.678-2.929-10.607,0c-2.929,2.929-2.929,7.678,0,10.607 L69.393,42.5H30h0c-5.118,0-10.237,1.953-14.142,5.858c-7.81,7.81-7.81,20.474,0,28.284c2.929,2.929,7.678,2.929,10.607,0 c2.929-2.929,2.929-7.678,0-10.607c-1.953-1.953-1.953-5.118,0-7.071C27.441,57.988,28.72,57.5,30,57.5h0v0h39.393L54.697,72.197 c-2.929,2.929-2.929,7.678,0,10.607s7.678,2.929,10.607,0l18.661-18.661l8.839-8.839C95.732,52.374,95.732,47.626,92.803,44.697z\"/></svg>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/icons/divert-right.svg",
"modified": "20200414145004328",
"created": "20170609061824401"
},
"$:/_sq/Stories/LinkKeybindings": {
"text": "$tw.hooks.addHook('th-navigating', function(event) {\n\t//override core behaviour when shift key was used\n\tif( ((event.event && event.event.shiftKey) || (event.shiftKey && event)) && event.navigateTo) {\n\t\tvar stories = $tw.wiki.getTiddlerList('$:/_sq/Stories/StoriesList');\n\t\tvar node = event.navigateFromNode;\n\t\tvar thisStory = node.getVariable(\"tv-story-list\");\n\t\tvar otherStory = (stories[0] == thisStory)? stories[1] : stories[0];\t\n\t\tvar storyList = $tw.wiki.getTiddlerList(otherStory);\n\t\tvar slot = storyList.indexOf(event.navigateTo);\n\t\t\n\t\tif(slot < 0){\n\t\t\tif($tw.wiki.getTiddlerText(\"$:/config/Navigation/openLinkFromOutsideRiver\") === \"bottom\") {\n\t\t\t\n\t\t\t\tstoryList.splice(storyList.length, 0, event.navigateTo);\n\t\t\t} else {\n\t\t\t\tstoryList.splice(0, 0, event.navigateTo);\n\t\t\t}\n\t\t\tvar storyTiddler =\t$tw.wiki.getTiddler(otherStory);\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t\t{title: otherStory},\n\t\t\t\tstoryTiddler,\n\t\t\t\t{list:storyList}\n\t\t\t));\n\t\t}\n\t\tvar histories = $tw.wiki.getTiddlerList('$:/_sq/Stories/HistoriesList');\n\t\tvar thisHistory = node.getVariable(\"tv-history-list\");\n\t\tvar otherHistory = (histories[0] == thisHistory) ? histories[1] : histories[0];\t\t\n\t\t$tw.wiki.addToHistory(event.navigateTo,event.navigateFromClientRect, otherHistory); \n\t\tif($tw.wiki.getTiddlerText(\"$:/config/_sq/Stories/story2\") === \"no\") {\n\t\t\t$tw.wiki.setText(\"$:/config/_sq/Stories/story2\",undefined,undefined,\"yes\",undefined);\n\t\t}\n\t\tevent.navigateTo = false;\n\t}\n\treturn event;\n});",
"bag": "default",
"revision": "0",
"type": "application/javascript",
"title": "$:/_sq/Stories/LinkKeybindings",
"tags": "",
"module-type": "startup",
"modified": "20200422065240983",
"created": "20170610071940508"
},
"$:/_sq/Stories/startup-actions": {
"text": "<$action-deletetiddler $tiddler=\"$:/_sq/Stories/Story2HistoryList\"/>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/startup-actions",
"tags": "$:/tags/StartupAction/Browser",
"modified": "20200417172054199",
"created": "20200417171756341"
},
"$:/_sq/Stories/Stories.css": {
"text": "\\define if-fluid-fixed(text,disableText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n</$reveal>\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"nomatch\" text=\"fluid-fixed\">\n$disableText$\n</$reveal>\n\\end\n\n\\define if-two-stories(twoStoryCommon, twoStorySidebar twoStoryNoSidebar, oneStoryText)\n<$reveal default=\"yes\" type=\"match\" text={{{[{$:/_sq/Stories/Story2StoryList!!list}length[]match[0]then[no]] ~[{$:/config/_sq/Stories/story2}]}}}>\n$twoStoryCommon$\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n$twoStorySidebar$\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$twoStoryNoSidebar$\n</$reveal>\n</$reveal>\n<$reveal default=\"yes\" type=\"nomatch\" text={{{[{$:/_sq/Stories/Story2StoryList!!list}length[]match[0]then[no]] ~[{$:/config/_sq/Stories/story2}]}}}>\n$oneStoryText$\n</$reveal>\n\\end\n\n\n<pre>\n\n.tc-page-container.tc-page-view-zoomin .tc-storyview-zoomin-tiddler {\n\twidth: 100%;\n\tposition: relative;\n}\n\n.tc-btn-storytwotoggle {\n\tpadding:0px;\n}\n\n.tc-btn-storytwotoggle img {\n\twidth: 30px;\n\theight: 30px;\n}\n\n.tc-sidebar-lists .tc-btn-storytwotoggle-bars {\n\tfont-size: 1.5em;\n}\n\n.tc-sidebar-lists .tc-btn-storytwotoggle-bars svg {\n\tfill: #aaa;\n}\n\n.tc-story-river .sq-button-divert-left{\n\tdisplay: none;\n}\n\n.sq-story-rivertwo-scrollable::-webkit-scrollbar{width:10px}\n\n.sq-story-rivertwo-scrollable::-webkit-scrollbar-thumb{background:#a5a5a5;border-radius:10px}\n\n.sq-story-rivertwo-scrollable::-webkit-scrollbar-thumb:hover{background:#6f6f6f}\n\n.sq-story-rivertwo-scrollable::-webkit-scrollbar-thumb:active{background:#333}\n\n\t.tc-sidebar-tab-open.sq-sidebar-open .tc-btn-invisible.tc-btn-mini {\n\t\tpadding: 0 0.2em;\n\t}\n\n\t.tc-sidebar-tab-open.sq-sidebar-open .tc-sidebar-tab-open-item {\n\t\tpadding: 0.1em;\n\t}\n\t\n\thtml body.tc-body .tc-sidebar-tab-open.sq-sidebar-open a.tc-tiddlylink {\n\t\tfont-weight: 400;\n\t}\n\n.tc-sidebar-tab-open.sq-sidebar-open a.tc-tiddlylink {\n\tcolor:<<color very-muted-foreground>>;\n}\n\n.tc-sidebar-tab-open.sq-sidebar-open a.tc-tiddlylink:hover {\n\tcolor: <<color sidebar-tiddler-link-foreground-hover>>;\n}\n\n<<if-two-stories twoStoryCommon:\"\"\"\n@media (min-width: {{$:/_sq/Stories/config/twostorybreakpoint}}) {\n.sq-story-rivertwo-scrollable {\n\tposition: fixed;\n\ttop: calc(1em + {{$:/themes/tiddlywiki/vanilla/metrics/storytop}});\n\tbottom: 0;\n}\n\n.tc-story-river.sq-story-rivertwo .tc-tiddler-frame {\n\tmargin-right: 1em !important;\n\tmargin-left: 0;\n\tfont-size: {{$:/config/sq/Stories/story2/fontsize-title}}px;\n}\n\n.tc-story-river.sq-story-rivertwo .tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/config/sq/Stories/story2/fontsize-body}}px;\n}\n\n.tc-story-river {\n\tfloat: left;\n\tmargin-right: 0;\n\tpadding-right: 0em;\n\tpadding-top: 0em;\n}\n\nbody .tc-story-river {\n\tpadding: 0 1.5em 1em 0em !important;\n\tmin-height: 500px; /** so story 2 doesnt collapse to left when no tiddler in story 1***/ \n}\n\nbody .tc-story-river.tc-storytwo-river { padding-right:0em !important; }\n\nbody section.story-backdrop p:nth-child(1) {\n\tmargin:0;\n\tpadding:0;\n}\n\n.tc-story-river .sq-button-divert-right{\n\tdisplay:inline-block;\n}\n\n.tc-story-river .sq-button-divert-left{\n\tdisplay: none;\n}\n\n.tc-story-river.sq-story-rivertwo .sq-button-divert-left{\n\tdisplay:inline-block;\n}\n\n.tc-story-river.sq-story-rivertwo .sq-button-divert-right{\n\tdisplay: none;\n}\n\n.sq-storydropzone {\n\tpadding: 0.5em;\n\tborder:1px solid #bbb;\n\tcolor: #ccc;\n\ttext-align: center;\n\tposition: relative;\n\twidth: calc(100% - 45px);\n\t-moz-box-shadow: inset 0 0 10px #ccc;\n\t-webkit-box-shadow: inset 0 0 10px #ccc;\n\tbox-shadow: inset 0 0 10px #ccc;\n\tmargin-bottom: 1em;\n}\n\n.sq-storydropzone-newtiddlerbutton {\n\twidth: 40px;\n\tfloat: right;\n\tpadding: 0.2em 0.5em 0.5em 0.5em;\n\tmargin-top: 0em;\n\tmargin-right: 0.2em;\n}\n\n.tc-tiddler-frame {\n\tpadding-right:28px;\n}\n\n}\n\"\"\" twoStorySidebar:\"\"\"\n\n@media (min-width: {{$:/_sq/Stories/config/twostorybreakpoint}}) {\n.tc-story-river {\n\twidth: calc((100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}} - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} + 14px)*{{$:/config/sq/Stories/storyRiverRatio}}/100);\n}\n\n.sq-storydropzone {\n\tpadding: 0.5em;\n\tborder:1px solid #bbb;\n\tcolor: #ccc;\n\ttext-align: center;\n}\n\n.sq-story-rivertwo-scrollable, .sq-story-rivertwo {\n\twidth: calc((100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}} - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} + 14px)*(100 - {{$:/config/sq/Stories/storyRiverRatio}})/100);\n}\n}\n\n.tc-sidebar-scrollable {\n\twidth: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} - 14px);\n\tpadding-left: 28px;\n}\n\n@media (min-width: {{$:/_sq/Stories/config/twostorybreakpoint}}) and (max-width: {{$:/_sq/Stories/config/sidebaroverlaybreakpoint}}) {\n\t\n\t.tc-story-river {\n\t\twidth: calc((100% - 1em)*{{$:/config/sq/Stories/storyRiverRatio}}/100);\n\t}\n\n\t.sq-story-rivertwo {\n\t\twidth: calc((100% - 1em)*(100 - {{$:/config/sq/Stories/storyRiverRatio}})/100);\n\t}\n\t\n\n\t.sq-story-rivertwo-scrollable {\n\t\twidth: calc((100% - 0.5em)*(100 - {{$:/config/sq/Stories/storyRiverRatio}})/100);\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tz-index:999;\n\t\tbackground:#eee;\n\t\tborder-left: 1px solid #ddd;\n\t}\n\n}\n\n\"\"\" twoStoryNoSidebar:\"\"\"\n\n.tc-story-river.sq-story-rivertwo {\n\tpadding-right: 0.5em;\n}\n\n@media (min-width: {{$:/_sq/Stories/config/twostorybreakpoint}}) {\n.tc-story-river {\n\twidth: calc((100% - 1em)*{{$:/config/sq/Stories/storyRiverRatio}}/100);\n}\n\n.sq-story-rivertwo {\n\twidth: calc((100% - 1em)*(100 - {{$:/config/sq/Stories/storyRiverRatio}})/100);\n}\n}\n\n.sq-story-rivertwo-scrollable {\n\twidth: calc((100% - 0.5em)*(100 - {{$:/config/sq/Stories/storyRiverRatio}})/100);\n}\n\n\n\n\n}\n\n@media (min-width: {{$:/_sq/Stories/config/twostorybreakpoint}}) and (max-width: {{$:/_sq/Stories/config/sidebaroverlaybreakpoint}}) {\n\t.tc-sidebar-scrollable {\n\t\tdisplay:none;\n\t}\n}\n\n\"\"\" oneStoryText: \"\"\"\n.sq-twostoriesonly {\n\tdisplay: none;\n}\n\n.tc-story-river {\n\tpadding-top: 15px;\n}\n\n\"\"\"\n>>\n\n@media (max-width: {{$:/_sq/Stories/config/twostorybreakpoint}}) {\n\t.sq-twostoriesonly {\n\t\tdisplay: none;\n\t}\n\n\t.tc-btn-storytwotoggle {\n\t\tdisplay: none;\n\t}\n\n\t.sq-stories-disabled {\n\t\tdisplay: none;\n\t}\n\n<<if-two-stories twoStoryCommon:\"\"\"\n\n\t.tc-storytwo-river {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\twidth: auto;\n\t\tpadding-top: 15px;\n\t}\n\n\t.tc-story-river .sq-button-divert {\n\t\tdisplay: none;\n\t}\n\n\n\t.sq-story-rivertwo-scrollable {\n\t\tdisplay:none;\n\t}\n\n\n\"\"\" twoStorySidebar:\"\"\"\n\t.tc-story-river {\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tborder-left: 0;\n\t\tz-index: inherit;\n\t\tbackground: transparent;\n\t}\n\"\"\" twoStoryNoSidebar: \"\"\"\n\t.tc-story-river {\n\t\tpadding-right: 2em;\n\t}\n\"\"\"\n\n>>\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n.tc-story-river {\nmargin-right: 0;\n}\n}\n\n\n</pre>\n",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/Stories.css",
"tags": "$:/tags/Stylesheet",
"modified": "20200731105030883",
"created": "20170608102837192"
},
"$:/_sq/Stories/StoriesList": {
"text": "",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/StoriesList",
"tags": "",
"modified": "20200414145004320",
"list": "$:/_sq/Stories/Story2StoryList $:/StoryList",
"created": "20170610072420739"
},
"$:/_sq/Stories/Story2StoryList": {
"title": "$:/_sq/Stories/Story2StoryList",
"text": "",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"modified": "20200731105210982",
"list": "$:/plugins/sq/Stories/changelog $:/config/sq/Stories/story2/fontsize-title $:/config/sq/Stories/storyRiverRatio [[Pack stories to plugin]]",
"created": "20170615140314952"
},
"$:/_sq/Stories/Templates/RiverDropZone": {
"text": "\\define drop-actions()\n<$action-listops $tiddler=<<otherStoryList>> $subfilter=\"+[remove<actionTiddler>]\"/> \n<$action-navigate $to=<<actionTiddler>>/>\n\\end\n<$reveal state=\"$:/_sq/Stories/config/showRiverDropZones\" text=\"enable\" type=\"match\" default=\"disable\">\n<div class=\"sq-storydropzone-container sq-twostoriesonly\">\n\t<div class=\"sq-storydropzone-newtiddlerbutton tc-page-controls\">\n\t\t<$transclude tiddler=\"$:/core/ui/Buttons/new-tiddler\"/>\n\t</div>\n\t<div style=\"position: relative; \" class=\"sq-storydropzone sq-twostoriesonly\">\n\t\t<$set name=\"otherStoryList\" filter=\"[enlist{$:/_sq/Stories/StoriesList!!list}] -[<tv-story-list>]\" select=\"0\">\n\t\t<$droppable actions=<<drop-actions>>>\n\t\t\t<div class=\"tc-droppable-placeholder\">\n\t\t\t \n\t\t\t</div>\n\t\t\t<div>\n\t\t\t\tDrop link here to open\n\t\t\t</div>\n\t\t</$droppable>\n\t\t</$set>\n\t</div>\n</div>\n</$reveal>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/Templates/RiverDropZone",
"tags": "$:/tags/AboveStory",
"modified": "20200523213430940",
"list-before": "$:/core/ui/PageTemplate/story",
"created": "20170609191118712"
},
"$:/_sq/Stories/Templates/Story2Template": {
"text": "\\whitespace trim\n<$reveal state=\"$:/config/_sq/Stories/story2\" type=\"match\" text=\"yes\" default=\"no\" retain=\"yes\" animate=\"no\" tag=\"section\" class=\"tc-story-river tc-storytwo-river sq-story-rivertwo\">\n\n<$navigator story=\"$:/_sq/Stories/Story2StoryList\" history=\"$:/_sq/Stories/Story2HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n<$scrollable class=\"sq-story-rivertwo-scrollable\" fallthrough=\"no\">\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/_sq/Stories/Story2StoryList]]\" history=\"$:/_sq/Stories/Story2HistoryList\" template={{{[[$:/config/sq/Stories/story2/ViewTemplate]get[text]!is[blank]] ~[[$:/config/ui/ViewTemplate]get[text]]}}} editTemplate={{{[[$:/config/sq/Stories/story2/EditTemplate]get[text]!is[blank]] ~[[$:/config/ui/EditTemplate]get[text]]}}} storyview={{$:/_sq/Stories/config/Story2-storyview}}>\n\n<div>\n<$transclude/>\n</div>\n\n</$list>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</$scrollable>\n</$navigator>\n\n</$reveal>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/Templates/Story2Template",
"tags": "$:/tags/PageTemplate",
"modified": "20200730045003939",
"list-after": "$:/core/ui/PageTemplate/story",
"created": "20170608171610013"
},
"$:/_sq/Stories/Templates/StoryToggleMenu": {
"text": "<div class=\"sq-twostoriesonly\">\n<$reveal state=\"$:/config/_sq/Stories/story2\" type=\"nomatch\" text=\"no\" default=\"no\">\n<$button set=\"$:/config/_sq/Stories/story2\" setTo=\"no\" tooltip=\"Hide right column\" aria-label=\"\" class=\"tc-btn-invisible tc-btn-storytwotoggle\">{{$:/_sq/Stories/icons/bars-empty.svg}} </$button> Hide right column\n</$reveal>\n</div>\n<$reveal state=\"$:/config/_sq/Stories/story2\" type=\"match\" text=\"no\" default=\"no\">\n<$button set=\"$:/config/_sq/Stories/story2\" setTo=\"yes\" tooltip=\"Show right column\" aria-label=\"\" class=\"tc-btn-invisible tc-btn-storytwotoggle tc-btn-storytwotoggle-bars\">{{$:/_sq/Stories/icons/bars.svg}}</$button> <span class=\"sq-stories-disabled\">Show right column</span>\n</$reveal>\n",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/Templates/StoryToggleMenu",
"modified": "20200425133224298",
"created": "20170608172531552"
},
"$:/_sq/Stories/Templates/StoryTogglePageControl": {
"text": "<span class=\"sq-twostoriesonly\">\n\t<$reveal state=\"$:/config/_sq/Stories/story2\" type=\"nomatch\" text=\"no\" default=\"no\">\n\t\t<$button set=\"$:/config/_sq/Stories/story2\" setTo=\"no\" tooltip=\"Hide right column\" aria-label=\"\" class=\"tc-btn-invisible tc-btn-storytwotoggle\">{{$:/_sq/Stories/icons/bars-empty.svg}} </$button>\n\t</$reveal>\n</span>\n<$reveal state=\"$:/config/_sq/Stories/story2\" type=\"match\" text=\"no\" default=\"no\">\n\t<$button set=\"$:/config/_sq/Stories/story2\" setTo=\"yes\" tooltip=\"Show right column\" aria-label=\"\" class=\"tc-btn-invisible tc-btn-storytwotoggle\">{{$:/_sq/Stories/icons/bars.svg}}</$button>\n</$reveal>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/Templates/StoryTogglePageControl",
"tags": "$:/tags/PageControls",
"modified": "20200425133303133",
"description": "Show right column for second story",
"created": "20170617182141154",
"caption": "{{$:/_sq/Stories/icons/bars.svg}} Show right column"
},
"$:/_sq/Stories/Story2HistoryList": {
"created": "20200425131030296",
"text": "[\n {\n \"title\": \"$:/config/Tiddlers/TitleLinks\",\n \"fromPageRect\": {\n \"top\": 249.296875,\n \"left\": 1230,\n \"width\": 183.515625,\n \"right\": 1413.515625,\n \"bottom\": 269.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerMacro\",\n \"fromPageRect\": {\n \"top\": 623.296875,\n \"left\": 1230,\n \"width\": 220.390625,\n \"right\": 1450.390625,\n \"bottom\": 643.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerMacro\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerMacro\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerEditMacro\",\n \"fromPageRect\": {\n \"top\": 319.296875,\n \"left\": 1230,\n \"width\": 245.53125,\n \"right\": 1475.53125,\n \"bottom\": 339.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerEditMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerEditMacro\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryToggleMenu\",\n \"fromPageRect\": {\n \"top\": 537.296875,\n \"left\": 1230,\n \"width\": 283.546875,\n \"right\": 1513.546875,\n \"bottom\": 557.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\",\n \"fromPageRect\": {\n \"top\": 297.296875,\n \"left\": 1230,\n \"width\": 326.734375,\n \"right\": 1556.734375,\n \"bottom\": 317.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryToggleMenu'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryToggleMenu\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryToggleMenu'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryToggleMenu\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerEditMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerEditMacro\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryToggleMenu'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryToggleMenu\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryToggleMenu'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryToggleMenu\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/Templates/StoryTogglePageControl'\"\n },\n {\n \"title\": \"$:/_sq/Stories/Templates/StoryTogglePageControl\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerEditMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerEditMacro\"\n },\n {\n \"title\": \"$:/core/ui/SideBar/Open\",\n \"fromPageRect\": {\n \"top\": 337.296875,\n \"left\": 1230,\n \"width\": 161.8125,\n \"right\": 1391.8125,\n \"bottom\": 357.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/core/ui/SideBar/Open'\"\n },\n {\n \"title\": \"$:/core/ui/SideBar/Open\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerEditMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerEditMacro\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/divertTiddlerEditMacro'\"\n },\n {\n \"title\": \"$:/_sq/Stories/divertTiddlerEditMacro\"\n },\n {\n \"title\": \"TiddlyBlink\"\n },\n {\n \"title\": \"Stories-overview\",\n \"fromPageRect\": {\n \"top\": 1035.921875,\n \"left\": 1190,\n \"width\": 101.6875,\n \"right\": 1291.6875,\n \"bottom\": 1054.921875,\n \"height\": 19\n }\n },\n {\n \"title\": \"$:/.giffmex/Customize.TiddlyBlink\",\n \"fromPageRect\": {\n \"top\": 735.625,\n \"left\": 107.5,\n \"width\": 145.171875,\n \"right\": 252.671875,\n \"bottom\": 755.625,\n \"height\": 20\n }\n },\n {\n \"title\": \"$:/.giffmex/meta/hack.tiddlyblink\",\n \"fromPageRect\": {\n \"top\": 757.625,\n \"left\": 107.5,\n \"width\": 129.59375,\n \"right\": 237.09375,\n \"bottom\": 777.625,\n \"height\": 20\n }\n },\n {\n \"title\": \"TiddlyBlink\",\n \"fromPageRect\": {\n \"top\": 161.296875,\n \"left\": 221.953125,\n \"width\": 71.859375,\n \"right\": 293.8125,\n \"bottom\": 181.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"TiddlyBlink\",\n \"fromPageRect\": {\n \"top\": 161.296875,\n \"left\": 221.953125,\n \"width\": 71.859375,\n \"right\": 293.8125,\n \"bottom\": 181.296875,\n \"height\": 20\n }\n },\n {\n \"title\": \"Stories-overview\",\n \"fromPageRect\": {}\n },\n {\n \"title\": \"Draft of 'Stories-overview'\"\n },\n {\n \"title\": \"Stories-overview\"\n },\n {\n \"title\": \"Draft of 'Stories-overview'\"\n },\n {\n \"title\": \"Stories-overview\"\n },\n {\n \"title\": \"Draft of 'Stories'\"\n },\n {\n \"title\": \"Plugin maker\",\n \"fromPageRect\": {\n \"top\": 481.34375,\n \"left\": 2259,\n \"width\": 80.890625,\n \"right\": 2339.890625,\n \"bottom\": 500.34375,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of 'Plugin maker'\"\n },\n {\n \"title\": \"Plugin maker\"\n },\n {\n \"title\": \"Stories\",\n \"fromPageRect\": {\n \"top\": 296.84375,\n \"left\": 2259,\n \"width\": 41.453125,\n \"right\": 2300.453125,\n \"bottom\": 315.84375,\n \"height\": 19\n }\n },\n {\n \"title\": \"Plugin maker\",\n \"fromPageRect\": {\n \"top\": 501.34375,\n \"left\": 2259,\n \"width\": 80.890625,\n \"right\": 2339.890625,\n \"bottom\": 520.34375,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of 'Plugin maker'\"\n },\n {\n \"title\": \"Plugin maker\"\n },\n {\n \"title\": \"Draft of 'Stories'\"\n },\n {\n \"title\": \"Stories\"\n },\n {\n \"title\": \"$:/_sq/Stories/config/Settings\",\n \"fromPageRect\": {\n \"top\": 360.171875,\n \"left\": 1245,\n \"width\": 182.21875,\n \"right\": 1427.21875,\n \"bottom\": 379.171875,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/config/Settings'\"\n },\n {\n \"title\": \"$:/_sq/Stories/config/Settings\"\n },\n {\n \"title\": \"$:/_sq/Stories/config/Settings\",\n \"fromPageRect\": {\n \"top\": 360.171875,\n \"left\": 1245,\n \"width\": 182.21875,\n \"right\": 1427.21875,\n \"bottom\": 379.171875,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/config/Settings'\"\n },\n {\n \"title\": \"$:/_sq/Stories/config/Settings\"\n },\n {\n \"title\": \"Draft of 'Stories'\"\n },\n {\n \"title\": \"Stories\"\n },\n {\n \"title\": \"Draft of 'Stories'\"\n },\n {\n \"title\": \"Stories\"\n },\n {\n \"title\": \"Draft of 'Stories'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories\",\n \"fromPageRect\": {\n \"top\": 463.734375,\n \"left\": 2321.1875,\n \"width\": 476.734375,\n \"right\": 2797.921875,\n \"bottom\": 482.734375,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"Stories-overview\"\n },\n {\n \"title\": \"Draft of 'Stories changelog'\"\n },\n {\n \"title\": \"Stories changelog\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories\",\n \"fromPageRect\": {\n \"top\": 573.203125,\n \"left\": 2255.625,\n \"width\": 127.640625,\n \"right\": 2383.265625,\n \"bottom\": 592.203125,\n \"height\": 19\n }\n },\n {\n \"title\": \"$:/_sq/Stories/widgets/action-addtohistory\",\n \"fromPageRect\": {\n \"top\": 1023.453125,\n \"left\": 1194.5,\n \"width\": 263.703125,\n \"right\": 1458.203125,\n \"bottom\": 1042.453125,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"$:/_sq/Stories/widgets/action-addtohistory\",\n \"fromPageRect\": {\n \"top\": 653.453125,\n \"left\": 1194.5,\n \"width\": 263.703125,\n \"right\": 1458.203125,\n \"bottom\": 672.453125,\n \"height\": 19\n }\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories'\"\n },\n {\n \"title\": \"Draft of 'Stories changelog'\"\n },\n {\n \"title\": \"Stories_changelog\"\n },\n {\n \"title\": \"Draft of 'Stories_changelog'\"\n },\n {\n \"title\": \"$:/_sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/_sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"$:/config/_sq/Stories/story2/EditTemplate\",\n \"fromPageRect\": {\n \"top\": 242.78125,\n \"left\": 1226.5,\n \"width\": 273.875,\n \"right\": 1500.375,\n \"bottom\": 262.78125,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"Draft of 'Pack stories to plugin'\"\n },\n {\n \"title\": \"Pack stories to plugin\"\n },\n {\n \"title\": \"$:/config/sq/Stories/story2/EditTemplate\",\n \"fromPageRect\": {\n \"top\": 242.78125,\n \"left\": 1226.5,\n \"width\": 267.65625,\n \"right\": 1494.15625,\n \"bottom\": 262.78125,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"$:/config/sq/Stories/storyRiverRatio\",\n \"fromPageRect\": {\n \"top\": 330.78125,\n \"left\": 1302.75,\n \"width\": 235.375,\n \"right\": 1538.125,\n \"bottom\": 350.78125,\n \"height\": 20\n }\n },\n {\n \"title\": \"$:/config/sq/Stories/story2-fontsize\",\n \"fromPageRect\": {\n \"top\": 220.78125,\n \"left\": 1522.875,\n \"width\": 234.171875,\n \"right\": 1757.046875,\n \"bottom\": 240.78125,\n \"height\": 20\n }\n },\n {\n \"title\": \"Draft of '$:/config/sq/Stories/story2-fontsize'\"\n },\n {\n \"title\": \"$:/config/sq/Stories/story2/fontsize-title\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n },\n {\n \"title\": \"Draft of '$:/plugins/sq/Stories/changelog'\"\n },\n {\n \"title\": \"$:/plugins/sq/Stories/changelog\"\n }\n]",
"type": "application/json",
"current-tiddler": "$:/plugins/sq/Stories/changelog",
"modified": "20200806034532118",
"title": "$:/_sq/Stories/Story2HistoryList",
"revision": "0",
"bag": "default"
},
"$:/core/ui/SideBar/Open": {
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<$action-listops $tiddler=<<_otherStory>> $subfilter=\"-[<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n\\define open-tiddler-list()\n<div class=\"tc-sidebar-tab-open sq-sidebar-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">{{$:/core/images/close-button}}</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n\\end\n\n\n''Left Column''\n<$set name=\"_otherStory\" filter=\"[enlist{$:/_sq/Stories/StoriesList!!list}] -[<tv-story-list>]\" select=\"0\">\n<<open-tiddler-list>>\n</$set>\n<div class=\"sq-twostoriesonly\">\n\n---\n\n''Right Column''\n<$set name=\"_otherStory\" value=<<tv-story-list>> >\n<$set name=\"tv-story-list\" filter=\"[enlist{$:/_sq/Stories/StoriesList!!list}] -[<tv-story-list>]\" select=\"0\">\n<$set name=\"tv-history-list\" filter=\"[enlist{$:/_sq/Stories/HistoriesList!!list}] -[<tv-history-list>]\" select=\"0\">\n<$navigator story=<<tv-story-list>> history=<<tv-history-list>> >\n<<open-tiddler-list>>\n</$navigator>\n</$set>\n</$set>\n</$set>\n\n</div>\n\n---\n\n<$transclude tiddler=\"$:/_sq/Stories/Templates/StoryToggleMenu\"/>",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"modified": "20200425133519499",
"created": "20170609174945253",
"caption": "{{$:/language/SideBar/Open/Caption}}"
},
"$:/config/_sq/Stories/story2": {
"text": "yes",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/config/_sq/Stories/story2",
"modified": "20200731104006221",
"created": "20170615081040584"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"text": "fluid-fixed",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"tags": "tb",
"modified": "20200416185419828",
"created": "20200127172539001"
},
"$:/plugins/sq/Stories/settings": {
"text": "\\define switchStoryView(storyview,default)\n<$select tiddler='$storyview$' default='$default$'>\n<option value=\"zoomin\"><$text text='one tiddler only'/></option>\n<option value=\"classic\"><$text text='multiple tiddlers'/></option>\n</$select>\n\\end\n\n|[[Minimum width to show the second story|$:/_sq/Stories/config/twostorybreakpoint]] |<$edit-text tiddler=\"$:/_sq/Stories/config/twostorybreakpoint\" default=\"\" tag=\"input\"/> |\n|[[Minimum width to show non-overlapping sidebar|$:/_sq/Stories/config/sidebaroverlaybreakpoint]] |<$edit-text tiddler=\"$:/_sq/Stories/config/sidebaroverlaybreakpoint\" default=\"\" tag=\"input\"/> |\n|[[Open tiddlers at top or bottom of story when using divert button|$:/_sq/Stories/config/openLinkDivert]] | <$select tiddler=\"$:/_sq/Stories/config/openLinkDivert\" default=\"top\"><option value=\"top\">top</option><option value=\"bottom\">bottom</option></$select>|\n|<$link to=\"$:/_sq/Stories/config/showRiverDropZones\">Show dropzones above each story</$link>|<$checkbox tiddler=\"$:/_sq/Stories/config/showRiverDropZones\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"disable\"></$checkbox>|\n|[[Story view for second story|$:/_sq/Stories/config/Story2-storyview]]:|{{$:/_sq/Stories/config/snippets/viewswitcher}}|\n\n\n\n''Choose how to view tiddlers in each column''\n\nLeft column: <<switchStoryView $:/view zoomin>>\n\nRight column: <<switchStoryView $:/_sq/Stories/config/Story2-storyview classic>>\n\n''Left column to right column width ratio:''\n\n{{$:/config/sq/Stories/storyRiverRatio}} : <$text text={{{[[100]subtract{$:/config/sq/Stories/storyRiverRatio}]}}}/>\n\n<$range tiddler=\"$:/config/sq/Stories/storyRiverRatio\" min=\"20\" max=\"80\" default=\"50\" increment=\"5\"/> \n<!--\n''Right column font-size''\n\nTiddler: {{$:/config/sq/Stories/story2/fontsize-title}}px\n\n<$range tiddler=\"$:/config/sq/Stories/story2/fontsize-title\" min=\"6\" max=\"40\" default=\"14\" increment=\"1\"/> \n\nBody: {{$:/config/sq/Stories/story2/fontsize-body}}px\n\n<$range tiddler=\"$:/config/sq/Stories/story2/fontsize-body\" min=\"6\" max=\"40\" default=\"15\" increment=\"1\"/> \n\n-->",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/sq/Stories/settings",
"tags": "$:/tags/ControlPanel/Appearance",
"modified": "20200731105236925",
"created": "20170616185336118",
"caption": "Two Story Layout"
},
"$:/plugins/sq/Stories/changelog": {
"created": "20200430210052275",
"text": "Version 1.03\n\n* Fixed bug in view toolbar position caused by extra blank line in $:/_sq/Stories/divertTiddlerMacro\n\nVersion 1.0.2\n\n* Fixed bug where storyRiverRatio was not respected at some resolutions\n\nVersion 1.0.1\n\n* Added support for config tiddlers to customize view and edit templates for second story. These tiddlers override the core config tiddlers if they exist.\n** $:/config/sq/Stories/story2/EditTemplate\n** $:/config/sq/Stories/story2/ViewTemplate\n* Relative width of each story river can now be customized in settings tab for plugin\n** introduced $:/config/sq/Stories/storyRiverRatio and updated Stories.css accordingly\n\nVersion 1.0.0\n\n* 29/07: updated $:/_sq/Stories/EditTiddlerHook to try and fix https://github.com/felixhayashi/TW5-TiddlyMap/issues/357\n* 23/05 : tweaked Stories.css based on personal theme to allow easier adjustment of story width\n* 23/05 : deprecated action-addtohistory widget\n* 23/05 : updated divertTiddlerEditMacro to use navigator widgets\n* 23/05 : updated divertTiddlerMacro to use navigator widgets\n* 30/04 : updated divertTiddlerEditMacro to also update history and avoid issues with zoomin storyview",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/sq/Stories/changelog",
"tags": "",
"modified": "20200806034532118"
},
"$:/_sq/Stories/config/storyRiverRatio": {
"text": "50",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/_sq/Stories/config/storyRiverRatio",
"tags": "",
"modified": "20200730045328744",
"created": "20200730040856198"
},
"$:/config/sq/Stories/story2/fontsize-body": {
"text": "15",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/config/sq/Stories/story2/fontsize-body",
"tags": "",
"modified": "20200731104543869",
"created": "20200731102336058"
},
"$:/config/sq/Stories/story2/fontsize-title": {
"text": "14",
"bag": "default",
"revision": "0",
"type": "text/vnd.tiddlywiki",
"title": "$:/config/sq/Stories/story2/fontsize-title",
"tags": "",
"modified": "20200731105040270",
"created": "20200730045554550"
},
"$:/config/sq/Stories/storyRiverRatio": {
"text": "50",
"bag": "default",
"revision": "14",
"type": "text/vnd.tiddlywiki",
"title": "$:/config/sq/Stories/storyRiverRatio",
"tags": "",
"modified": "20200802091529278",
"created": "20200730040856198"
}
}
}
{
"tiddlers": {
"$:/plugins/sycom/g-analytics/settings/disclaimer_title": {
"title": "$:/plugins/sycom/g-analytics/settings/disclaimer_title",
"caption": "This wiki uses Google Analytics",
"text": "This tiddler caption field contains the title for your disclaimer tiddler\n"
},
"$:/plugins/sycom/g-analytics/googleanalytics.js": {
"title": "$:/plugins/sycom/g-analytics/googleanalytics.js",
"text": "/*\\\ntitle: $:/plugins/sycom/g-analytics/googleanalytics.js\ntype: application/javascript\nmodule-type: startup\n\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`. You may also track internal navigation. DNT and GDPR compliant.\n\n\\*/\n(function() {\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n // Export name and synchronous status\n exports.name = \"google-analytics\";\n exports.platforms = [\"browser\"];\n exports.after = [\"startup\"];\n exports.synchronous = true;\n\n exports.startup = function() {\n var GA_Launched = 0; // GA active detector\n // initializing disclaimer\n var GA_DISCLAIMER_TITLE = $tw.wiki.getTiddler(\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\").fields.caption || \"This wiki uses Google analytics\";\n GA_DISCLAIMER_TITLE = GA_DISCLAIMER_TITLE.replace(/\\n/g, \"\");\n // load informations about tracking\n $tw.wiki.setText(GA_DISCLAIMER_TITLE, \"text\", null, $tw.wiki.getTiddlerText(\"$:/plugins/sycom/g-analytics/disclaimer\"));\n // testing do not track before launching\n var dnt = navigator.doNotTrack || 0;\n if (dnt === \"1\") {\n // tells the wiki that DNT is on for disclaimer adaptation\n $tw.wiki.setText(\"$:/temp/GoogleAnalyticsDNT\", \"text\", null, \"yes\");\n } else {\n // getting parameters - account, domain, tracking tiddlers and gdpr - opt-in\n var GA_ACCOUNT = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsAccount\") || \"\",\n GA_DOMAIN = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsDomain\") || \"\",\n GA_TRACKALL = $tw.wiki.getTiddlerText(\"$:/plugins/sycom/g-analytics/settings/track_all\") || \"no\",\n GA_GDPR = \"yes\";\n GA_ACCOUNT = GA_ACCOUNT.replace(/\\n/g, \"\");\n GA_DOMAIN = GA_DOMAIN.replace(/\\n/g, \"\");\n // handling domain parameter : user defined > from window location > \"auto\" fallback\n if (GA_DOMAIN == \"\") GA_DOMAIN = window.location.hostname;\n if (GA_DOMAIN == undefined) GA_DOMAIN = \"auto\";\n GA_TRACKALL = GA_TRACKALL.replace(/\\n/g, \"\");\n // create a \"hook\" on navigation to send data via tracker\n $tw.wiki.addEventListener(\"change\", function(changes) {\n // if first launch, initiates GA\n if (GA_Launched === 0) {\n // using ga \"isogram\" function\n (function(i, s, o, g, r, a, m) {i['GoogleAnalyticsObject'] = r;i[r] = i[r] || function() {(i[r].q = i[r].q || []).push(arguments)}, i[r].l = 1 * new Date();a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');\n GA_Launched = 1;\n }\n // get informations about GDPR opt-in (or not)\n GA_GDPR = $tw.wiki.getTiddlerText(\"$:/temp/GoogleAnalyticsGDPRoption\") || \"yes\";\n GA_GDPR = GA_GDPR.replace(/\\n/g, \"\");\n if (GA_GDPR !== \"yes\") {\n // GDPR has been cleared by opt-in\n if (GA_TRACKALL === \"yes\") {\n ga('create', GA_ACCOUNT, GA_DOMAIN);\n // dealing with user settings !todo check if options is associated with wiki or $tw\n var options = $tw.wiki.options || {},\n storyTitle = options.storyTitle || \"$:/StoryList\",\n historyTitle = options.historyTitle || \"$:/HistoryList\";\n // getting storyList (displayed) historyList (last displayed) and last item\n var storyList = $tw.wiki.getTiddler(storyTitle).fields.list;\n var history = $tw.wiki.getTiddlerText(historyTitle) || \"[{\\\"title\\\": \\\"\" + storyList[0] + \"\\\"}]\";\n var historyList = JSON.parse(history);\n var GA_CURRENT = historyList[historyList.length - 1].title;\n // if last item has not been closed, prepare data and send to tracker\n if (storyList.includes(GA_CURRENT)) {\n // if history modified is true send tracker (else user may just closed another tiddler)\n // note that clicking on a tiddlerlink from already opened tiddler will count\n if ((historyList.length ===1 || changes[historyTitle]) && GA_GDPR !== \"yes\") {\n ga('set', 'page', window.location.pathname + '/' + GA_CURRENT);\n ga('set', 'title', GA_CURRENT);\n ga('send', 'pageview');\n }\n }\n } else {\n // get informations about GDPR opt-out\n GA_GDPR = $tw.wiki.getTiddlerText(\"$:/temp/GoogleAnalyticsGDPRoption\") || \"yes\";\n GA_GDPR = GA_GDPR.replace(/\\n/g, \"\");\n // send data for whole page once only\n ga('create', GA_ACCOUNT, GA_DOMAIN);\n ga('send', 'pageview');\n }\n }\n });\n }\n }\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/sycom/g-analytics/disclaimer": {
"title": "$:/plugins/sycom/g-analytics/disclaimer",
"text": "<<i18n disclaimer_common $:/plugins/sycom/g-analytics>>\n\n<$reveal type=\"match\" stateTitle=\"$:/temp/GoogleAnalyticsDNT\" text=\"yes\">\n\n<<i18n disclaimer_dnt $:/plugins/sycom/g-analytics>>\n</$reveal>\n\n<$reveal type=\"nomatch\" stateTitle=\"$:/temp/GoogleAnalyticsDNT\" text=\"yes\">\n <$reveal type=\"nomatch\" stateTitle=\"$:/temp/GoogleAnalyticsGDPRoption\" text=\"no\">\n\n<<i18n disclaimer_gdpr $:/plugins/sycom/g-analytics>>\n </$reveal>\n <$reveal type=\"match\" stateTitle=\"$:/temp/GoogleAnalyticsGDPRoption\" text=\"no\">\n\n<<i18n disclaimer_nogdpr $:/plugins/sycom/g-analytics>>\n <$reveal type=\"match\" stateTitle=\"$:/plugins/sycom/g-analytics/settings/track_all\" text=\"yes\">\n<<i18n disclaimer_internal $:/plugins/sycom/g-analytics>>\n </$reveal>\n\n<<i18n disclaimer_settings $:/plugins/sycom/g-analytics>>\n </$reveal>\n</$reveal>\n"
},
"$:/plugins/sycom/g-analytics/disclaimer_notification": {
"title": "$:/plugins/sycom/g-analytics/disclaimer_notification",
"text": "<<i18n disclaimer_notification $:/plugins/sycom/g-analytics '' inline>>\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_common": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_common",
"text": "As many website do, this wiki can use [[Google Analytics|https://analytics.google.com]] (via the [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) to help analyse how much visitors use this site and where they come from. Google uses “[[cookies|https://en.wikipedia.org/wiki/HTTP_cookie]]”, which are small text files placed on your computer, to collect standard internet log information and visitor behaviour information in an anonymous form.\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_dnt": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_dnt",
"text": "However, as you are visiting, with your browser in private mode or have activated [[Do Not Track|http://donottrack.us/]], the plugin is fully deactivated. So no information can be collected nor sent anywhere.\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_gdpr": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_gdpr",
"text": "However, as you did not \"opt-in\" to be part of our survey panel, the plugin is deactivated for now and no information will be collected nor sent anywhere. You may change your mind whenever you want by just checking this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_internal": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_internal",
"text": "Note also that as ''internal link tracker option is activated'' on this wiki, so the tracker will send the title of each tiddler you're visiting (still anonymously though).\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_nogdpr": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_nogdpr",
"text": "As you did accept to be part of our panel, the plugin is now collecting data about your navigation.\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_notification": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_notification",
"text": "This website would like to know more about your visit by enabling an analytics tracker (and //cookies//). If you allow it, please check here <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >read more</$link>.\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_settings": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/disclaimer_settings",
"text": "Your anonymity is safe here but you may wish to disable all tracking since data are sent to Google who may use them for marketing purpose. The plugin is compliant with [[Do Not Track|http://donottrack.us/]]. So,\n\n* if you enable ''do not track'' option ''in your browser'' and reload the page the wiki will not collect nor send data any more. You may also use privacy extensions to control which site can track you. [[All About Do Not Track|https://allaboutdnt.com/]] website provide usefull informations about all this.\n* some browsers enable do not track when using \"private mode\" ([[Firefox|http://firefox.com]] does). If you visit the wiki from those browsers in \"private mode\" no data will be sent either.\n* you may also want to \"opt-out\". If so, uncheck this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/settings": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/settings",
"text": "You have two value and one option parameters to set, ''only first is mandatory''. You may (should?) also customize privacy disclaimers to fit your wiki language or local laws. Save and reload after changing.\n\n!!Parameters\n\n''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'' (mandatory) : your^^1^^ code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\"$:/GoogleAnalyticsAccount\" default=\"\" tag=\"input\"/>\n\n''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'' (optional) : the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\"$:/GoogleAnalyticsDomain\" default=\"\" tag=\"input\"/>\n\n<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'track all tiddlers'>> If you want the tracker to track also internal links, check this (will set [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] to \"yes\")\n\n^^1^^ //if not, you may send data to other Google Analytics user.//\n\n!! Privacy information customizing\nYou may personalize or translate messages displayed by the plugin by editing those tiddlers (see different cases below). Please note that future updates of plugin may revert your edits.\n\n* [[Notification message|$:/plugins/sycom/g-analytics/disclaimer_notification]]\n\n* ''Privacy disclaimer''\n*# Title : <$edit-text tiddler=\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\" field=\"caption\" tag=\"input\"/>\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/usage": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/usage",
"text": "!! Create a Google Analytics account\n\nIf you don't already have an account:\n\n# Go to the Google Analytics website: http://www.google.com/analytics/\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\n# Enter the URL where the wiki is hosted\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\n\n!! Install the plugin on your local copy of the TiddlyWiki\n\n# ''Backup your TiddlyWiki''. Just in case\n# Install the plugin via the plugin manager in control panel\n# Save the TiddlyWiki and refresh the page to load the plugin\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\n# Go to the //settings// tab and edit the parameters\n# Save the TiddlyWiki\n\n!! Upload the new version of your TiddlyWiki\n\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\n# Return to your Google Analytics page to check that your site is being tracked\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_common": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_common",
"text": "Comme le font beaucoup de sites internet, ce wiki utilise [[Google Analytics|https://analytics.google.com]] (via le plugin [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) pour aider à analyser combien de visiteurs utilisent le site et d'où ils viennent. Google utilise des “[[cookies|https://fr.wikipedia.org/wiki/Cookie_(informatique)]]”, qui sont de petit fichiers texte placés sur votre ordinateur pour collecter des informations de connexion classique sous une forme anonyme.\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_dnt": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_dnt",
"text": "Toutefois, comme vous visitez ce wiki avec votre navigateur en mode \"navigation privée\" ou que vous avez activé [[Do Not Track|http://donottrack.us/]], le plugin est complètement désactivé. Aucune information ne pourra être collectée ni envoyée nulle part.\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_gdpr": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_gdpr",
"text": "Toutefois, comme vous n'avez pas fait le choix d'intégrer notre panel de suivi, le plugin est désactivé pour le moment et aucune information ne sera collectée ni envoyée nulle part. Vous pouvez changer d'avis à tout moment juste en validant ici <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'suivi?'>>\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_internal": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_internal",
"text": "Notez également que ''le suivi de navigation interne est activé'' sur ce wiki. Le plugin collectera donc des données sur le titre de chaque tiddler visité (toujours anonymement).\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_nogdpr": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_nogdpr",
"text": "Comme vous avez accepté d'intégrer notre panel de suivi, le plugin collecte désormais des informations sur votre navigation.\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_notification": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_notification",
"text": "Ce wiki aimerait en savoir plus sur votre visite par l'activation du suivi Google Analytics (et des //cookies//). Si vous l'autorisez, merci de le valider ici <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'suivi?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >en savoir plus</$link>.\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_settings": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/disclaimer_settings",
"text": "Votre anonymat est préservé ici, mais vous voudrez peut-être désactiver toute collecte de statistique, dans la mesure où les données sont envoyées à Google qui peut les utiliser à des fins commerciales. Le plugin est compatible avec [[Do Not Track|http://donottrack.us/]]. Donc,\n\n* si vous activez l'option ''ne pas pister'' (//do not track//) ''dans votre navigateur'' le wiki ne collectera et n'enverra plus aucune donnée. Il est également possible d'utiliser des extensions pour votre navigateur qui contrôlent qui vous piste. Le site [[All About Do Not Track|https://allaboutdnt.com/]] (en anglais) fourni des informations utiles sur ce sujet.\n* certains navigateurs activent //do not track// lorsque l'on passe en mode \"navigation privée\" ([[Firefox|http://firefox.com]] le fait). Si vous visitez le wiki dans ce mode aucune donnée ne sera alors envoyée.\n* dans tous les cas vous pouvez aussi faire le choix de sortir du panel <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/readme": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/readme",
"text": "Ce [plugin G-Analytics](#$:/plugins/sycom/g-analytics) constitue une alternative à celui que vous trouverez dans la librairie officielle de TiddlyWiki.\n\nIl est compatible avec [Do Not Track][dnt] et avec le [RGPD][rgpd]. Il permet aussi un suivi de la navigation d'un tiddler à l'autre.\n\nVoyez la [page de demonstration][plugindemo] ou la documentation intégrée pour voir comment il fonctionne.\n\n## Sources / licenses\n* basé sur [le plugin officiel][official] de TiddlyWiki qui intègre [le code officiel de Google][googlecode]\n* [ce plugin][source] est sous une licence [BSD 3-Clause license][license] très similaire à celle de TiddlyWiki.\n\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins\n[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics\n[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs\n[dnt]: http://donottrack.us/\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics\n[rgpd]: https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\n",
"type": "text/x-markdown",
"caption": "Lisez-moi"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/settings": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/settings",
"text": "Il y a deux paramètres et une option à régler, ''seul le premier est obligatoire''. Vous pouvez (devriez?) également personnaliser les messages d'information sur la vie privée pour les adapter à votre langue ou aux règlements en vigueur localement. Sauvegardez et rechargez le wiki après changement.\n\n!!Paramètres\n\n''[[Compte Google Analytics|$:/GoogleAnalyticsAccount]]'' (obligatoire) : votre^^1^^ code sous la forme `UA-XXXXXX-XX` où X sont des nombres<br/><$edit-text tiddler=\"$:/GoogleAnalyticsAccount\" default=\"\" tag=\"input\"/>\n\n''[[Domaine Google Analytics|$:/GoogleAnalyticsDomain]]'' (optionnel) : l'adresse du site où le wiki est publié. Par défaut, `auto` if not set.<br/><$edit-text tiddler=\"$:/GoogleAnalyticsDomain\" default=\"\" tag=\"input\"/>\n\n<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'suivre tous les tiddlers'>> Si vous souhaitez suivre la navigation interne au wiki, activez cette option (mettra [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] à la valeur \"yes\")\n\n^^1^^ //sinon, vous risquez d'envoyer vos données de suivi sur un autre compte Analytics (ou nulle part)//\n\n!! Personnalisation des informations sur la vie privée\nVous pouvez personnaliser ou traduire les messages affichés par le plugin en éditant ces différents tiddlers. Notez que des mises à jours du plugin nécessiteront peut-être des mises à jour de votre part.\n\n* [[Message de notification|$:/plugins/sycom/g-analytics/disclaimer_notification]]\n\n* ''Informations sur la vie privée''\n** Titre du message : <$edit-text tiddler=\"$:/plugins/sycom/g-analytics/settings/disclaimer_title\" field=\"caption\" tag=\"input\"/>\n"
},
"$:/plugins/sycom/g-analytics/i18n/fr-FR/usage": {
"title": "$:/plugins/sycom/g-analytics/i18n/fr-FR/usage",
"text": "!! Créez-vous un compte Google Analytics\n\nSi vous n'avez pas déjà un compte :\n\n# Rendez vous sur le site de Google Analytics : http://www.google.com/analytics/\n# Cliquez sur le bouton ''Accéder à Google Analytics'' et suivez les instructions pour créer votre compte\n# Donnez l'adresse URL à laquelle votre wiki est hébergé\n# Récupérez l'identifiant de suivi pour ce domaine sous la forme `UA-XXXXXX-XX`\n\n!! Installez le plugin sur votre TiddlyWiki\n\n# ''Faites une sauvegarde de votre TiddlyWiki''. Juste au cas où\n# Installez le plugin en le glissant déposant depuis ici sur votre wiki\n# Enregistrez votre TiddlyWiki et rafraichissez la page pour mettre en route le plugin\n# Allez dans [[$:/ControlPanel]] > onglet Plugins et dépliez le plugin Google Analytics\n# Allez dans l'onglet //settings// et mettez à jour les paramètres\n# Sauvegardez votre TiddlyWiki\n\n!! Chargez la nouvelle version de votre TiddlyWiki\n\n# Envoyez la nouvelle version de votre TiddlyWiki sur TiddlySpot, GitHub, GitLab ou tout autre hébergeur\n# Retournez à votre page Google Analytics page pour vérifier que votre site est bien suivi.\n"
},
"$:/plugins/sycom/g-analytics/icon": {
"title": "$:/plugins/sycom/g-analytics/icon",
"tags": "$:/tags/Image",
"text": "<svg class=\"feather tc-image-feather-icons tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n<g>\n<path d=\"M65 5L13 35v61l52 30 53-30V35L65 5zm-.8 27c28.2 0 44.3 32.2 44.3 32.2S92.4 96.4 64.2 96.4c-28.2 0-44.3-32.2-44.3-32.2S36 32 64.2 32z\"/>\n<path d=\"M64.2 46.5a17.6 17.6 0 0 0-17.7 17.7 17.6 17.6 0 0 0 17.7 17.6 17.6 17.6 0 0 0 17.6-17.6 17.6 17.6 0 0 0-17.6-17.7zm.7 5.2a24.6 24.6 0 0 1 9.2 1.8v5a19.7 19.7 0 0 0-4.2-1.7 16 16 0 0 0-4.2-.5c-2.6 0-4.6.7-6 2-1.5 1.4-2.2 3.4-2.2 6s.7 4.5 2 6c1.4 1.3 3.4 2 5.9 2h1.9a7.8 7.8 0 0 0 1.5-.5v-4.7h-4V63h10.3v11.7a24.2 24.2 0 0 1-5.1 1.7c-1.8.4-3.6.6-5.5.6-4.2 0-7.6-1.2-10-3.4a11.8 11.8 0 0 1-3.8-9.2c0-3.9 1.3-7 3.8-9.2A15 15 0 0 1 65 51.7z\"/>\n</g>\n</svg>\n"
},
"$:/core/macros/i18n": {
"author": "@sycom",
"created": "20191009144004451",
"modified": "20191011145435763",
"tags": "$:/tags/Macro",
"title": "$:/core/macros/i18n",
"type": "application/javascript",
"version": "1.0.0-pre",
"text": "\\define i18nOriginal(title domain orig_lang lang mode)\n<$list filter=\"[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\">\n<$transclude mode=<<__mode__>> />\n</$list>\n<$list filter=\"[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__orig_lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\">\n\n<div class=\"tc-message-box\">\n//<<__orig_lang__>>// original is missing, please create it at <$link to=<<currentTiddler>>><$text text=<<currentTiddler>> /></$link></div>\n</$list>\n\\end\n\n\\define i18nTranslation(title domain orig_lang lang mode)\n<$list filter=\"[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[tiddler]] [<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\">\n<$transclude mode=<<__mode__>> />\n</$list>\n<$list filter=\"[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[missing]]-[<__title__>addprefix[/]addprefix<__lang__>addprefix[/i18n/]addprefix<__domain__>is[shadow]]\">\n<$set name=\"target\" value=<<currentTiddler>>>\n<$list filter=\"[<__lang__>search<__orig_lang__>]\">\n<$macrocall $name=\"i18nOriginal\" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>>/>\n</$list>\n<$list filter=\"[<__lang__>!search<__orig_lang__>]\">\n<div class=\"tc-message-box\">//<<__lang__>>// translation is missing, you may create it at <$link to=<<target>>><$text text=<<target>> /></$link></div>\n<div lang=<<__orig_lang__>>>\n<$macrocall $name=\"i18nOriginal\" title=<<__title__>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<__lang__>> mode=<<__mode__>> />\n</div>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define i18n(title domain:\"$:\" orig_lang:\"en-GB\" mode:\"block\")\n<$set name=\"title\" value=<<__title__>> emptyValue=<<currentTiddler>>>\n<$set name=\"lg-LG\" tiddler={{$:/language}} field=\"name\">\n<$macrocall $name=\"i18nTranslation\" title=<<title>> domain=<<__domain__>> orig_lang=<<__orig_lang__>> lang=<<lg-LG>> mode=<<__mode__>>/>\n</$set>\n</$set>\n\\end\n",
"module-type": "macro"
},
"$:/plugins/sycom/g-analytics/notification": {
"title": "$:/plugins/sycom/g-analytics/notification",
"tags": "$:/tags/PageTemplate",
"text": "<$reveal type=\"nomatch\" state=\"$:/temp/HideAnalyticsWarning\" text=\"yes\">\n <div class=\"tc-plugin-reload-warning\">\n <$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/plugins/sycom/g-analytics/disclaimer_notification}} <$button set=\"$:/temp/HideAnalyticsWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n </$set>\n </div>\n</$reveal>\n"
},
"$:/plugins/sycom/g-analytics/i18n/en-GB/readme": {
"title": "$:/plugins/sycom/g-analytics/i18n/en-GB/readme",
"text": "This [G-Analytics plugin](#$:/plugins/sycom/g-analytics) is an alternative version for the official plugin you can find in TiddlyWiki library.\n\nIt's compliant with [Do Not Track][dnt] and also with [GDPR][rgpd]. It enables also individual tiddlers tracking.\n\nHave a look at [demo page on the web][plugindemo] or at integrated documentation to see how it works.\n\n## Sources / licenses\n* based upon [official google analytics plugin][official] of TiddlyWiki which implements [official Google code][googlecode]\n* [this plugin][source] is released under similar [BSD 3-Clause license][license] as TiddlyWiki.\n\n[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins\n[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics\n[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs\n[dnt]: http://donottrack.us/\n[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics\n[rgpd]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\n[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md\n",
"type": "text/x-markdown",
"created": "20151119173416000",
"modified": "20190332172200000",
"caption": "Readme"
},
"$:/plugins/sycom/g-analytics/readme": {
"title": "$:/plugins/sycom/g-analytics/readme",
"caption": "Readme",
"text": "<<i18n readme $:/plugins/sycom/g-analytics>>\n"
},
"$:/plugins/sycom/g-analytics/settings": {
"title": "$:/plugins/sycom/g-analytics/settings",
"tags": "$:/tags/Macro",
"text": "\\define slideCheck(tid field:'text' checked unchecked default tooltip)\n<$checkbox class=\"switch\"\n tiddler=\"$tid$\"\n field=\"$field$\"\n checked=\"$checked$\"\n unchecked=\"$unchecked$\"\n default=\"$default$\">\n <div title=\"$tooltip$\" class=\"slider round\"></div>\n <span class=\"switchtext\"></span>\n</$checkbox>\n\\end\n\n<<i18n settings $:/plugins/sycom/g-analytics>>\n"
},
"$:/plugins/sycom/g-analytics/Stylesheet": {
"title": "$:/plugins/sycom/g-analytics/Stylesheet",
"created": "20190419133629300",
"modified": "20190423183600000",
"tags": "$:/tags/Stylesheet",
"type": "text/vnd.tiddlywiki",
"text": "/* inspired from https://codepen.io/AllThingsSmitty/pen/MmxxOz */\n.switch {\n margin:0;\n display: inline-block;\n height: 1.5em;\n position: relative;\n width:2.6em;\n vertical-align:bottom;\n}.switch input[type=checkbox] {\n display:none;\n}.slider {\n background-color: #888888;\n bottom: 0;\n cursor: pointer;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n transition: .4s;\n}.slider:before {\n background-color: #fff;\n bottom: 4px;\n content: \"\";\n height: 1em;\n left: 4px;\n position: absolute;\n transition: .4s;\n width: 1em;\n}input:checked + span .slider {\n background-color: #5778d8;\n}input:checked + span .slider:before {\n transform: translateX(1em);\n}span .slider.round {\n border-radius: 1em;\n}span .slider.round:before {\n border-radius: 50%;\n}input + span .switchtext:before {\n display: inline-block;\n color: white;\n content: 'no';\n font-size: .85em;\n transform: translateX(1.6em) translatey(-.15em);\n}input:checked + span .switchtext:before {\n content: 'on';\n transform: translateX(.2em) translatey(-.15em);\n}.tc-plugin-reload-warning input + span .switchtext:before {\n transform: translateX(.75em) translatey(-.15em);\n}.tc-plugin-reload-warning input:checked + span .switchtext:before {\n transform: translateX(-.8em) translatey(-.15em);\n}\n"
},
"$:/plugins/sycom/g-analytics/usage": {
"title": "$:/plugins/sycom/g-analytics/usage",
"text": "<<i18n usage $:/plugins/sycom/g-analytics>>\n"
}
}
}
<<i18n disclaimer_common $:/plugins/sycom/g-analytics>>
<$reveal type="match" stateTitle="$:/temp/GoogleAnalyticsDNT" text="yes">
<<i18n disclaimer_dnt $:/plugins/sycom/g-analytics>>
</$reveal>
<$reveal type="nomatch" stateTitle="$:/temp/GoogleAnalyticsDNT" text="yes">
<$reveal type="nomatch" stateTitle="$:/temp/GoogleAnalyticsGDPRoption" text="no">
<<i18n disclaimer_gdpr $:/plugins/sycom/g-analytics>>
</$reveal>
<$reveal type="match" stateTitle="$:/temp/GoogleAnalyticsGDPRoption" text="no">
<<i18n disclaimer_nogdpr $:/plugins/sycom/g-analytics>>
<$reveal type="match" stateTitle="$:/plugins/sycom/g-analytics/settings/track_all" text="yes">
<<i18n disclaimer_internal $:/plugins/sycom/g-analytics>>
</$reveal>
<<i18n disclaimer_settings $:/plugins/sycom/g-analytics>>
</$reveal>
</$reveal>
<<i18n disclaimer_notification $:/plugins/sycom/g-analytics '' inline>>
/*\
title: $:/plugins/sycom/g-analytics/googleanalytics.js
type: application/javascript
module-type: startup
Runs Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`. You may also track internal navigation. DNT and GDPR compliant.
\*/
(function() {
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
// Export name and synchronous status
exports.name = "google-analytics";
exports.platforms = ["browser"];
exports.after = ["startup"];
exports.synchronous = true;
exports.startup = function() {
var GA_Launched = 0; // GA active detector
// initializing disclaimer
var GA_DISCLAIMER_TITLE = $tw.wiki.getTiddler("$:/plugins/sycom/g-analytics/settings/disclaimer_title").fields.caption || "This wiki uses Google analytics";
GA_DISCLAIMER_TITLE = GA_DISCLAIMER_TITLE.replace(/\n/g, "");
// load informations about tracking
$tw.wiki.setText(GA_DISCLAIMER_TITLE, "text", null, $tw.wiki.getTiddlerText("$:/plugins/sycom/g-analytics/disclaimer"));
// testing do not track before launching
var dnt = navigator.doNotTrack || 0;
if (dnt === "1") {
// tells the wiki that DNT is on for disclaimer adaptation
$tw.wiki.setText("$:/temp/GoogleAnalyticsDNT", "text", null, "yes");
} else {
// getting parameters - account, domain, tracking tiddlers and gdpr - opt-in
var GA_ACCOUNT = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsAccount") || "",
GA_DOMAIN = $tw.wiki.getTiddlerText("$:/GoogleAnalyticsDomain") || "",
GA_TRACKALL = $tw.wiki.getTiddlerText("$:/plugins/sycom/g-analytics/settings/track_all") || "no",
GA_GDPR = "yes";
GA_ACCOUNT = GA_ACCOUNT.replace(/\n/g, "");
GA_DOMAIN = GA_DOMAIN.replace(/\n/g, "");
// handling domain parameter : user defined > from window location > "auto" fallback
if (GA_DOMAIN == "") GA_DOMAIN = window.location.hostname;
if (GA_DOMAIN == undefined) GA_DOMAIN = "auto";
GA_TRACKALL = GA_TRACKALL.replace(/\n/g, "");
// create a "hook" on navigation to send data via tracker
$tw.wiki.addEventListener("change", function(changes) {
// if first launch, initiates GA
if (GA_Launched === 0) {
// using ga "isogram" function
(function(i, s, o, g, r, a, m) {i['GoogleAnalyticsObject'] = r;i[r] = i[r] || function() {(i[r].q = i[r].q || []).push(arguments)}, i[r].l = 1 * new Date();a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
GA_Launched = 1;
}
// get informations about GDPR opt-in (or not)
GA_GDPR = $tw.wiki.getTiddlerText("$:/temp/GoogleAnalyticsGDPRoption") || "yes";
GA_GDPR = GA_GDPR.replace(/\n/g, "");
if (GA_GDPR !== "yes") {
// GDPR has been cleared by opt-in
if (GA_TRACKALL === "yes") {
ga('create', GA_ACCOUNT, GA_DOMAIN);
// dealing with user settings !todo check if options is associated with wiki or $tw
var options = $tw.wiki.options || {},
storyTitle = options.storyTitle || "$:/StoryList",
historyTitle = options.historyTitle || "$:/HistoryList";
// getting storyList (displayed) historyList (last displayed) and last item
var storyList = $tw.wiki.getTiddler(storyTitle).fields.list;
var history = $tw.wiki.getTiddlerText(historyTitle) || "[{\"title\": \"" + storyList[0] + "\"}]";
var historyList = JSON.parse(history);
var GA_CURRENT = historyList[historyList.length - 1].title;
// if last item has not been closed, prepare data and send to tracker
if (storyList.includes(GA_CURRENT)) {
// if history modified is true send tracker (else user may just closed another tiddler)
// note that clicking on a tiddlerlink from already opened tiddler will count
if ((historyList.length ===1 || changes[historyTitle]) && GA_GDPR !== "yes") {
ga('set', 'page', window.location.pathname + '/' + GA_CURRENT);
ga('set', 'title', GA_CURRENT);
ga('send', 'pageview');
}
}
} else {
// get informations about GDPR opt-out
GA_GDPR = $tw.wiki.getTiddlerText("$:/temp/GoogleAnalyticsGDPRoption") || "yes";
GA_GDPR = GA_GDPR.replace(/\n/g, "");
// send data for whole page once only
ga('create', GA_ACCOUNT, GA_DOMAIN);
ga('send', 'pageview');
}
}
});
}
}
})();
As many website do, this wiki can use [[Google Analytics|https://analytics.google.com]] (via the [[G-Analytics plugin|$:/plugins/sycom/g-analytics]]) to help analyse how much visitors use this site and where they come from. Google uses “[[cookies|https://en.wikipedia.org/wiki/HTTP_cookie]]”, which are small text files placed on your computer, to collect standard internet log information and visitor behaviour information in an anonymous form.
However, as you are visiting, with your browser in private mode or have activated [[Do Not Track|http://donottrack.us/]], the plugin is fully deactivated. So no information can be collected nor sent anywhere.
However, as you did not "opt-in" to be part of our survey panel, the plugin is deactivated for now and no information will be collected nor sent anywhere. You may change your mind whenever you want by just checking this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>
Note also that as ''internal link tracker option is activated'' on this wiki, so the tracker will send the title of each tiddler you're visiting (still anonymously though).
As you did accept to be part of our panel, the plugin is now collecting data about your navigation.
This website would like to know more about your visit by enabling an analytics tracker (and //cookies//). If you allow it, please check here <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>. <$link to={{$:/plugins/sycom/g-analytics/settings/disclaimer_title!!caption}} >read more</$link>.
Your anonymity is safe here but you may wish to disable all tracking since data are sent to Google who may use them for marketing purpose. The plugin is compliant with [[Do Not Track|http://donottrack.us/]]. So,
* if you enable ''do not track'' option ''in your browser'' and reload the page the wiki will not collect nor send data any more. You may also use privacy extensions to control which site can track you. [[All About Do Not Track|https://allaboutdnt.com/]] website provide usefull informations about all this.
* some browsers enable do not track when using "private mode" ([[Firefox|http://firefox.com]] does). If you visit the wiki from those browsers in "private mode" no data will be sent either.
* you may also want to "opt-out". If so, uncheck this <<slideCheck $:/temp/GoogleAnalyticsGDPRoption '' 'no' 'yes' 'yes' 'tracking?'>>
This [G-Analytics plugin](#$:/plugins/sycom/g-analytics) is an alternative version for the official plugin you can find in TiddlyWiki library.
It's compliant with [Do Not Track][dnt] and also with [GDPR][rgpd]. It enables also individual tiddlers tracking.
Have a look at [demo page on the web][plugindemo] or at integrated documentation to see how it works.
## Sources / licenses
* based upon [official google analytics plugin][official] of TiddlyWiki which implements [official Google code][googlecode]
* [this plugin][source] is released under similar [BSD 3-Clause license][license] as TiddlyWiki.
[plugindemo]: https://sycom.gitlab.io/TiddlyWiki-Plugins
[official]: https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics
[googlecode]: https://developers.google.com/analytics/devguides/collection/analyticsjs
[dnt]: http://donottrack.us/
[source]: https://framagit.org/sycom/TiddlyWiki-Plugins/plugins/sycom/g-analytics
[rgpd]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation
[license]: https://framagit.org/sycom/TiddlyWiki-Plugins/LICENSE.md
You have two value and one option parameters to set, ''only first is mandatory''. You may (should?) also customize privacy disclaimers to fit your wiki language or local laws. Save and reload after changing.
!!Parameters
''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'' (mandatory) : your^^1^^ code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler="$:/GoogleAnalyticsAccount" default="" tag="input"/>
''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'' (optional) : the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler="$:/GoogleAnalyticsDomain" default="" tag="input"/>
<<slideCheck $:/plugins/sycom/g-analytics/settings/track_all '' 'yes' 'no' 'no' 'track all tiddlers'>> If you want the tracker to track also internal links, check this (will set [[Google Analytics Track All|$:/plugins/sycom/g-analytics/settings/track_all]] to "yes")
^^1^^ //if not, you may send data to other Google Analytics user.//
!! Privacy information customizing
You may personalize or translate messages displayed by the plugin by editing those tiddlers (see different cases below). Please note that future updates of plugin may revert your edits.
* [[Notification message|$:/plugins/sycom/g-analytics/disclaimer_notification]]
* ''Privacy disclaimer''
*# Title : <$edit-text tiddler="$:/plugins/sycom/g-analytics/settings/disclaimer_title" field="caption" tag="input"/>
!! Create a Google Analytics account
If you don't already have an account:
# Go to the Google Analytics website: http://www.google.com/analytics/
# Click the ''Access Google Analytics'' button and follow instructions to set up your account
# Enter the URL where the wiki is hosted
# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`
!! Install the plugin on your local copy of the TiddlyWiki
# ''Backup your TiddlyWiki''. Just in case
# Install the plugin via the plugin manager in control panel
# Save the TiddlyWiki and refresh the page to load the plugin
# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin
# Go to the //settings// tab and edit the parameters
# Save the TiddlyWiki
!! Upload the new version of your TiddlyWiki
# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host
# Return to your Google Analytics page to check that your site is being tracked
<svg class="feather tc-image-feather-icons tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt">
<g>
<path d="M65 5L13 35v61l52 30 53-30V35L65 5zm-.8 27c28.2 0 44.3 32.2 44.3 32.2S92.4 96.4 64.2 96.4c-28.2 0-44.3-32.2-44.3-32.2S36 32 64.2 32z"/>
<path d="M64.2 46.5a17.6 17.6 0 0 0-17.7 17.7 17.6 17.6 0 0 0 17.7 17.6 17.6 17.6 0 0 0 17.6-17.6 17.6 17.6 0 0 0-17.6-17.7zm.7 5.2a24.6 24.6 0 0 1 9.2 1.8v5a19.7 19.7 0 0 0-4.2-1.7 16 16 0 0 0-4.2-.5c-2.6 0-4.6.7-6 2-1.5 1.4-2.2 3.4-2.2 6s.7 4.5 2 6c1.4 1.3 3.4 2 5.9 2h1.9a7.8 7.8 0 0 0 1.5-.5v-4.7h-4V63h10.3v11.7a24.2 24.2 0 0 1-5.1 1.7c-1.8.4-3.6.6-5.5.6-4.2 0-7.6-1.2-10-3.4a11.8 11.8 0 0 1-3.8-9.2c0-3.9 1.3-7 3.8-9.2A15 15 0 0 1 65 51.7z"/>
</g>
</svg>
<$reveal type="nomatch" state="$:/temp/HideAnalyticsWarning" text="yes">
<div class="tc-plugin-reload-warning">
<$set name="tv-config-toolbar-class" value="">
{{$:/plugins/sycom/g-analytics/disclaimer_notification}} <$button set="$:/temp/HideAnalyticsWarning" setTo="yes" class="tc-btn-invisible">{{$:/core/images/close-button}}</$button>
</$set>
</div>
</$reveal>
<<i18n readme $:/plugins/sycom/g-analytics>>
\define slideCheck(tid field:'text' checked unchecked default tooltip)
<$checkbox class="switch"
tiddler="$tid$"
field="$field$"
checked="$checked$"
unchecked="$unchecked$"
default="$default$">
<div title="$tooltip$" class="slider round"></div>
<span class="switchtext"></span>
</$checkbox>
\end
<<i18n settings $:/plugins/sycom/g-analytics>>
This tiddler caption field contains the title for your disclaimer tiddler
/* inspired from https://codepen.io/AllThingsSmitty/pen/MmxxOz */
.switch {
margin:0;
display: inline-block;
height: 1.5em;
position: relative;
width:2.6em;
vertical-align:bottom;
}.switch input[type=checkbox] {
display:none;
}.slider {
background-color: #888888;
bottom: 0;
cursor: pointer;
left: 0;
position: absolute;
right: 0;
top: 0;
transition: .4s;
}.slider:before {
background-color: #fff;
bottom: 4px;
content: "";
height: 1em;
left: 4px;
position: absolute;
transition: .4s;
width: 1em;
}input:checked + span .slider {
background-color: #5778d8;
}input:checked + span .slider:before {
transform: translateX(1em);
}span .slider.round {
border-radius: 1em;
}span .slider.round:before {
border-radius: 50%;
}input + span .switchtext:before {
display: inline-block;
color: white;
content: 'no';
font-size: .85em;
transform: translateX(1.6em) translatey(-.15em);
}input:checked + span .switchtext:before {
content: 'on';
transform: translateX(.2em) translatey(-.15em);
}.tc-plugin-reload-warning input + span .switchtext:before {
transform: translateX(.75em) translatey(-.15em);
}.tc-plugin-reload-warning input:checked + span .switchtext:before {
transform: translateX(-.8em) translatey(-.15em);
}
<<i18n usage $:/plugins/sycom/g-analytics>>
/*\
title: $:/plugins/telmiger/lib/rpn.js
type: application/javascript
module-type: macro
Macro to execute simple calculations in reverse Polish notation
Documentation see https://tid.li/tw5/plugins.html
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Information about this macro
*/
exports.name = "rpn";
exports.params = [
{name: "a"},
{name: "b"},
{name: "operation", default: "+"},
{name: "decimals", default: ""},
{name: "precision", default: ""}
];
/*
Run the macro
*/
exports.run = function(a,b,operation,decimals,precision) {
// wikify operand a
var aParser = $tw.wiki.parseText("text/vnd.tiddlywiki",a,{
parseAsInline: true
});
var aWidgetNode = $tw.wiki.makeWidget(aParser,{
document: $tw.fakeDocument
});
var aContainer = $tw.fakeDocument.createElement("div");
aWidgetNode.render(aContainer,null);
var aw = aContainer.textContent;
// wikify operand b
var bParser = $tw.wiki.parseText("text/vnd.tiddlywiki",b,{
parseAsInline: true
});
var bWidgetNode = $tw.wiki.makeWidget(bParser,{
document: $tw.fakeDocument
});
var bContainer = $tw.fakeDocument.createElement("div");
bWidgetNode.render(bContainer,null);
var bw = bContainer.textContent;
// calculate
var result = "NaN";
var af = (aw == "pi" ? Math.PI : parseFloat(aw));
var bf = (bw == "pi" ? Math.PI : parseFloat(bw));
var di = parseInt(decimals);
switch(operation) {
case "-":
result = af - bf;
break;
case "*":
result = af * bf;
break;
case "/":
result = af / bf;
break;
case "&":
result = a + b;
break;
default:
result = af + bf;
}
if(precision == "p") {
switch(decimals) {
case "":
result = "invalid decimals";
break;
default:
var rInteger = result.toString().split('.')[0].length;
var p = rInteger + di;
if(p > 0 && p < 101) {
result = result.toPrecision(p);
}
else {
result = "invalid decimals";
}
}
}
else {
if(decimals != "") {
result = Math.round(result * Math.pow(10, di)) / Math.pow(10, di);
}
}
return result.toString();
};
})();
{
"tiddlers": {
"$:/core/macros/toc": {
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$set>\n\\end\n\n\\define toc-body(rootTag,tag,sort:\"\",itemClassFilter)\n<ol class=\"tc-toc\">\n<$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\"\"\">\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n<<toc-caption>>\n</$list>\n<$list filter=\"\"\"[all[current]] -[[$rootTag$]]\"\"\">\n<$macrocall $name=\"toc-body\" rootTag=\"\"\"$rootTag$\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$list>\n</li>\n</$set>\n</$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter)\n<<toc-body rootTag:\"\"\"$tag$\"\"\" tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"itemClassFilter\"\"\">>\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$link>\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible toc-arrow-right\" actions=<<toc-open>>>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible toc-arrow-down\" actions=<<toc-close>>>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<<toc-action>> >\n<<toc-caption>>\n</$button>\n</$link>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-expandable-empty-message()\n<<toc-linked-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\">>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\">\n<ol class=\"tc-toc toc-expandable\">\n<$list filter=\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\">\n<$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>>>\n<<toc-unlinked-expandable-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"itemClassFilter\"\"\">>\n</$list>\n</$list>\n</ol>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$link>\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible toc-arrow-right\" actions=<<toc-open>>>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible toc-arrow-down\" actions=<<toc-close>>>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</$list>\n<$button class=\"tc-btn-invisible tc-tiddlylink\" actions=<<toc-action>> >\n<<toc-caption>>\n</$button>\n</$link>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc/$tag$-$(currentTiddler)$\"\"\">>>\n<$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" value=\"toc-item-selected\" emptyValue=\"toc-item\">\n<li class=<<toc-item-class>>>\n<$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n<$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<<toc-caption>>\n</$button>\n</$reveal>\n</$list>\n<$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n<$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\"/>\n</$reveal>\n</li>\n</$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<<toc-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\">>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\">\n<ol class=\"tc-toc toc-selective-expandable\">\n<$list filter=\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$]\">\n<$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>>>\n<<toc-unlinked-selective-expandable-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n</$list>\n</$list>\n</ol>\n</$vars>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n<div class=\"tc-tabbed-table-of-contents\">\n<$linkcatcher to=\"$selectedTiddler$\">\n<div class=\"tc-table-of-contents\">\n<$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n</div>\n</$linkcatcher>\n<div class=\"tc-tabbed-table-of-contents-content\">\n<$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n<$transclude mode=\"block\" tiddler=\"$template$\">\n<h1><<toc-caption>></h1>\n<$transclude mode=\"block\">$missingText$</$transclude>\n</$transclude>\n</$reveal>\n<$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n$unselectedText$\n</$reveal>\n</div>\n</div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n<$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n",
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"modified": "20161215143754896",
"created": "20161214132958629"
},
"$:/plugins/tesseract/sidebarPlus/readme": {
"created": "20150102163222184",
"modified": "20161215174902694",
"title": "$:/plugins/tesseract/sidebarPlus/readme",
"text": "A plugin to adapt sidebar to smaller screens and to invoke action widgets using the toc-links.\n\nSyntax:\n\n```\n\\define toc-action()\n<$action-setfield $tiddler=\"$:/state/toc-selective-expandable\" text=<<currentTiddler>>/>\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n\\end\n\n<div class=\"tc-table-of-contents\">\n<<toc-selective-expandable 'TableOfContents'>>\n</div>\n```\n\n\n```\n\\define toc-open()\n<$action-setfield $tiddler=\"Example Stylesheet\" sidebarbg=\"#FECDAD\"/>\n\\end\n\\define toc-close()\n<$action-setfield $tiddler=\"Example Stylesheet\" sidebarbg=\"transparent\"/>\n\\end\n\n\n<div class=\"tc-table-of-contents\">\n<<toc-selective-expandable 'TableOfContents'>>\n</div>\n\n```\n\n"
},
"$:/plugins/tesseract/sidebarPlus/Stylesheet": {
"text": ".tc-table-of-contents li button {\n\tfont-weight: bold;\n}\n.tc-table-of-contents li li button {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li button {\n\tfont-weight: bold;\n}\nbutton.tc-tiddlylink, a.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: normal;\n\tcolor: #5778d8;\n\t-webkit-user-select: inherit;\n}\n.tc-sidebar-lists button.tc-tiddlylink {\n\tcolor: #999999 !important;\n}\n.tc-table-of-contents button {\n\tcolor: #5778d8 !important;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n.tc-sidebar-scrollable {\n\tbackground: #F6F6F6;\n\tz-index: 1000;\n\twidth: 100%;\n\theight: 100%;\n\tleft: 10%;\n\tposition: fixed;\n\ttop: 0px;\n\tpadding: 42px 0 28px 23px;\n\tborder-left: 1px solid #e1e1e1;\n}\n.lowopacitybg {\nbackground:#000;\nwidth:100%;\nheight:100%;\nposition:fixed;\ntop:0;\nleft:0;\nopacity:0.5;\nz-index:100;\n}\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n.tc-sidebar-scrollable {\n display:none;\n}\n</$reveal>\n.tc-story-river {\n\tpadding-top: 25px !important;\n}\n\n}",
"title": "$:/plugins/tesseract/sidebarPlus/Stylesheet",
"tags": "$:/tags/Stylesheet",
"modified": "20161216102827661",
"created": "20161215175623379"
},
"$:/plugins/tesseract/sidebarPlus/pagetemplate": {
"text": "<div class=\"lowopacitybg\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" class=\"tc-btn-invisible\" style=\"width:100%; height:100%;z-index:150;\">\n</$button>\n</div>",
"title": "$:/plugins/tesseract/sidebarPlus/pagetemplate",
"tags": "$:/tags/PageTemplate",
"modified": "20161216102620915",
"created": "20161215182057145"
}
}
}
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineMode("xml", function(config, parserConfig) {
var indentUnit = config.indentUnit;
var multilineTagIndentFactor = parserConfig.multilineTagIndentFactor || 1;
var multilineTagIndentPastTag = parserConfig.multilineTagIndentPastTag;
if (multilineTagIndentPastTag == null) multilineTagIndentPastTag = true;
var Kludges = parserConfig.htmlMode ? {
autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,
'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,
'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,
'track': true, 'wbr': true, 'menuitem': true},
implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,
'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,
'th': true, 'tr': true},
contextGrabbers: {
'dd': {'dd': true, 'dt': true},
'dt': {'dd': true, 'dt': true},
'li': {'li': true},
'option': {'option': true, 'optgroup': true},
'optgroup': {'optgroup': true},
'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,
'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,
'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,
'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,
'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},
'rp': {'rp': true, 'rt': true},
'rt': {'rp': true, 'rt': true},
'tbody': {'tbody': true, 'tfoot': true},
'td': {'td': true, 'th': true},
'tfoot': {'tbody': true},
'th': {'td': true, 'th': true},
'thead': {'tbody': true, 'tfoot': true},
'tr': {'tr': true}
},
doNotIndent: {"pre": true},
allowUnquoted: true,
allowMissing: true,
caseFold: true
} : {
autoSelfClosers: {},
implicitlyClosed: {},
contextGrabbers: {},
doNotIndent: {},
allowUnquoted: false,
allowMissing: false,
caseFold: false
};
var alignCDATA = parserConfig.alignCDATA;
// Return variables for tokenizers
var type, setStyle;
function inText(stream, state) {
function chain(parser) {
state.tokenize = parser;
return parser(stream, state);
}
var ch = stream.next();
if (ch == "<") {
if (stream.eat("!")) {
if (stream.eat("[")) {
if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>"));
else return null;
} else if (stream.match("--")) {
return chain(inBlock("comment", "-->"));
} else if (stream.match("DOCTYPE", true, true)) {
stream.eatWhile(/[\w\._\-]/);
return chain(doctype(1));
} else {
return null;
}
} else if (stream.eat("?")) {
stream.eatWhile(/[\w\._\-]/);
state.tokenize = inBlock("meta", "?>");
return "meta";
} else {
type = stream.eat("/") ? "closeTag" : "openTag";
state.tokenize = inTag;
return "tag bracket";
}
} else if (ch == "&") {
var ok;
if (stream.eat("#")) {
if (stream.eat("x")) {
ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
} else {
ok = stream.eatWhile(/[\d]/) && stream.eat(";");
}
} else {
ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";");
}
return ok ? "atom" : "error";
} else {
stream.eatWhile(/[^&<]/);
return null;
}
}
inText.isInText = true;
function inTag(stream, state) {
var ch = stream.next();
if (ch == ">" || (ch == "/" && stream.eat(">"))) {
state.tokenize = inText;
type = ch == ">" ? "endTag" : "selfcloseTag";
return "tag bracket";
} else if (ch == "=") {
type = "equals";
return null;
} else if (ch == "<") {
state.tokenize = inText;
state.state = baseState;
state.tagName = state.tagStart = null;
var next = state.tokenize(stream, state);
return next ? next + " tag error" : "tag error";
} else if (/[\'\"]/.test(ch)) {
state.tokenize = inAttribute(ch);
state.stringStartCol = stream.column();
return state.tokenize(stream, state);
} else {
stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);
return "word";
}
}
function inAttribute(quote) {
var closure = function(stream, state) {
while (!stream.eol()) {
if (stream.next() == quote) {
state.tokenize = inTag;
break;
}
}
return "string";
};
closure.isInAttribute = true;
return closure;
}
function inBlock(style, terminator) {
return function(stream, state) {
while (!stream.eol()) {
if (stream.match(terminator)) {
state.tokenize = inText;
break;
}
stream.next();
}
return style;
};
}
function doctype(depth) {
return function(stream, state) {
var ch;
while ((ch = stream.next()) != null) {
if (ch == "<") {
state.tokenize = doctype(depth + 1);
return state.tokenize(stream, state);
} else if (ch == ">") {
if (depth == 1) {
state.tokenize = inText;
break;
} else {
state.tokenize = doctype(depth - 1);
return state.tokenize(stream, state);
}
}
}
return "meta";
};
}
function Context(state, tagName, startOfLine) {
this.prev = state.context;
this.tagName = tagName;
this.indent = state.indented;
this.startOfLine = startOfLine;
if (Kludges.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))
this.noIndent = true;
}
function popContext(state) {
if (state.context) state.context = state.context.prev;
}
function maybePopContext(state, nextTagName) {
var parentTagName;
while (true) {
if (!state.context) {
return;
}
parentTagName = state.context.tagName;
if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) ||
!Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {
return;
}
popContext(state);
}
}
function baseState(type, stream, state) {
if (type == "openTag") {
state.tagStart = stream.column();
return tagNameState;
} else if (type == "closeTag") {
return closeTagNameState;
} else {
return baseState;
}
}
function tagNameState(type, stream, state) {
if (type == "word") {
state.tagName = stream.current();
setStyle = "tag";
return attrState;
} else {
setStyle = "error";
return tagNameState;
}
}
function closeTagNameState(type, stream, state) {
if (type == "word") {
var tagName = stream.current();
if (state.context && state.context.tagName != tagName &&
Kludges.implicitlyClosed.hasOwnProperty(state.context.tagName))
popContext(state);
if (state.context && state.context.tagName == tagName) {
setStyle = "tag";
return closeState;
} else {
setStyle = "tag error";
return closeStateErr;
}
} else {
setStyle = "error";
return closeStateErr;
}
}
function closeState(type, _stream, state) {
if (type != "endTag") {
setStyle = "error";
return closeState;
}
popContext(state);
return baseState;
}
function closeStateErr(type, stream, state) {
setStyle = "error";
return closeState(type, stream, state);
}
function attrState(type, _stream, state) {
if (type == "word") {
setStyle = "attribute";
return attrEqState;
} else if (type == "endTag" || type == "selfcloseTag") {
var tagName = state.tagName, tagStart = state.tagStart;
state.tagName = state.tagStart = null;
if (type == "selfcloseTag" ||
Kludges.autoSelfClosers.hasOwnProperty(tagName)) {
maybePopContext(state, tagName);
} else {
maybePopContext(state, tagName);
state.context = new Context(state, tagName, tagStart == state.indented);
}
return baseState;
}
setStyle = "error";
return attrState;
}
function attrEqState(type, stream, state) {
if (type == "equals") return attrValueState;
if (!Kludges.allowMissing) setStyle = "error";
return attrState(type, stream, state);
}
function attrValueState(type, stream, state) {
if (type == "string") return attrContinuedState;
if (type == "word" && Kludges.allowUnquoted) {setStyle = "string"; return attrState;}
setStyle = "error";
return attrState(type, stream, state);
}
function attrContinuedState(type, stream, state) {
if (type == "string") return attrContinuedState;
return attrState(type, stream, state);
}
return {
startState: function() {
return {tokenize: inText,
state: baseState,
indented: 0,
tagName: null, tagStart: null,
context: null};
},
token: function(stream, state) {
if (!state.tagName && stream.sol())
state.indented = stream.indentation();
if (stream.eatSpace()) return null;
type = null;
var style = state.tokenize(stream, state);
if ((style || type) && style != "comment") {
setStyle = null;
state.state = state.state(type || style, stream, state);
if (setStyle)
style = setStyle == "error" ? style + " error" : setStyle;
}
return style;
},
indent: function(state, textAfter, fullLine) {
var context = state.context;
// Indent multi-line strings (e.g. css).
if (state.tokenize.isInAttribute) {
if (state.tagStart == state.indented)
return state.stringStartCol + 1;
else
return state.indented + indentUnit;
}
if (context && context.noIndent) return CodeMirror.Pass;
if (state.tokenize != inTag && state.tokenize != inText)
return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
// Indent the starts of attribute names.
if (state.tagName) {
if (multilineTagIndentPastTag)
return state.tagStart + state.tagName.length + 2;
else
return state.tagStart + indentUnit * multilineTagIndentFactor;
}
if (alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
var tagAfter = textAfter && /^<(\/)?([\w_:\.-]*)/.exec(textAfter);
if (tagAfter && tagAfter[1]) { // Closing tag spotted
while (context) {
if (context.tagName == tagAfter[2]) {
context = context.prev;
break;
} else if (Kludges.implicitlyClosed.hasOwnProperty(context.tagName)) {
context = context.prev;
} else {
break;
}
}
} else if (tagAfter) { // Opening tag spotted
while (context) {
var grabbers = Kludges.contextGrabbers[context.tagName];
if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))
context = context.prev;
else
break;
}
}
while (context && !context.startOfLine)
context = context.prev;
if (context) return context.indent + indentUnit;
else return 0;
},
electricInput: /<\/[\s\w:]+>$/,
blockCommentStart: "<!--",
blockCommentEnd: "-->",
configuration: parserConfig.htmlMode ? "html" : "xml",
helperType: parserConfig.htmlMode ? "html" : "xml"
};
});
CodeMirror.defineMIME("text/xml", "xml");
CodeMirror.defineMIME("application/xml", "xml");
if (!CodeMirror.mimeModes.hasOwnProperty("text/html"))
CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true});
});
{
"tiddlers": {
"$:/plugins/tiddlywiki/consent-banner/banner": {
"title": "$:/plugins/tiddlywiki/consent-banner/banner",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n\n<$reveal state=\"$:/state/consent-banner/accepted\" type=\"match\" text=\"\" tag=\"div\">\n\n<div class=\"tc-consent-backdrop\">\n\n</div>\n\n<div class=\"tc-consent-banner tc-consent-banner-left\">\n\n<$transclude tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/greeting-message\" mode=\"block\"/>\n\n<div class=\"tc-consent-buttons\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ConsentBanner/Button]]\">\n\n<$transclude tiddler=<<currentTiddler>> mode=\"inline\"/>\n\n</$list>\n\n</div>\n\n</div>\n\n</$reveal>\n"
},
"$:/plugins/tiddlywiki/consent-banner/blocked-embed-message-wrapper": {
"title": "$:/plugins/tiddlywiki/consent-banner/blocked-embed-message-wrapper",
"text": "\\define styles()\nwidth:$(width)$;height:$(height)$;\n\\end\n\n<div class=\"tc-blocked-embedded-content\" style=<<styles>>>\n<div class=\"tc-blocked-embedded-content-inner\">\n<div class=\"tc-blocked-embedded-content-inner-inner\">\n<$transclude tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/blocked-embed-message\" mode=\"inline\"/>\n</div>\n</div>\n</div>\n"
},
"$:/plugins/tiddlywiki/consent-banner/buttons/accept": {
"title": "$:/plugins/tiddlywiki/consent-banner/buttons/accept",
"tags": "$:/tags/ConsentBanner/Button",
"text": "<$button message=\"tm-consent-accept\" class=\"tc-consent-button tc-consent-button-default tc-btn-invisible\" tooltip={{$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/hint}}>\n{{$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/caption}}\n</$button>\n"
},
"$:/plugins/tiddlywiki/consent-banner/buttons/decline": {
"title": "$:/plugins/tiddlywiki/consent-banner/buttons/decline",
"tags": "$:/tags/ConsentBanner/Button",
"text": "<$button message=\"tm-consent-decline\" class=\"tc-consent-button tc-btn-invisible\" tooltip={{$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/hint}}>\n{{$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/caption}}\n</$button>\n"
},
"$:/config/DefaultColourMappings/consent-banner-backdrop-background": {
"title": "$:/config/DefaultColourMappings/consent-banner-backdrop-background",
"text": "rgba(0,0,0,0.2)"
},
"$:/config/DefaultColourMappings/consent-banner-background": {
"title": "$:/config/DefaultColourMappings/consent-banner-background",
"text": "#009677"
},
"$:/config/DefaultColourMappings/consent-banner-button-background": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-background",
"text": "transparent"
},
"$:/config/DefaultColourMappings/consent-banner-button-border": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-border",
"text": "#fff"
},
"$:/config/DefaultColourMappings/consent-banner-button-default-background": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-default-background",
"text": "#fff"
},
"$:/config/DefaultColourMappings/consent-banner-button-default-foreground": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-default-foreground",
"text": "#009677"
},
"$:/config/DefaultColourMappings/consent-banner-button-foreground": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-foreground",
"text": "#fff"
},
"$:/config/DefaultColourMappings/consent-banner-button-hover-background": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-hover-background",
"text": "#fff"
},
"$:/config/DefaultColourMappings/consent-banner-button-hover-border": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-hover-border",
"text": "#fff"
},
"$:/config/DefaultColourMappings/consent-banner-button-hover-foreground": {
"title": "$:/config/DefaultColourMappings/consent-banner-button-hover-foreground",
"text": "#009577"
},
"$:/config/DefaultColourMappings/consent-banner-foreground": {
"title": "$:/config/DefaultColourMappings/consent-banner-foreground",
"text": "#fff"
},
"$:/config/DefaultColourMappings/consent-banner-hr-background": {
"title": "$:/config/DefaultColourMappings/consent-banner-hr-background",
"text": "rgba(255,255,255,.25)"
},
"$:/config/DefaultColourMappings/consent-banner-link-foreground": {
"title": "$:/config/DefaultColourMappings/consent-banner-link-foreground",
"text": "#fff"
},
"$:/config/plugins/tiddlywiki/consent-banner/block-embedded-content": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/block-embedded-content",
"text": "yes"
},
"$:/config/plugins/tiddlywiki/consent-banner/blocked-embed-message": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/blocked-embed-message",
"text": "Blocked embedded content from<br/><a href=<<url>> class=\"tc-tiddlylink-external\" target=\"_blank\" rel=\"noopener noreferrer\"><$text text=<<url>>/></a>\n\n<hr/>\n\n{{$:/plugins/tiddlywiki/consent-banner/buttons/accept}} cookies to unblock"
},
"$:/config/plugins/tiddlywiki/consent-banner/blocked-raw-message": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/blocked-raw-message",
"text": "<div class=\"tc-blocked-embedded-content\" style=\"width:100%;\">\n\n<div class=\"tc-blocked-embedded-content-inner\">\n\n<div class=\"tc-blocked-embedded-content-inner-inner\">\n\nBlocked raw content\n\n<hr/>\n\n{{$:/plugins/tiddlywiki/consent-banner/buttons/accept}} cookies to unblock\n\n</div>\n\n</div>\n\n</div>\n"
},
"$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/caption": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/caption",
"text": "Accept"
},
"$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/hint": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/hint",
"text": "Accept cookies"
},
"$:/config/plugins/tiddlywiki/consent-banner/buttons/clear/caption": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/buttons/clear/caption",
"text": "Clear"
},
"$:/config/plugins/tiddlywiki/consent-banner/buttons/clear/hint": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/buttons/clear/hint",
"text": "Clear cookies"
},
"$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/caption": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/caption",
"text": "Decline"
},
"$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/hint": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/hint",
"text": "Decline cookies"
},
"$:/config/cookie-consent-required": {
"title": "$:/config/cookie-consent-required",
"text": "yes"
},
"$:/config/plugins/tiddlywiki/consent-banner/greeting-message": {
"title": "$:/config/plugins/tiddlywiki/consent-banner/greeting-message",
"text": "! Our use of cookies\n\nWe use necessary cookies to make our site work. We’d also like to set optional analytics to help us improve it. We won’t set optional cookies unless you enable them. Using this tool will set a cookie on your device to remember your preferences.\n\n---\n\n!! Necessary cookies\n\nNecessary cookies enable core functionality such as security, network management, and accessibility. You may disable these by changing your browser settings, but this may affect how the website functions.\n\n---\n\n!! Analytics cookies\n\nWe’d like to set non-essential cookies, such as Google Analytics, to help us to improve our website by collecting and reporting information on how you use it. The cookies collect information in a way that does not directly identify anyone.\n\n---\n"
},
"$:/plugins/tiddlywiki/consent-banner/tv-block-embedded-content": {
"title": "$:/plugins/tiddlywiki/consent-banner/tv-block-embedded-content",
"tags": "$:/tags/Macro",
"text": "<$set name=\"tv-block-embedded-content\" value={{{ [{$:/config/cookie-consent-required}else[no]match[yes]then{$:/state/consent-banner/accepted}!match[yes]then[yes]] }}}/>\n"
},
"$:/plugins/tiddlywiki/consent-banner/config": {
"title": "$:/plugins/tiddlywiki/consent-banner/config",
"text": "! [[Greeting Message|$:/config/plugins/tiddlywiki/consent-banner/greeting-message]]\n\n<div style=\"\">\n\n<div style=\"display:inline-block;vertical-align:top;width:45%;\">\n\n<$edit-text tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/greeting-message\" tag=\"textarea\" class=\"tc-edit-texteditor\"/>\n\n</div>\n\n<div style=\"display:inline-block;vertical-align:top;width:45%;margin:0.5em;border:1px solid black;padding:0.5em;\" class=\"tc-consent-banner\">\n\n<$transclude tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/greeting-message\" mode=\"block\"/>\n\n</div>\n\n</div>\n\n! Buttons\n\n|[[Accept caption|$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/caption]] |<$edit-text tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/caption\" tag=\"input\"/> |\n|[[Accept hint|$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/hint]] |<$edit-text tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/hint\" tag=\"input\"/> |\n|[[Decline caption|$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/caption]] |<$edit-text tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/caption\" tag=\"input\"/> |\n|[[Decline hint|$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/hint]] |<$edit-text tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/hint\" tag=\"input\"/> |\n\n! [[Consent Accepted Status|$:/state/consent-banner/accepted]]\n\nCurrent status: {{$:/state/consent-banner/accepted}} (blank indicates that consent has not yet been granted or declined)\n\n<$button message=\"tm-consent-accept\" tooltip={{$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/hint}}>\n{{$:/config/plugins/tiddlywiki/consent-banner/buttons/accept/caption}}\n</$button>\n\n<$button message=\"tm-consent-decline\" tooltip={{$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/hint}}>\n{{$:/config/plugins/tiddlywiki/consent-banner/buttons/decline/caption}}\n</$button>\n\n<$button message=\"tm-consent-clear\" tooltip={{$:/config/plugins/tiddlywiki/consent-banner/buttons/clear/hint}}>\n{{$:/config/plugins/tiddlywiki/consent-banner/buttons/clear/caption}}\n</$button>\n\n! Embedded Content Blocking\n\n//Requires page reload//\n\n<$checkbox tiddler=\"$:/config/plugins/tiddlywiki/consent-banner/block-embedded-content\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> Block all embedded content such as <iframe>, <embed> and <object> unless consent has been granted</$checkbox>\n"
},
"$:/plugins/tiddlywiki/consent-banner/docs": {
"title": "$:/plugins/tiddlywiki/consent-banner/docs",
"text": "! Features\n\nIf the same wiki is opened in multiple tabs then once the warning has been accepted or declined in one tab then the other tabs will autonatically follow suit.\n\nConsent is automatically granted if the user logged in (ie the tiddler [[$:/status/IsLoggedIn]] is set to `yes`).\n\n! Consent Banner Palette Entries\n\nAdd these entries to your current colour palette to change the colours used by the consent banner:\n\n* ''consent-banner-backdrop-background'' - the colour of the backdrop behind the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-backdrop-background}})\n* ''consent-banner-background'' - the background colour of the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-background}})\n* ''consent-banner-button-background'' - the background colour of buttons within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-background}})\n* ''consent-banner-button-border'' - the border colour of buttons within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-border}})\n* ''consent-banner-button-default-background'' - the background colour for the default button within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-default-background}})\n* ''consent-banner-button-default-foreground'' - the foreground colour for the default button within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-default-foreground}})\n* ''consent-banner-button-foreground'' - the foreground colour of buttons within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-foreground}})\n* ''consent-banner-button-hover-background'' - the background colour of hovered buttons within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-hover-background}})\n* ''consent-banner-button-hover-border'' - the border colour of hovered buttons within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-hover-border}})\n* ''consent-banner-button-hover-foreground'' - the foreground colour of hovered buttons within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-button-hover-foreground}})\n* ''consent-banner-foreground'' - the foreground colour of the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-foreground}})\n* ''consent-banner-hr-background'' - the background colour of horizontal rules within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-hr-background}})\n* ''consent-banner-link-foreground'' - the foreground colour of tiddler links within the consent banner (defaults to {{$:/config/DefaultColourMappings/consent-banner-link-foreground}})\n\n! Embedded Content Blocking\n\nUnless disabled via the config tab, content embedded via <iframe>, <embed> or <object> is blocked until the user consents to accept cookies.\n\n!! Implementation Details\n\nEmbedded content is blocked if the variable `tv-block-embedded-content` is set to `yes`. It is set to the current consent status by a [[global macro|$:/plugins/tiddlywiki/consent-banner/tv-block-embedded-content]]:\n\n<$codeblock code={{$:/plugins/tiddlywiki/consent-banner/tv-block-embedded-content}}/>\n\n! ~YouTube macro\n\nA simple macro for embedding ~YouTube videos is provided to show how to adapt content according to whether consent has been granted. It works by checking the tiddler [[$:/state/consent-banner/accepted]] for the following values:\n\n* ''empty or missing'' - the user has yet to accept or decline to give their consent\n* `yes` - the user has granted consent\n* `no` - the user has declined consent\n\n! Customising banner buttons\n\nThe [[\"accept\"|$:/plugins/tiddlywiki/consent-banner/buttons/accept]] and [[\"decline\"|$:/plugins/tiddlywiki/consent-banner/buttons/decline]] buttons in the banner are individual tiddlers with the tag [[$:/tags/ConsentBanner/Button]], allowing them to be customised and extended.\n\nA common use case is to add a \"login\" button allowing users to login directly to bypass the banner. This could be implemented as a tiddler tagged [[$:/tags/ConsentBanner/Button]] with the following text:\n\n```\n<$button message=\"tm-login\" class=\"tc-consent-button tc-btn-invisible\">\nLogin\n</$button>\n```\n\n! Integration with other plugins\n\nThird party plugins that set cookies can configure themselves to defer setting cookies until the user grants consent. There are several parts to this mechanism:\n\n* The consent-banner plugin includes a shadow tiddler [[$:/config/cookie-consent-required]] with the text `yes`. The third-party plugin should inspect this tiddler at startup; if it is not set to \"yes\" then it can proceed to set tiddlers immediately\n* Otherwise, the third-party plugin should listen for changes to the tiddler [[$:/state/consent-banner/accepted]] and only start setting cookies when and if the value changes to \"yes\"\n\nThe [[Google Analytics plugin|https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/googleanalytics]] shows an example of how this mechanism can be implemented.\n"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/core/modules/widgets/raw.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nAn override of the raw widget that blocks raw content until the user has consented to accept cookies\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.blocked = this.getVariable(\"tv-block-embedded-content\",\"no\") === \"yes\";\n\tif(this.blocked) {\n\t\tthis.makeChildWidgets([{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/config/plugins/tiddlywiki/consent-banner/blocked-raw-message\"}\n\t\t\t}\n\t\t}]);\n\t\t// Render child widgets\n\t\tthis.renderChildren(parent,null);\n\t} else {\n\t\tvar div = this.document.createElement(\"div\");\n\t\tdiv.innerHTML=this.parseTreeNode.html;\n\t\tparent.insertBefore(div,nextSibling);\n\t\tthis.domNodes.push(div);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\tif(this.blocked) {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/tiddlywiki/consent-banner/readme": {
"title": "$:/plugins/tiddlywiki/consent-banner/readme",
"text": "The ''consent-banner'' plugin helps make websites that are compliant with \"cookie legislation\" such as the [[EU General Data Protection Regulation|https://gdpr.eu/cookies/]].\nIt presents a banner inviting the user to accept or reject cookies, keeping track of their consent in local storage so that the banner can be hidden on subsequent visits.\n\nBy default, content embedded with <iframe>, <embed> and <object> is blocked unless the user consents to accept cookies.\n\nConsent status is available via a configuration tiddler so that it is possible to construct content that behaves differently depending upon whether consent has been granted. As an example, a macro is provided for embedding ~YouTube videos that automatically uses the youtube-nocookie.com variant of video URLs unless the user has accepted cookies.\n\nPlease note that using this plugin does not guarantee compliance with any particular legislation. You will need to understand the technical issues specific to your situation, and if necessary seek legal advice.\n"
},
"$:/plugins/tiddlywiki/consent-banner/startup.js": {
"title": "$:/plugins/tiddlywiki/consent-banner/startup.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/consent-banner/startup.js\ntype: application/javascript\nmodule-type: startup\n\nStartup initialisation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"consent-banner\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"render\"];\nexports.synchronous = true;\n\nvar CHECK_CONSENT_INTERVAL = 1000, // Milliseconds between checking local storage\n\tIS_LOGGED_IN_TITLE = \"$:/status/IsLoggedIn\",\n\tCONSENT_KEY = \"COOKIE_CONSENT\", // Local storage keyname\n\tCONSENT_TITLE = \"$:/state/consent-banner/accepted\", // \"\": undeclared, \"yes\": accepted, \"no\": declined\n\tCONFIG_BLOCK_EMBEDDED_CONTENT_TITLE = \"$:/config/plugins/tiddlywiki/consent-banner/block-embedded-content\",\n\tEMBEDDED_MESSAGE_WRAPPER_TITLE = \"$:/plugins/tiddlywiki/consent-banner/blocked-embed-message-wrapper\";\n\nexports.startup = function() { \n\tvar consentState = \"\",\n\t\tsetConsentStatus = function(state) {\n\t\t\tif(consentState !== state) {\n\t\t\t\tconsentState = state;\n\t\t\t\t// Write to local storage\n\t\t\t\twindow.localStorage.setItem(CONSENT_KEY,state);\n\t\t\t\t// Write to a state tiddler\n\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler({\n\t\t\t\t\ttitle: CONSENT_TITLE,\n\t\t\t\t\ttext: state\n\t\t\t\t}));\n\t\t\t}\n\t\t},\n\t\tcalculateConsentStatus = function() {\n\t\t\t// Consent is implied for logged in users, otherwise we check local storage\n\t\t\treturn ($tw.wiki.getTiddlerText(IS_LOGGED_IN_TITLE) === \"yes\" && \"yes\") || window.localStorage.getItem(CONSENT_KEY) || \"\";\n\t\t},\n\t\tcheckConsentStatus = function() {\n\t\t\tsetConsentStatus(calculateConsentStatus());\n\t\t\tif(consentState === \"\") {\n\t\t\t\tpollConsentStatus();\n\t\t\t}\n\t\t},\n\t\tpollConsentStatus = function() {\n\t\t\tsetTimeout(checkConsentStatus,CHECK_CONSENT_INTERVAL);\n\t\t};\n\t// Set the current consent status\n\tcheckConsentStatus();\n\t// Listen for consent messages\n\t$tw.rootWidget.addEventListener(\"tm-consent-accept\",function(event) {\n\t\tsetConsentStatus(\"yes\");\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-consent-decline\",function(event) {\n\t\tsetConsentStatus(\"no\");\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-consent-clear\",function(event) {\n\t\tsetConsentStatus(\"\");\n\t});\n\t// Add our element rendering hook\n\tif($tw.wiki.getTiddlerText(CONFIG_BLOCK_EMBEDDED_CONTENT_TITLE,\"no\") === \"yes\") {\n\t\t$tw.hooks.addHook(\"th-rendering-element\",function(parseTreeNodes,widget) {\n\t\t\tif(parseTreeNodes) {\n\t\t\t\treturn parseTreeNodes;\n\t\t\t}\n\t\t\tif([\"iframe\",\"object\",\"embed\"].indexOf(widget.tag) !== -1 && widget.getVariable(\"tv-block-embedded-content\",\"no\") === \"yes\") {\n\t\t\t\tvar url = widget.getAttribute(\"src\"),\n\t\t\t\t\taddUnitsIfMissing = function(str) {\n\t\t\t\t\t\tstr = \"\" + str;\n\t\t\t\t\t\treturn str + ((\"\" + parseInt(str,10)) === str ? \"px\" : \"\");\n\t\t\t\t\t},\n\t\t\t\t\twidth = addUnitsIfMissing(widget.getAttribute(\"width\",\"\")),\n\t\t\t\t\theight = addUnitsIfMissing(widget.getAttribute(\"height\",\"\"));\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"vars\",\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\turl: {type: \"string\", value: url},\n\t\t\t\t\t\t\twidth: {type: \"string\", value: width},\n\t\t\t\t\t\t\theight: {type: \"string\", value: height}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"transclude\",\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\ttiddler: {type: \"string\", value: EMBEDDED_MESSAGE_WRAPPER_TITLE},\n\t\t\t\t\t\t\t\t\tmode: {type: \"string\", value: \"inline\"}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/tiddlywiki/consent-banner/styles": {
"title": "$:/plugins/tiddlywiki/consent-banner/styles",
"tags": "$:/tags/Stylesheet",
"text": ".tc-consent-backdrop {\n\tz-index: 1999;\n\tposition: fixed;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tbackground: <<colour consent-banner-backdrop-background>>;\n}\n\n.tc-consent-banner-left {\n\tz-index: 2000;\n\tposition: fixed;\n\tleft: 0;\n\ttop: 0;\n\tbottom: 0;\n\tmax-width: 500px;\n\toverflow-y: auto;\n}\n\n.tc-consent-banner {\n\tpadding: 1em;\n\tbackground: <<colour consent-banner-background>>;\n\tcolor: <<colour consent-banner-foreground>>;\n\tbox-shadow: 0 0 20px rgba(0,0,0,.2);\n}\n\n.tc-consent-banner a.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour consent-banner-link-foreground>>;\n\tbackground-color: inherit;\n}\n\n.tc-consent-banner a.tc-tiddlylink-external:visited {\n\tcolor: <<colour consent-banner-link-foreground>>;\n\tbackground-color: inherit;\n}\n\n.tc-consent-banner hr {\n\tclear: both;\n\tpadding: 0;\n\twidth: 100%;\n\toverflow: hidden;\n\ttext-align: left;\n\tborder: 0 none;\n\tmargin: 24px 0;\n\theight: 1px;\n\tmax-height: 1px;\n\tbackground: <<colour consent-banner-hr-background>>;\n}\n\n.tc-consent-buttons {\n\t\n}\n\n.tc-consent-banner .tc-consent-button {\n\tmargin-right: 1em;\n}\n\n.tc-consent-button {\n\tborder: 1px solid <<colour consent-banner-button-border>>;\n\tmargin-top: 1em;\n\tpadding: 0.75em 1.5em;\n\tcolor: <<colour consent-banner-button-foreground>>;\n\tbackground: <<colour consent-banner-button-background>>;\n\tfont-weight: bold;\n}\n\n.tc-consent-button:hover {\n\tcolor: <<colour consent-banner-button-hover-foreground>>;\n\tborder-color: <<colour consent-banner-button-hover-border>>;\n\tbackground: <<colour consent-banner-button-hover-background>>;\n\topacity: .6;\n}\n\n.tc-consent-button-default {\n\tcolor: <<colour consent-banner-button-default-foreground>>;\n\tbackground: <<colour consent-banner-button-default-background>>;\n}\n\n.tc-blocked-embedded-content {\n\tdisplay: inline-block;\n\toverflow: hidden;\n\tcolor: <<colour background>>;\n\tbackground: <<colour muted-foreground>>;\n\tborder: 1px solid <<colour foreground>>;\n\t<<box-shadow \"inset 0 0 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-blocked-embedded-content-inner {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n}\n\n.tc-blocked-embedded-content-inner-inner {\n\tdisplay: inline-block;\n\ttext-align: center;\n}\n\n.tc-blocked-embedded-content-inner-inner hr {\n background: <<colour foreground>>;\n height: 1px;\n width: 80%;\n border: none;\n}\n"
},
"$:/plugins/tiddlywiki/consent-banner/youtube": {
"title": "$:/plugins/tiddlywiki/consent-banner/youtube",
"tags": "$:/tags/Macro",
"text": "\\define embed-video-with-consent(code)\n<$set name=\"tv-block-embedded-content\" value=\"no\">\n<$reveal state=\"$:/state/consent-banner/accepted\" type=\"match\" text=\"yes\" tag=\"div\">\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/$code$\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>\n</$reveal>\n<$reveal state=\"$:/state/consent-banner/accepted\" type=\"nomatch\" text=\"yes\" tag=\"div\">\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube-nocookie.com/embed/$code$\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>\n</$reveal>\n</$set>\n\\end\n\n! Macro source\n\n<$codeblock code={{$:/plugins/tiddlywiki/consent-banner/youtube}}/>\n\n! Example\n\n<<embed-video-with-consent KtCUr83XgyE>>\n"
}
}
}
{
"tiddlers": {
"$:/config/Freelinks/Enable": {
"title": "$:/config/Freelinks/Enable",
"text": "yes"
},
"$:/plugins/tiddlywiki/freelinks/macros/view": {
"title": "$:/plugins/tiddlywiki/freelinks/macros/view",
"tags": "$:/tags/Macro/View",
"text": "<$set name=\"tv-freelinks\" value={{$:/config/Freelinks/Enable}}>\n\n<$set name=\"tv-freelinks-ignore-case\" value={{$:/config/Freelinks/IgnoreCase}}/>\n\n</$set>"
},
"$:/core/modules/widgets/plain-text.js": {
"title": "$:/core/modules/widgets/plain-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/plain-text.js\ntype: application/javascript\nmodule-type: widget\n\nA copy of the core text widget under a different name\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PlainTextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPlainTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPlainTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPlainTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPlainTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"plain-text\"] = PlainTextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/tiddlywiki/freelinks/readme": {
"title": "$:/plugins/tiddlywiki/freelinks/readme",
"text": "This plugin adds automatic generation of links to tiddler titles.\n\n''Note that automatic link generation can be very slow when there are a large number of tiddlers''.\n\nFreelinking is activated for runs of text that have the following variables set:\n\n* `tv-wikilinks` is NOT equal to `no`\n* `tv-freelinks` is set to `yes`\n\nFreelinks are case sensitive by default but can be configured to ignore case in the settings tab.\n\nWithin view templates, the variable `tv-freelinks` is automatically set to the content of $:/config/Freelinks/Enable, which can be set via the settings panel of this plugin.\n\n!! Notes\n\nTo change within which tiddlers freelinking occurs requires customising the shadow tiddler $:/plugins/tiddlywiki/freelinks/macros/view. This tiddler is tagged $:/tags/Macro/View which means that it will be included as a local macro in each view template. By default, its content is:\n\n```\n<$set name=\"tv-freelinks\" value={{$:/config/Freelinks/Enable}}/>\n```\n\nThat means that for each tiddler the variable tv-freelinks will be set to the tiddler $:/config/Freelinks/Enable, which is set to \"yes\" or \"no\" by the settings in control panel.\n\nInstead, we can use a filter expression to, say, only freelink within the tiddler with the title \"HelloThere\":\n\n```\n<$set name=\"tv-freelinks\" value={{{ [<currentTiddler>match[HelloThere]then[yes]else[no]] }}}/>\n```\n\nOr, we can make a filter that will only freelink within tiddlers with the tag \"MyTag\":\n\n```\n<$set name=\"tv-freelinks\" value={{{ [<currentTiddler>tag[MyTags]then[yes]else[no]] }}}/>\n```\n\nOr we can combine both approaches:\n\n```\n<$set name=\"tv-freelinks\" value={{{ [<currentTiddler>match[HelloThere]] ~[<currentTiddler>tag[MyTag]] +[then[yes]else[no]] }}}/>\n```\n"
},
"$:/plugins/tiddlywiki/freelinks/settings": {
"title": "$:/plugins/tiddlywiki/freelinks/settings",
"text": "<$checkbox tiddler=\"$:/config/Freelinks/Enable\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Freelinks/Enable\">Enable freelinking within tiddler view templates</$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Freelinks/IgnoreCase\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Freelinks/IgnoreCase\">Ignore case</$link> </$checkbox>\n"
},
"$:/plugins/tiddlywiki/freelinks/styles": {
"title": "$:/plugins/tiddlywiki/freelinks/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nbutton.tc-tiddlylink.tc-freelink, a.tc-tiddlylink.tc-freelink {\n\tbackground-color: #5777d91c;\n}\n"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/core/modules/widgets/text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nAn override of the core text widget that automatically linkifies the text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tLinkWidget = require(\"$:/core/modules/widgets/link.js\").link,\n\tButtonWidget = require(\"$:/core/modules/widgets/button.js\").button,\n\tElementWidget = require(\"$:/core/modules/widgets/element.js\").element;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\tvar self = this,\n\t\tignoreCase = self.getVariable(\"tv-freelinks-ignore-case\",{defaultValue:\"no\"}).trim() === \"yes\";\n\t// Get our parameters\n\tvar childParseTree = [{\n\t\t\ttype: \"plain-text\",\n\t\t\ttext: this.getAttribute(\"text\",this.parseTreeNode.text || \"\")\n\t\t}];\n\t// Only process links if not disabled and we're not within a button or link widget\n\tif(this.getVariable(\"tv-wikilinks\",{defaultValue:\"yes\"}).trim() !== \"no\" && this.getVariable(\"tv-freelinks\",{defaultValue:\"no\"}).trim() === \"yes\" && !this.isWithinButtonOrLink()) {\n\t\t// Get the information about the current tiddler titles, and construct a regexp\n\t\tthis.tiddlerTitleInfo = this.wiki.getGlobalCache(\"tiddler-title-info-\" + (ignoreCase ? \"insensitive\" : \"sensitive\"),function() {\n\t\t\tvar sortedTitles = self.wiki.allTitles().sort(function(a,b) {\n\t\t\t\t\tvar lenA = a.length,\n\t\t\t\t\t\tlenB = b.length;\n\t\t\t\t\t// First sort by length, so longer titles are first\n\t\t\t\t\tif(lenA !== lenB) {\n\t\t\t\t\t\tif(lenA < lenB) {\n\t\t\t\t\t\t\treturn +1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t// Then sort alphabetically within titles of the same length\n\t\t\t\t\t\tif(a < b) {\n\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t} else if(a > b) {\n\t\t\t\t\t\t\treturn +1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttitles = [],\n\t\t\t\treparts = [];\n\t\t\t$tw.utils.each(sortedTitles,function(title) {\n\t\t\t\tif(title.substring(0,3) !== \"$:/\") {\n\t\t\t\t\ttitles.push(title);\n\t\t\t\t\treparts.push(\"(\\\\b\" + $tw.utils.escapeRegExp(title) + \"\\\\b)\");\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\ttitles: titles,\n\t\t\t\tregexp: new RegExp(reparts.join(\"|\"),ignoreCase ? \"i\" : \"\")\n\t\t\t};\n\t\t});\n\t\t// Repeatedly linkify\n\t\tif(this.tiddlerTitleInfo.titles.length > 0) {\n\t\t\tvar index,text,match,matchEnd;\n\t\t\tdo {\n\t\t\t\tindex = childParseTree.length - 1;\n\t\t\t\ttext = childParseTree[index].text;\n\t\t\t\tmatch = this.tiddlerTitleInfo.regexp.exec(text);\n\t\t\t\tif(match) {\n\t\t\t\t\t// Make a text node for any text before the match\n\t\t\t\t\tif(match.index > 0) {\n\t\t\t\t\t\tchildParseTree[index].text = text.substring(0,match.index);\n\t\t\t\t\t\tindex += 1;\n\t\t\t\t\t}\n\t\t\t\t\t// Make a link node for the match\n\t\t\t\t\tchildParseTree[index] = {\n\t\t\t\t\t\ttype: \"link\",\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\tto: {type: \"string\", value: ignoreCase ? this.tiddlerTitleInfo.titles[match.indexOf(match[0],1) - 1] : match[0]},\n\t\t\t\t\t\t\t\"class\": {type: \"string\", value: \"tc-freelink\"}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: [{\n\t\t\t\t\t\t\ttype: \"plain-text\", text: match[0]\n\t\t\t\t\t\t}]\n\t\t\t\t\t};\n\t\t\t\t\tindex += 1;\n\t\t\t\t\t// Make a text node for any text after the match\n\t\t\t\t\tmatchEnd = match.index + match[0].length;\n\t\t\t\t\tif(matchEnd < text.length) {\n\t\t\t\t\t\tchildParseTree[index] = {\n\t\t\t\t\t\t\ttype: \"plain-text\",\n\t\t\t\t\t\t\ttext: text.substring(matchEnd)\n\t\t\t\t\t\t};\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} while(match && childParseTree[childParseTree.length - 1].type === \"plain-text\");\t\t\t\n\t\t}\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets(childParseTree);\n};\n\nTextNodeWidget.prototype.isWithinButtonOrLink = function() {\n\tvar withinButtonOrLink = false,\n\t\twidget = this.parentWidget;\n\twhile(!withinButtonOrLink && widget) {\n\t\twithinButtonOrLink = widget instanceof ButtonWidget || widget instanceof LinkWidget || ((widget instanceof ElementWidget) && widget.parseTreeNode.tag === \"a\");\n\t\twidget = widget.parentWidget;\n\t}\n\treturn withinButtonOrLink;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar self = this,\n\t\tchangedAttributes = this.computeAttributes(),\n\t\ttitlesHaveChanged = false;\n\t$tw.utils.each(changedTiddlers,function(change,title) {\n\t\tif(change.isDeleted) {\n\t\t\ttitlesHaveChanged = true;\n\t\t} else {\n\t\t\ttitlesHaveChanged = titlesHaveChanged || !self.tiddlerTitleInfo || self.tiddlerTitleInfo.titles.indexOf(title) === -1;\n\t\t}\n\t});\n\tif(changedAttributes.text || titlesHaveChanged) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/katex/katex.min.css": {
"text": ".katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:\"0.10.2\"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:\"\"}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left}\n",
"type": "text/plain",
"title": "$:/plugins/tiddlywiki/katex/katex.min.css"
},
"$:/plugins/tiddlywiki/katex/katex.min.js": {
"text": "(function(document) {\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.katex=e():t.katex=e()}(\"undefined\"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,\"a\",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p=\"\",r(r.s=1)}([function(t,e,r){},function(t,e,r){\"use strict\";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),o=function t(e,r){this.position=void 0;var a,n=\"KaTeX parse error: \"+e,o=r&&r.loc;if(o&&o.start<=o.end){var i=o.lexer.input;a=o.start;var s=o.end;a===i.length?n+=\" at end of input: \":n+=\" at position \"+(a+1)+\": \";var h=i.slice(a,s).replace(/[^]/g,\"$&\\u0332\");n+=(a>15?\"\\u2026\"+i.slice(a-15,a):i.slice(0,a))+h+(s+15<i.length?i.slice(s,s+15)+\"\\u2026\":i.slice(s))}var l=new Error(n);return l.name=\"ParseError\",l.__proto__=t.prototype,l.position=a,l};o.prototype.__proto__=Error.prototype;var i=o,s=/([A-Z])/g,h={\"&\":\"&\",\">\":\">\",\"<\":\"<\",'\"':\""\",\"'\":\"'\"},l=/[&><\"']/g;var m=function t(e){return\"ordgroup\"===e.type?1===e.body.length?t(e.body[0]):e:\"color\"===e.type?1===e.body.length?t(e.body[0]):e:\"font\"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,\"-$1\").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return\"mathord\"===e.type||\"textord\"===e.type||\"atom\"===e.type}},u=function(){function t(t){this.displayMode=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.allowedProtocols=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,\"#cc0000\"),this.macros=t.macros||{},this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,\"warn\"),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3)),this.allowedProtocols=c.deflt(t.allowedProtocols,[\"http\",\"https\",\"mailto\",\"_relative\"])}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if(\"function\"==typeof a&&(a=a(t,e,r)),a&&\"ignore\"!==a){if(!0===a||\"error\"===a)throw new i(\"LaTeX-incompatible input and strict mode is set to 'error': \"+e+\" [\"+t+\"]\",r);\"warn\"===a?\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \"+e+\" [\"+t+\"]\"):\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to unrecognized '\"+a+\"': \"+e+\" [\"+t+\"]\")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if(\"function\"==typeof a)try{a=a(t,e,r)}catch(t){a=\"error\"}return!(!a||\"ignore\"===a)&&(!0===a||\"error\"===a||(\"warn\"===a?(\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \"+e+\" [\"+t+\"]\"),!1):(\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to unrecognized '\"+a+\"': \"+e+\" [\"+t+\"]\"),!1)))},t}(),d=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return p[f[this.id]]},e.sub=function(){return p[g[this.id]]},e.fracNum=function(){return p[x[this.id]]},e.fracDen=function(){return p[v[this.id]]},e.cramp=function(){return p[b[this.id]]},e.text=function(){return p[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),p=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},k=[{name:\"latin\",blocks:[[256,591],[768,879]]},{name:\"cyrillic\",blocks:[[1024,1279]]},{name:\"brahmic\",blocks:[[2304,4255]]},{name:\"georgian\",blocks:[[4256,4351]]},{name:\"cjk\",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:\"hangul\",blocks:[[44032,55215]]}];var S=[];function z(t){for(var e=0;e<S.length;e+=2)if(t>=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var M={path:{sqrtMain:\"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\\ns-65,47,-65,47z M834 80H400000v40H845z\",sqrtSize1:\"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z\",sqrtSize2:\"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\\nM1001 80H400000v40H1013z\",sqrtSize3:\"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z\",sqrtSize4:\"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\\nM1001 80H400000v40H1017z\",doubleleftarrow:\"M262 157\\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\\nm8 0v40h399730v-40zm0 194v40h399730v-40z\",doublerightarrow:\"M399738 392l\\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z\",leftarrow:\"M400000 241H110l3-3c68.7-52.7 113.7-120\\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\\n l-3-3h399890zM100 241v40h399900v-40z\",leftbrace:\"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z\",leftbraceunder:\"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z\",leftgroup:\"M400000 80\\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\\n 435 0h399565z\",leftgroupunder:\"M400000 262\\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\\n 435 219h399565z\",leftharpoon:\"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z\",leftharpoonplus:\"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\\nm0 0v40h400000v-40z\",leftharpoondown:\"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z\",leftharpoondownplus:\"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z\",lefthook:\"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\\n 71.5 23h399859zM103 281v-40h399897v40z\",leftlinesegment:\"M40 281 V428 H0 V94 H40 V241 H400000 v40z\\nM40 281 V428 H0 V94 H40 V241 H400000 v40z\",leftmapsto:\"M40 281 V448H0V74H40V241H400000v40z\\nM40 281 V448H0V74H40V241H400000v40z\",leftToFrom:\"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z\",longequal:\"M0 50 h400000 v40H0z m0 194h40000v40H0z\\nM0 50 h400000 v40H0z m0 194h40000v40H0z\",midbrace:\"M200428 334\\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z\",midbraceunder:\"M199572 214\\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z\",oiintSize1:\"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z\",oiintSize2:\"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\\nc0 110 84 276 504 276s502.4-166 502.4-276z\",oiiintSize1:\"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z\",oiiintSize2:\"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z\",rightarrow:\"M0 241v40h399891c-47.3 35.3-84 78-110 128\\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\\n 151.7 139 205zm0 0v40h399900v-40z\",rightbrace:\"M400000 542l\\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z\",rightbraceunder:\"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z\",rightgroup:\"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\\n 3-1 3-3v-38c-76-158-257-219-435-219H0z\",rightgroupunder:\"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z\",rightharpoon:\"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\\n 69.2 92 94.5zm0 0v40h399900v-40z\",rightharpoonplus:\"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z\",rightharpoondown:\"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z\",rightharpoondownplus:\"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\\nm0-194v40h400000v-40zm0 0v40h400000v-40z\",righthook:\"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z\",rightlinesegment:\"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z\",rightToFrom:\"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z\",twoheadleftarrow:\"M0 167c68 40\\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z\",twoheadrightarrow:\"M400000 167\\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z\",tilde1:\"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\\n-68.267.847-113-73.952-191-73.952z\",tilde2:\"M344 55.266c-142 0-300.638 81.316-311.5 86.418\\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z\",tilde3:\"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\\n -338 0-409-156.573-744-156.573z\",tilde4:\"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\\n -175.236-744-175.236z\",vec:\"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\\nc-16-25.333-24-45-24-59z\",widehat1:\"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z\",widehat2:\"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",widehat3:\"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",widehat4:\"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",widecheck1:\"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z\",widecheck2:\"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",widecheck3:\"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",widecheck4:\"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",baraboveleftarrow:\"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z\",rightarrowabovebar:\"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z\",baraboveshortleftharpoon:\"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z\",rightharpoonaboveshortbar:\"M0,241 l0,40c399126,0,399993,0,399993,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z\",shortbaraboveleftharpoon:\"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z\",shortrightharpoonabovebar:\"M53,241l0,40c398570,0,399437,0,399437,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z\"}},T=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e<this.children.length;e++)t.appendChild(this.children[e].toNode());return t},e.toMarkup=function(){for(var t=\"\",e=0;e<this.children.length;e++)t+=this.children[e].toMarkup();return t},e.toText=function(){var t=function(t){return t.toText()};return this.children.map(t).join(\"\")},t}(),A=function(t){return t.filter(function(t){return t}).join(\" \")},B=function(t,e,r){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},e){e.style.isTight()&&this.classes.push(\"mtight\");var a=e.getColor();a&&(this.style.color=a)}},q=function(t){var e=document.createElement(t);for(var r in e.className=A(this.classes),this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&e.setAttribute(a,this.attributes[a]);for(var n=0;n<this.children.length;n++)e.appendChild(this.children[n].toNode());return e},C=function(t){var e=\"<\"+t;this.classes.length&&(e+=' class=\"'+c.escape(A(this.classes))+'\"');var r=\"\";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+\":\"+this.style[a]+\";\");for(var n in r&&(e+=' style=\"'+c.escape(r)+'\"'),this.attributes)this.attributes.hasOwnProperty(n)&&(e+=\" \"+n+'=\"'+c.escape(this.attributes[n])+'\"');e+=\">\";for(var o=0;o<this.children.length;o++)e+=this.children[o].toMarkup();return e+=\"</\"+t+\">\"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return q.call(this,\"span\")},e.toMarkup=function(){return C.call(this,\"span\")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute(\"href\",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return q.call(this,\"a\")},e.toMarkup=function(){return C.call(this,\"a\")},t}(),O={\"\\xee\":\"\\u0131\\u0302\",\"\\xef\":\"\\u0131\\u0308\",\"\\xed\":\"\\u0131\\u0301\",\"\\xec\":\"\\u0131\\u0300\"},E=function(){function t(t,e,r,a,n,o,i,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=t,this.height=e||0,this.depth=r||0,this.italic=a||0,this.skew=n||0,this.width=o||0,this.classes=i||[],this.style=s||{},this.maxFontSize=0;var h=function(t){for(var e=0;e<k.length;e++)for(var r=k[e],a=0;a<r.blocks.length;a++){var n=r.blocks[a];if(t>=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+\"_fallback\"),/[\\xee\\xef\\xed\\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement(\"span\")).style.marginRight=this.italic+\"em\"),this.classes.length>0&&((e=e||document.createElement(\"span\")).className=A(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement(\"span\")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e=\"<span\";this.classes.length&&(t=!0,e+=' class=\"',e+=c.escape(A(this.classes)),e+='\"');var r=\"\";for(var a in this.italic>0&&(r+=\"margin-right:\"+this.italic+\"em;\"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+\":\"+this.style[a]+\";\");r&&(t=!0,e+=' style=\"'+c.escape(r)+'\"');var n=c.escape(this.text);return t?(e+=\">\",e+=n,e+=\"</span>\"):n},t}(),R=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t=\"<svg\";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=\" \"+e+\"='\"+this.attributes[e]+\"'\");t+=\">\";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+=\"</svg>\"},t}(),L=function(){function t(t,e){this.pathName=void 0,this.alternate=void 0,this.pathName=t,this.alternate=e}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");return this.alternate?t.setAttribute(\"d\",this.alternate):t.setAttribute(\"d\",M.path[this.pathName]),t},e.toMarkup=function(){return this.alternate?\"<path d='\"+this.alternate+\"'/>\":\"<path d='\"+M.path[this.pathName]+\"'/>\"},t}(),H=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS(\"http://www.w3.org/2000/svg\",\"line\");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t=\"<line\";for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=\" \"+e+\"='\"+this.attributes[e]+\"'\");return t+=\"/>\"},t}();var P={\"AMS-Regular\":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},\"Caligraphic-Regular\":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},\"Fraktur-Regular\":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},\"Main-Bold\":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},\"Main-BoldItalic\":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},\"Main-Italic\":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},\"Main-Regular\":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},\"Math-BoldItalic\":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},\"Math-Italic\":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},\"Math-Regular\":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},\"SansSerif-Bold\":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},\"SansSerif-Italic\":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},\"SansSerif-Regular\":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},\"Script-Regular\":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},\"Size1-Regular\":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},\"Size2-Regular\":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},\"Size3-Regular\":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},\"Size4-Regular\":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},\"Typewriter-Regular\":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},D={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2]},F={\"\\xc5\":\"A\",\"\\xc7\":\"C\",\"\\xd0\":\"D\",\"\\xde\":\"o\",\"\\xe5\":\"a\",\"\\xe7\":\"c\",\"\\xf0\":\"d\",\"\\xfe\":\"o\",\"\\u0410\":\"A\",\"\\u0411\":\"B\",\"\\u0412\":\"B\",\"\\u0413\":\"F\",\"\\u0414\":\"A\",\"\\u0415\":\"E\",\"\\u0416\":\"K\",\"\\u0417\":\"3\",\"\\u0418\":\"N\",\"\\u0419\":\"N\",\"\\u041a\":\"K\",\"\\u041b\":\"N\",\"\\u041c\":\"M\",\"\\u041d\":\"H\",\"\\u041e\":\"O\",\"\\u041f\":\"N\",\"\\u0420\":\"P\",\"\\u0421\":\"C\",\"\\u0422\":\"T\",\"\\u0423\":\"y\",\"\\u0424\":\"O\",\"\\u0425\":\"X\",\"\\u0426\":\"U\",\"\\u0427\":\"h\",\"\\u0428\":\"W\",\"\\u0429\":\"W\",\"\\u042a\":\"B\",\"\\u042b\":\"X\",\"\\u042c\":\"B\",\"\\u042d\":\"3\",\"\\u042e\":\"X\",\"\\u042f\":\"R\",\"\\u0430\":\"a\",\"\\u0431\":\"b\",\"\\u0432\":\"a\",\"\\u0433\":\"r\",\"\\u0434\":\"y\",\"\\u0435\":\"e\",\"\\u0436\":\"m\",\"\\u0437\":\"e\",\"\\u0438\":\"n\",\"\\u0439\":\"n\",\"\\u043a\":\"n\",\"\\u043b\":\"n\",\"\\u043c\":\"m\",\"\\u043d\":\"n\",\"\\u043e\":\"o\",\"\\u043f\":\"n\",\"\\u0440\":\"p\",\"\\u0441\":\"c\",\"\\u0442\":\"o\",\"\\u0443\":\"y\",\"\\u0444\":\"b\",\"\\u0445\":\"x\",\"\\u0446\":\"n\",\"\\u0447\":\"n\",\"\\u0448\":\"w\",\"\\u0449\":\"w\",\"\\u044a\":\"a\",\"\\u044b\":\"m\",\"\\u044c\":\"a\",\"\\u044d\":\"e\",\"\\u044e\":\"m\",\"\\u044f\":\"r\"};function V(t,e,r){if(!P[e])throw new Error(\"Font metrics not found for font: \"+e+\".\");var a=t.charCodeAt(0),n=P[e][a];if(!n&&t[0]in F&&(a=F[t[0]].charCodeAt(0),n=P[e][a]),n||\"text\"!==r||z(a)&&(n=P[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var U={};var G={bin:1,close:1,inner:1,open:1,punct:1,rel:1},X={\"accent-token\":1,mathord:1,\"op-token\":1,spacing:1,textord:1},Y={math:{},text:{}},_=Y;function W(t,e,r,a,n,o){Y[t][n]={font:e,group:r,replace:a},o&&a&&(Y[t][a]=Y[t][n])}var j=\"main\",$=\"ams\",Z=\"bin\",K=\"mathord\",J=\"op-token\",Q=\"rel\";W(\"math\",j,Q,\"\\u2261\",\"\\\\equiv\",!0),W(\"math\",j,Q,\"\\u227a\",\"\\\\prec\",!0),W(\"math\",j,Q,\"\\u227b\",\"\\\\succ\",!0),W(\"math\",j,Q,\"\\u223c\",\"\\\\sim\",!0),W(\"math\",j,Q,\"\\u22a5\",\"\\\\perp\"),W(\"math\",j,Q,\"\\u2aaf\",\"\\\\preceq\",!0),W(\"math\",j,Q,\"\\u2ab0\",\"\\\\succeq\",!0),W(\"math\",j,Q,\"\\u2243\",\"\\\\simeq\",!0),W(\"math\",j,Q,\"\\u2223\",\"\\\\mid\",!0),W(\"math\",j,Q,\"\\u226a\",\"\\\\ll\",!0),W(\"math\",j,Q,\"\\u226b\",\"\\\\gg\",!0),W(\"math\",j,Q,\"\\u224d\",\"\\\\asymp\",!0),W(\"math\",j,Q,\"\\u2225\",\"\\\\parallel\"),W(\"math\",j,Q,\"\\u22c8\",\"\\\\bowtie\",!0),W(\"math\",j,Q,\"\\u2323\",\"\\\\smile\",!0),W(\"math\",j,Q,\"\\u2291\",\"\\\\sqsubseteq\",!0),W(\"math\",j,Q,\"\\u2292\",\"\\\\sqsupseteq\",!0),W(\"math\",j,Q,\"\\u2250\",\"\\\\doteq\",!0),W(\"math\",j,Q,\"\\u2322\",\"\\\\frown\",!0),W(\"math\",j,Q,\"\\u220b\",\"\\\\ni\",!0),W(\"math\",j,Q,\"\\u221d\",\"\\\\propto\",!0),W(\"math\",j,Q,\"\\u22a2\",\"\\\\vdash\",!0),W(\"math\",j,Q,\"\\u22a3\",\"\\\\dashv\",!0),W(\"math\",j,Q,\"\\u220b\",\"\\\\owns\"),W(\"math\",j,\"punct\",\".\",\"\\\\ldotp\"),W(\"math\",j,\"punct\",\"\\u22c5\",\"\\\\cdotp\"),W(\"math\",j,\"textord\",\"#\",\"\\\\#\"),W(\"text\",j,\"textord\",\"#\",\"\\\\#\"),W(\"math\",j,\"textord\",\"&\",\"\\\\&\"),W(\"text\",j,\"textord\",\"&\",\"\\\\&\"),W(\"math\",j,\"textord\",\"\\u2135\",\"\\\\aleph\",!0),W(\"math\",j,\"textord\",\"\\u2200\",\"\\\\forall\",!0),W(\"math\",j,\"textord\",\"\\u210f\",\"\\\\hbar\",!0),W(\"math\",j,\"textord\",\"\\u2203\",\"\\\\exists\",!0),W(\"math\",j,\"textord\",\"\\u2207\",\"\\\\nabla\",!0),W(\"math\",j,\"textord\",\"\\u266d\",\"\\\\flat\",!0),W(\"math\",j,\"textord\",\"\\u2113\",\"\\\\ell\",!0),W(\"math\",j,\"textord\",\"\\u266e\",\"\\\\natural\",!0),W(\"math\",j,\"textord\",\"\\u2663\",\"\\\\clubsuit\",!0),W(\"math\",j,\"textord\",\"\\u2118\",\"\\\\wp\",!0),W(\"math\",j,\"textord\",\"\\u266f\",\"\\\\sharp\",!0),W(\"math\",j,\"textord\",\"\\u2662\",\"\\\\diamondsuit\",!0),W(\"math\",j,\"textord\",\"\\u211c\",\"\\\\Re\",!0),W(\"math\",j,\"textord\",\"\\u2661\",\"\\\\heartsuit\",!0),W(\"math\",j,\"textord\",\"\\u2111\",\"\\\\Im\",!0),W(\"math\",j,\"textord\",\"\\u2660\",\"\\\\spadesuit\",!0),W(\"text\",j,\"textord\",\"\\xa7\",\"\\\\S\",!0),W(\"text\",j,\"textord\",\"\\xb6\",\"\\\\P\",!0),W(\"math\",j,\"textord\",\"\\u2020\",\"\\\\dag\"),W(\"text\",j,\"textord\",\"\\u2020\",\"\\\\dag\"),W(\"text\",j,\"textord\",\"\\u2020\",\"\\\\textdagger\"),W(\"math\",j,\"textord\",\"\\u2021\",\"\\\\ddag\"),W(\"text\",j,\"textord\",\"\\u2021\",\"\\\\ddag\"),W(\"text\",j,\"textord\",\"\\u2021\",\"\\\\textdaggerdbl\"),W(\"math\",j,\"close\",\"\\u23b1\",\"\\\\rmoustache\",!0),W(\"math\",j,\"open\",\"\\u23b0\",\"\\\\lmoustache\",!0),W(\"math\",j,\"close\",\"\\u27ef\",\"\\\\rgroup\",!0),W(\"math\",j,\"open\",\"\\u27ee\",\"\\\\lgroup\",!0),W(\"math\",j,Z,\"\\u2213\",\"\\\\mp\",!0),W(\"math\",j,Z,\"\\u2296\",\"\\\\ominus\",!0),W(\"math\",j,Z,\"\\u228e\",\"\\\\uplus\",!0),W(\"math\",j,Z,\"\\u2293\",\"\\\\sqcap\",!0),W(\"math\",j,Z,\"\\u2217\",\"\\\\ast\"),W(\"math\",j,Z,\"\\u2294\",\"\\\\sqcup\",!0),W(\"math\",j,Z,\"\\u25ef\",\"\\\\bigcirc\"),W(\"math\",j,Z,\"\\u2219\",\"\\\\bullet\"),W(\"math\",j,Z,\"\\u2021\",\"\\\\ddagger\"),W(\"math\",j,Z,\"\\u2240\",\"\\\\wr\",!0),W(\"math\",j,Z,\"\\u2a3f\",\"\\\\amalg\"),W(\"math\",j,Z,\"&\",\"\\\\And\"),W(\"math\",j,Q,\"\\u27f5\",\"\\\\longleftarrow\",!0),W(\"math\",j,Q,\"\\u21d0\",\"\\\\Leftarrow\",!0),W(\"math\",j,Q,\"\\u27f8\",\"\\\\Longleftarrow\",!0),W(\"math\",j,Q,\"\\u27f6\",\"\\\\longrightarrow\",!0),W(\"math\",j,Q,\"\\u21d2\",\"\\\\Rightarrow\",!0),W(\"math\",j,Q,\"\\u27f9\",\"\\\\Longrightarrow\",!0),W(\"math\",j,Q,\"\\u2194\",\"\\\\leftrightarrow\",!0),W(\"math\",j,Q,\"\\u27f7\",\"\\\\longleftrightarrow\",!0),W(\"math\",j,Q,\"\\u21d4\",\"\\\\Leftrightarrow\",!0),W(\"math\",j,Q,\"\\u27fa\",\"\\\\Longleftrightarrow\",!0),W(\"math\",j,Q,\"\\u21a6\",\"\\\\mapsto\",!0),W(\"math\",j,Q,\"\\u27fc\",\"\\\\longmapsto\",!0),W(\"math\",j,Q,\"\\u2197\",\"\\\\nearrow\",!0),W(\"math\",j,Q,\"\\u21a9\",\"\\\\hookleftarrow\",!0),W(\"math\",j,Q,\"\\u21aa\",\"\\\\hookrightarrow\",!0),W(\"math\",j,Q,\"\\u2198\",\"\\\\searrow\",!0),W(\"math\",j,Q,\"\\u21bc\",\"\\\\leftharpoonup\",!0),W(\"math\",j,Q,\"\\u21c0\",\"\\\\rightharpoonup\",!0),W(\"math\",j,Q,\"\\u2199\",\"\\\\swarrow\",!0),W(\"math\",j,Q,\"\\u21bd\",\"\\\\leftharpoondown\",!0),W(\"math\",j,Q,\"\\u21c1\",\"\\\\rightharpoondown\",!0),W(\"math\",j,Q,\"\\u2196\",\"\\\\nwarrow\",!0),W(\"math\",j,Q,\"\\u21cc\",\"\\\\rightleftharpoons\",!0),W(\"math\",$,Q,\"\\u226e\",\"\\\\nless\",!0),W(\"math\",$,Q,\"\\ue010\",\"\\\\@nleqslant\"),W(\"math\",$,Q,\"\\ue011\",\"\\\\@nleqq\"),W(\"math\",$,Q,\"\\u2a87\",\"\\\\lneq\",!0),W(\"math\",$,Q,\"\\u2268\",\"\\\\lneqq\",!0),W(\"math\",$,Q,\"\\ue00c\",\"\\\\@lvertneqq\"),W(\"math\",$,Q,\"\\u22e6\",\"\\\\lnsim\",!0),W(\"math\",$,Q,\"\\u2a89\",\"\\\\lnapprox\",!0),W(\"math\",$,Q,\"\\u2280\",\"\\\\nprec\",!0),W(\"math\",$,Q,\"\\u22e0\",\"\\\\npreceq\",!0),W(\"math\",$,Q,\"\\u22e8\",\"\\\\precnsim\",!0),W(\"math\",$,Q,\"\\u2ab9\",\"\\\\precnapprox\",!0),W(\"math\",$,Q,\"\\u2241\",\"\\\\nsim\",!0),W(\"math\",$,Q,\"\\ue006\",\"\\\\@nshortmid\"),W(\"math\",$,Q,\"\\u2224\",\"\\\\nmid\",!0),W(\"math\",$,Q,\"\\u22ac\",\"\\\\nvdash\",!0),W(\"math\",$,Q,\"\\u22ad\",\"\\\\nvDash\",!0),W(\"math\",$,Q,\"\\u22ea\",\"\\\\ntriangleleft\"),W(\"math\",$,Q,\"\\u22ec\",\"\\\\ntrianglelefteq\",!0),W(\"math\",$,Q,\"\\u228a\",\"\\\\subsetneq\",!0),W(\"math\",$,Q,\"\\ue01a\",\"\\\\@varsubsetneq\"),W(\"math\",$,Q,\"\\u2acb\",\"\\\\subsetneqq\",!0),W(\"math\",$,Q,\"\\ue017\",\"\\\\@varsubsetneqq\"),W(\"math\",$,Q,\"\\u226f\",\"\\\\ngtr\",!0),W(\"math\",$,Q,\"\\ue00f\",\"\\\\@ngeqslant\"),W(\"math\",$,Q,\"\\ue00e\",\"\\\\@ngeqq\"),W(\"math\",$,Q,\"\\u2a88\",\"\\\\gneq\",!0),W(\"math\",$,Q,\"\\u2269\",\"\\\\gneqq\",!0),W(\"math\",$,Q,\"\\ue00d\",\"\\\\@gvertneqq\"),W(\"math\",$,Q,\"\\u22e7\",\"\\\\gnsim\",!0),W(\"math\",$,Q,\"\\u2a8a\",\"\\\\gnapprox\",!0),W(\"math\",$,Q,\"\\u2281\",\"\\\\nsucc\",!0),W(\"math\",$,Q,\"\\u22e1\",\"\\\\nsucceq\",!0),W(\"math\",$,Q,\"\\u22e9\",\"\\\\succnsim\",!0),W(\"math\",$,Q,\"\\u2aba\",\"\\\\succnapprox\",!0),W(\"math\",$,Q,\"\\u2246\",\"\\\\ncong\",!0),W(\"math\",$,Q,\"\\ue007\",\"\\\\@nshortparallel\"),W(\"math\",$,Q,\"\\u2226\",\"\\\\nparallel\",!0),W(\"math\",$,Q,\"\\u22af\",\"\\\\nVDash\",!0),W(\"math\",$,Q,\"\\u22eb\",\"\\\\ntriangleright\"),W(\"math\",$,Q,\"\\u22ed\",\"\\\\ntrianglerighteq\",!0),W(\"math\",$,Q,\"\\ue018\",\"\\\\@nsupseteqq\"),W(\"math\",$,Q,\"\\u228b\",\"\\\\supsetneq\",!0),W(\"math\",$,Q,\"\\ue01b\",\"\\\\@varsupsetneq\"),W(\"math\",$,Q,\"\\u2acc\",\"\\\\supsetneqq\",!0),W(\"math\",$,Q,\"\\ue019\",\"\\\\@varsupsetneqq\"),W(\"math\",$,Q,\"\\u22ae\",\"\\\\nVdash\",!0),W(\"math\",$,Q,\"\\u2ab5\",\"\\\\precneqq\",!0),W(\"math\",$,Q,\"\\u2ab6\",\"\\\\succneqq\",!0),W(\"math\",$,Q,\"\\ue016\",\"\\\\@nsubseteqq\"),W(\"math\",$,Z,\"\\u22b4\",\"\\\\unlhd\"),W(\"math\",$,Z,\"\\u22b5\",\"\\\\unrhd\"),W(\"math\",$,Q,\"\\u219a\",\"\\\\nleftarrow\",!0),W(\"math\",$,Q,\"\\u219b\",\"\\\\nrightarrow\",!0),W(\"math\",$,Q,\"\\u21cd\",\"\\\\nLeftarrow\",!0),W(\"math\",$,Q,\"\\u21cf\",\"\\\\nRightarrow\",!0),W(\"math\",$,Q,\"\\u21ae\",\"\\\\nleftrightarrow\",!0),W(\"math\",$,Q,\"\\u21ce\",\"\\\\nLeftrightarrow\",!0),W(\"math\",$,Q,\"\\u25b3\",\"\\\\vartriangle\"),W(\"math\",$,\"textord\",\"\\u210f\",\"\\\\hslash\"),W(\"math\",$,\"textord\",\"\\u25bd\",\"\\\\triangledown\"),W(\"math\",$,\"textord\",\"\\u25ca\",\"\\\\lozenge\"),W(\"math\",$,\"textord\",\"\\u24c8\",\"\\\\circledS\"),W(\"math\",$,\"textord\",\"\\xae\",\"\\\\circledR\"),W(\"text\",$,\"textord\",\"\\xae\",\"\\\\circledR\"),W(\"math\",$,\"textord\",\"\\u2221\",\"\\\\measuredangle\",!0),W(\"math\",$,\"textord\",\"\\u2204\",\"\\\\nexists\"),W(\"math\",$,\"textord\",\"\\u2127\",\"\\\\mho\"),W(\"math\",$,\"textord\",\"\\u2132\",\"\\\\Finv\",!0),W(\"math\",$,\"textord\",\"\\u2141\",\"\\\\Game\",!0),W(\"math\",$,\"textord\",\"\\u2035\",\"\\\\backprime\"),W(\"math\",$,\"textord\",\"\\u25b2\",\"\\\\blacktriangle\"),W(\"math\",$,\"textord\",\"\\u25bc\",\"\\\\blacktriangledown\"),W(\"math\",$,\"textord\",\"\\u25a0\",\"\\\\blacksquare\"),W(\"math\",$,\"textord\",\"\\u29eb\",\"\\\\blacklozenge\"),W(\"math\",$,\"textord\",\"\\u2605\",\"\\\\bigstar\"),W(\"math\",$,\"textord\",\"\\u2222\",\"\\\\sphericalangle\",!0),W(\"math\",$,\"textord\",\"\\u2201\",\"\\\\complement\",!0),W(\"math\",$,\"textord\",\"\\xf0\",\"\\\\eth\",!0),W(\"math\",$,\"textord\",\"\\u2571\",\"\\\\diagup\"),W(\"math\",$,\"textord\",\"\\u2572\",\"\\\\diagdown\"),W(\"math\",$,\"textord\",\"\\u25a1\",\"\\\\square\"),W(\"math\",$,\"textord\",\"\\u25a1\",\"\\\\Box\"),W(\"math\",$,\"textord\",\"\\u25ca\",\"\\\\Diamond\"),W(\"math\",$,\"textord\",\"\\xa5\",\"\\\\yen\",!0),W(\"text\",$,\"textord\",\"\\xa5\",\"\\\\yen\",!0),W(\"math\",$,\"textord\",\"\\u2713\",\"\\\\checkmark\",!0),W(\"text\",$,\"textord\",\"\\u2713\",\"\\\\checkmark\"),W(\"math\",$,\"textord\",\"\\u2136\",\"\\\\beth\",!0),W(\"math\",$,\"textord\",\"\\u2138\",\"\\\\daleth\",!0),W(\"math\",$,\"textord\",\"\\u2137\",\"\\\\gimel\",!0),W(\"math\",$,\"textord\",\"\\u03dd\",\"\\\\digamma\"),W(\"math\",$,\"textord\",\"\\u03f0\",\"\\\\varkappa\"),W(\"math\",$,\"open\",\"\\u250c\",\"\\\\ulcorner\",!0),W(\"math\",$,\"close\",\"\\u2510\",\"\\\\urcorner\",!0),W(\"math\",$,\"open\",\"\\u2514\",\"\\\\llcorner\",!0),W(\"math\",$,\"close\",\"\\u2518\",\"\\\\lrcorner\",!0),W(\"math\",$,Q,\"\\u2266\",\"\\\\leqq\",!0),W(\"math\",$,Q,\"\\u2a7d\",\"\\\\leqslant\",!0),W(\"math\",$,Q,\"\\u2a95\",\"\\\\eqslantless\",!0),W(\"math\",$,Q,\"\\u2272\",\"\\\\lesssim\",!0),W(\"math\",$,Q,\"\\u2a85\",\"\\\\lessapprox\",!0),W(\"math\",$,Q,\"\\u224a\",\"\\\\approxeq\",!0),W(\"math\",$,Z,\"\\u22d6\",\"\\\\lessdot\"),W(\"math\",$,Q,\"\\u22d8\",\"\\\\lll\",!0),W(\"math\",$,Q,\"\\u2276\",\"\\\\lessgtr\",!0),W(\"math\",$,Q,\"\\u22da\",\"\\\\lesseqgtr\",!0),W(\"math\",$,Q,\"\\u2a8b\",\"\\\\lesseqqgtr\",!0),W(\"math\",$,Q,\"\\u2251\",\"\\\\doteqdot\"),W(\"math\",$,Q,\"\\u2253\",\"\\\\risingdotseq\",!0),W(\"math\",$,Q,\"\\u2252\",\"\\\\fallingdotseq\",!0),W(\"math\",$,Q,\"\\u223d\",\"\\\\backsim\",!0),W(\"math\",$,Q,\"\\u22cd\",\"\\\\backsimeq\",!0),W(\"math\",$,Q,\"\\u2ac5\",\"\\\\subseteqq\",!0),W(\"math\",$,Q,\"\\u22d0\",\"\\\\Subset\",!0),W(\"math\",$,Q,\"\\u228f\",\"\\\\sqsubset\",!0),W(\"math\",$,Q,\"\\u227c\",\"\\\\preccurlyeq\",!0),W(\"math\",$,Q,\"\\u22de\",\"\\\\curlyeqprec\",!0),W(\"math\",$,Q,\"\\u227e\",\"\\\\precsim\",!0),W(\"math\",$,Q,\"\\u2ab7\",\"\\\\precapprox\",!0),W(\"math\",$,Q,\"\\u22b2\",\"\\\\vartriangleleft\"),W(\"math\",$,Q,\"\\u22b4\",\"\\\\trianglelefteq\"),W(\"math\",$,Q,\"\\u22a8\",\"\\\\vDash\",!0),W(\"math\",$,Q,\"\\u22aa\",\"\\\\Vvdash\",!0),W(\"math\",$,Q,\"\\u2323\",\"\\\\smallsmile\"),W(\"math\",$,Q,\"\\u2322\",\"\\\\smallfrown\"),W(\"math\",$,Q,\"\\u224f\",\"\\\\bumpeq\",!0),W(\"math\",$,Q,\"\\u224e\",\"\\\\Bumpeq\",!0),W(\"math\",$,Q,\"\\u2267\",\"\\\\geqq\",!0),W(\"math\",$,Q,\"\\u2a7e\",\"\\\\geqslant\",!0),W(\"math\",$,Q,\"\\u2a96\",\"\\\\eqslantgtr\",!0),W(\"math\",$,Q,\"\\u2273\",\"\\\\gtrsim\",!0),W(\"math\",$,Q,\"\\u2a86\",\"\\\\gtrapprox\",!0),W(\"math\",$,Z,\"\\u22d7\",\"\\\\gtrdot\"),W(\"math\",$,Q,\"\\u22d9\",\"\\\\ggg\",!0),W(\"math\",$,Q,\"\\u2277\",\"\\\\gtrless\",!0),W(\"math\",$,Q,\"\\u22db\",\"\\\\gtreqless\",!0),W(\"math\",$,Q,\"\\u2a8c\",\"\\\\gtreqqless\",!0),W(\"math\",$,Q,\"\\u2256\",\"\\\\eqcirc\",!0),W(\"math\",$,Q,\"\\u2257\",\"\\\\circeq\",!0),W(\"math\",$,Q,\"\\u225c\",\"\\\\triangleq\",!0),W(\"math\",$,Q,\"\\u223c\",\"\\\\thicksim\"),W(\"math\",$,Q,\"\\u2248\",\"\\\\thickapprox\"),W(\"math\",$,Q,\"\\u2ac6\",\"\\\\supseteqq\",!0),W(\"math\",$,Q,\"\\u22d1\",\"\\\\Supset\",!0),W(\"math\",$,Q,\"\\u2290\",\"\\\\sqsupset\",!0),W(\"math\",$,Q,\"\\u227d\",\"\\\\succcurlyeq\",!0),W(\"math\",$,Q,\"\\u22df\",\"\\\\curlyeqsucc\",!0),W(\"math\",$,Q,\"\\u227f\",\"\\\\succsim\",!0),W(\"math\",$,Q,\"\\u2ab8\",\"\\\\succapprox\",!0),W(\"math\",$,Q,\"\\u22b3\",\"\\\\vartriangleright\"),W(\"math\",$,Q,\"\\u22b5\",\"\\\\trianglerighteq\"),W(\"math\",$,Q,\"\\u22a9\",\"\\\\Vdash\",!0),W(\"math\",$,Q,\"\\u2223\",\"\\\\shortmid\"),W(\"math\",$,Q,\"\\u2225\",\"\\\\shortparallel\"),W(\"math\",$,Q,\"\\u226c\",\"\\\\between\",!0),W(\"math\",$,Q,\"\\u22d4\",\"\\\\pitchfork\",!0),W(\"math\",$,Q,\"\\u221d\",\"\\\\varpropto\"),W(\"math\",$,Q,\"\\u25c0\",\"\\\\blacktriangleleft\"),W(\"math\",$,Q,\"\\u2234\",\"\\\\therefore\",!0),W(\"math\",$,Q,\"\\u220d\",\"\\\\backepsilon\"),W(\"math\",$,Q,\"\\u25b6\",\"\\\\blacktriangleright\"),W(\"math\",$,Q,\"\\u2235\",\"\\\\because\",!0),W(\"math\",$,Q,\"\\u22d8\",\"\\\\llless\"),W(\"math\",$,Q,\"\\u22d9\",\"\\\\gggtr\"),W(\"math\",$,Z,\"\\u22b2\",\"\\\\lhd\"),W(\"math\",$,Z,\"\\u22b3\",\"\\\\rhd\"),W(\"math\",$,Q,\"\\u2242\",\"\\\\eqsim\",!0),W(\"math\",j,Q,\"\\u22c8\",\"\\\\Join\"),W(\"math\",$,Q,\"\\u2251\",\"\\\\Doteq\",!0),W(\"math\",$,Z,\"\\u2214\",\"\\\\dotplus\",!0),W(\"math\",$,Z,\"\\u2216\",\"\\\\smallsetminus\"),W(\"math\",$,Z,\"\\u22d2\",\"\\\\Cap\",!0),W(\"math\",$,Z,\"\\u22d3\",\"\\\\Cup\",!0),W(\"math\",$,Z,\"\\u2a5e\",\"\\\\doublebarwedge\",!0),W(\"math\",$,Z,\"\\u229f\",\"\\\\boxminus\",!0),W(\"math\",$,Z,\"\\u229e\",\"\\\\boxplus\",!0),W(\"math\",$,Z,\"\\u22c7\",\"\\\\divideontimes\",!0),W(\"math\",$,Z,\"\\u22c9\",\"\\\\ltimes\",!0),W(\"math\",$,Z,\"\\u22ca\",\"\\\\rtimes\",!0),W(\"math\",$,Z,\"\\u22cb\",\"\\\\leftthreetimes\",!0),W(\"math\",$,Z,\"\\u22cc\",\"\\\\rightthreetimes\",!0),W(\"math\",$,Z,\"\\u22cf\",\"\\\\curlywedge\",!0),W(\"math\",$,Z,\"\\u22ce\",\"\\\\curlyvee\",!0),W(\"math\",$,Z,\"\\u229d\",\"\\\\circleddash\",!0),W(\"math\",$,Z,\"\\u229b\",\"\\\\circledast\",!0),W(\"math\",$,Z,\"\\u22c5\",\"\\\\centerdot\"),W(\"math\",$,Z,\"\\u22ba\",\"\\\\intercal\",!0),W(\"math\",$,Z,\"\\u22d2\",\"\\\\doublecap\"),W(\"math\",$,Z,\"\\u22d3\",\"\\\\doublecup\"),W(\"math\",$,Z,\"\\u22a0\",\"\\\\boxtimes\",!0),W(\"math\",$,Q,\"\\u21e2\",\"\\\\dashrightarrow\",!0),W(\"math\",$,Q,\"\\u21e0\",\"\\\\dashleftarrow\",!0),W(\"math\",$,Q,\"\\u21c7\",\"\\\\leftleftarrows\",!0),W(\"math\",$,Q,\"\\u21c6\",\"\\\\leftrightarrows\",!0),W(\"math\",$,Q,\"\\u21da\",\"\\\\Lleftarrow\",!0),W(\"math\",$,Q,\"\\u219e\",\"\\\\twoheadleftarrow\",!0),W(\"math\",$,Q,\"\\u21a2\",\"\\\\leftarrowtail\",!0),W(\"math\",$,Q,\"\\u21ab\",\"\\\\looparrowleft\",!0),W(\"math\",$,Q,\"\\u21cb\",\"\\\\leftrightharpoons\",!0),W(\"math\",$,Q,\"\\u21b6\",\"\\\\curvearrowleft\",!0),W(\"math\",$,Q,\"\\u21ba\",\"\\\\circlearrowleft\",!0),W(\"math\",$,Q,\"\\u21b0\",\"\\\\Lsh\",!0),W(\"math\",$,Q,\"\\u21c8\",\"\\\\upuparrows\",!0),W(\"math\",$,Q,\"\\u21bf\",\"\\\\upharpoonleft\",!0),W(\"math\",$,Q,\"\\u21c3\",\"\\\\downharpoonleft\",!0),W(\"math\",$,Q,\"\\u22b8\",\"\\\\multimap\",!0),W(\"math\",$,Q,\"\\u21ad\",\"\\\\leftrightsquigarrow\",!0),W(\"math\",$,Q,\"\\u21c9\",\"\\\\rightrightarrows\",!0),W(\"math\",$,Q,\"\\u21c4\",\"\\\\rightleftarrows\",!0),W(\"math\",$,Q,\"\\u21a0\",\"\\\\twoheadrightarrow\",!0),W(\"math\",$,Q,\"\\u21a3\",\"\\\\rightarrowtail\",!0),W(\"math\",$,Q,\"\\u21ac\",\"\\\\looparrowright\",!0),W(\"math\",$,Q,\"\\u21b7\",\"\\\\curvearrowright\",!0),W(\"math\",$,Q,\"\\u21bb\",\"\\\\circlearrowright\",!0),W(\"math\",$,Q,\"\\u21b1\",\"\\\\Rsh\",!0),W(\"math\",$,Q,\"\\u21ca\",\"\\\\downdownarrows\",!0),W(\"math\",$,Q,\"\\u21be\",\"\\\\upharpoonright\",!0),W(\"math\",$,Q,\"\\u21c2\",\"\\\\downharpoonright\",!0),W(\"math\",$,Q,\"\\u21dd\",\"\\\\rightsquigarrow\",!0),W(\"math\",$,Q,\"\\u21dd\",\"\\\\leadsto\"),W(\"math\",$,Q,\"\\u21db\",\"\\\\Rrightarrow\",!0),W(\"math\",$,Q,\"\\u21be\",\"\\\\restriction\"),W(\"math\",j,\"textord\",\"\\u2018\",\"`\"),W(\"math\",j,\"textord\",\"$\",\"\\\\$\"),W(\"text\",j,\"textord\",\"$\",\"\\\\$\"),W(\"text\",j,\"textord\",\"$\",\"\\\\textdollar\"),W(\"math\",j,\"textord\",\"%\",\"\\\\%\"),W(\"text\",j,\"textord\",\"%\",\"\\\\%\"),W(\"math\",j,\"textord\",\"_\",\"\\\\_\"),W(\"text\",j,\"textord\",\"_\",\"\\\\_\"),W(\"text\",j,\"textord\",\"_\",\"\\\\textunderscore\"),W(\"math\",j,\"textord\",\"\\u2220\",\"\\\\angle\",!0),W(\"math\",j,\"textord\",\"\\u221e\",\"\\\\infty\",!0),W(\"math\",j,\"textord\",\"\\u2032\",\"\\\\prime\"),W(\"math\",j,\"textord\",\"\\u25b3\",\"\\\\triangle\"),W(\"math\",j,\"textord\",\"\\u0393\",\"\\\\Gamma\",!0),W(\"math\",j,\"textord\",\"\\u0394\",\"\\\\Delta\",!0),W(\"math\",j,\"textord\",\"\\u0398\",\"\\\\Theta\",!0),W(\"math\",j,\"textord\",\"\\u039b\",\"\\\\Lambda\",!0),W(\"math\",j,\"textord\",\"\\u039e\",\"\\\\Xi\",!0),W(\"math\",j,\"textord\",\"\\u03a0\",\"\\\\Pi\",!0),W(\"math\",j,\"textord\",\"\\u03a3\",\"\\\\Sigma\",!0),W(\"math\",j,\"textord\",\"\\u03a5\",\"\\\\Upsilon\",!0),W(\"math\",j,\"textord\",\"\\u03a6\",\"\\\\Phi\",!0),W(\"math\",j,\"textord\",\"\\u03a8\",\"\\\\Psi\",!0),W(\"math\",j,\"textord\",\"\\u03a9\",\"\\\\Omega\",!0),W(\"math\",j,\"textord\",\"A\",\"\\u0391\"),W(\"math\",j,\"textord\",\"B\",\"\\u0392\"),W(\"math\",j,\"textord\",\"E\",\"\\u0395\"),W(\"math\",j,\"textord\",\"Z\",\"\\u0396\"),W(\"math\",j,\"textord\",\"H\",\"\\u0397\"),W(\"math\",j,\"textord\",\"I\",\"\\u0399\"),W(\"math\",j,\"textord\",\"K\",\"\\u039a\"),W(\"math\",j,\"textord\",\"M\",\"\\u039c\"),W(\"math\",j,\"textord\",\"N\",\"\\u039d\"),W(\"math\",j,\"textord\",\"O\",\"\\u039f\"),W(\"math\",j,\"textord\",\"P\",\"\\u03a1\"),W(\"math\",j,\"textord\",\"T\",\"\\u03a4\"),W(\"math\",j,\"textord\",\"X\",\"\\u03a7\"),W(\"math\",j,\"textord\",\"\\xac\",\"\\\\neg\",!0),W(\"math\",j,\"textord\",\"\\xac\",\"\\\\lnot\"),W(\"math\",j,\"textord\",\"\\u22a4\",\"\\\\top\"),W(\"math\",j,\"textord\",\"\\u22a5\",\"\\\\bot\"),W(\"math\",j,\"textord\",\"\\u2205\",\"\\\\emptyset\"),W(\"math\",$,\"textord\",\"\\u2205\",\"\\\\varnothing\"),W(\"math\",j,K,\"\\u03b1\",\"\\\\alpha\",!0),W(\"math\",j,K,\"\\u03b2\",\"\\\\beta\",!0),W(\"math\",j,K,\"\\u03b3\",\"\\\\gamma\",!0),W(\"math\",j,K,\"\\u03b4\",\"\\\\delta\",!0),W(\"math\",j,K,\"\\u03f5\",\"\\\\epsilon\",!0),W(\"math\",j,K,\"\\u03b6\",\"\\\\zeta\",!0),W(\"math\",j,K,\"\\u03b7\",\"\\\\eta\",!0),W(\"math\",j,K,\"\\u03b8\",\"\\\\theta\",!0),W(\"math\",j,K,\"\\u03b9\",\"\\\\iota\",!0),W(\"math\",j,K,\"\\u03ba\",\"\\\\kappa\",!0),W(\"math\",j,K,\"\\u03bb\",\"\\\\lambda\",!0),W(\"math\",j,K,\"\\u03bc\",\"\\\\mu\",!0),W(\"math\",j,K,\"\\u03bd\",\"\\\\nu\",!0),W(\"math\",j,K,\"\\u03be\",\"\\\\xi\",!0),W(\"math\",j,K,\"\\u03bf\",\"\\\\omicron\",!0),W(\"math\",j,K,\"\\u03c0\",\"\\\\pi\",!0),W(\"math\",j,K,\"\\u03c1\",\"\\\\rho\",!0),W(\"math\",j,K,\"\\u03c3\",\"\\\\sigma\",!0),W(\"math\",j,K,\"\\u03c4\",\"\\\\tau\",!0),W(\"math\",j,K,\"\\u03c5\",\"\\\\upsilon\",!0),W(\"math\",j,K,\"\\u03d5\",\"\\\\phi\",!0),W(\"math\",j,K,\"\\u03c7\",\"\\\\chi\",!0),W(\"math\",j,K,\"\\u03c8\",\"\\\\psi\",!0),W(\"math\",j,K,\"\\u03c9\",\"\\\\omega\",!0),W(\"math\",j,K,\"\\u03b5\",\"\\\\varepsilon\",!0),W(\"math\",j,K,\"\\u03d1\",\"\\\\vartheta\",!0),W(\"math\",j,K,\"\\u03d6\",\"\\\\varpi\",!0),W(\"math\",j,K,\"\\u03f1\",\"\\\\varrho\",!0),W(\"math\",j,K,\"\\u03c2\",\"\\\\varsigma\",!0),W(\"math\",j,K,\"\\u03c6\",\"\\\\varphi\",!0),W(\"math\",j,Z,\"\\u2217\",\"*\"),W(\"math\",j,Z,\"+\",\"+\"),W(\"math\",j,Z,\"\\u2212\",\"-\"),W(\"math\",j,Z,\"\\u22c5\",\"\\\\cdot\",!0),W(\"math\",j,Z,\"\\u2218\",\"\\\\circ\"),W(\"math\",j,Z,\"\\xf7\",\"\\\\div\",!0),W(\"math\",j,Z,\"\\xb1\",\"\\\\pm\",!0),W(\"math\",j,Z,\"\\xd7\",\"\\\\times\",!0),W(\"math\",j,Z,\"\\u2229\",\"\\\\cap\",!0),W(\"math\",j,Z,\"\\u222a\",\"\\\\cup\",!0),W(\"math\",j,Z,\"\\u2216\",\"\\\\setminus\"),W(\"math\",j,Z,\"\\u2227\",\"\\\\land\"),W(\"math\",j,Z,\"\\u2228\",\"\\\\lor\"),W(\"math\",j,Z,\"\\u2227\",\"\\\\wedge\",!0),W(\"math\",j,Z,\"\\u2228\",\"\\\\vee\",!0),W(\"math\",j,\"textord\",\"\\u221a\",\"\\\\surd\"),W(\"math\",j,\"open\",\"(\",\"(\"),W(\"math\",j,\"open\",\"[\",\"[\"),W(\"math\",j,\"open\",\"\\u27e8\",\"\\\\langle\",!0),W(\"math\",j,\"open\",\"\\u2223\",\"\\\\lvert\"),W(\"math\",j,\"open\",\"\\u2225\",\"\\\\lVert\"),W(\"math\",j,\"close\",\")\",\")\"),W(\"math\",j,\"close\",\"]\",\"]\"),W(\"math\",j,\"close\",\"?\",\"?\"),W(\"math\",j,\"close\",\"!\",\"!\"),W(\"math\",j,\"close\",\"\\u27e9\",\"\\\\rangle\",!0),W(\"math\",j,\"close\",\"\\u2223\",\"\\\\rvert\"),W(\"math\",j,\"close\",\"\\u2225\",\"\\\\rVert\"),W(\"math\",j,Q,\"=\",\"=\"),W(\"math\",j,Q,\"<\",\"<\"),W(\"math\",j,Q,\">\",\">\"),W(\"math\",j,Q,\":\",\":\"),W(\"math\",j,Q,\"\\u2248\",\"\\\\approx\",!0),W(\"math\",j,Q,\"\\u2245\",\"\\\\cong\",!0),W(\"math\",j,Q,\"\\u2265\",\"\\\\ge\"),W(\"math\",j,Q,\"\\u2265\",\"\\\\geq\",!0),W(\"math\",j,Q,\"\\u2190\",\"\\\\gets\"),W(\"math\",j,Q,\">\",\"\\\\gt\"),W(\"math\",j,Q,\"\\u2208\",\"\\\\in\",!0),W(\"math\",j,Q,\"\\ue020\",\"\\\\@not\"),W(\"math\",j,Q,\"\\u2282\",\"\\\\subset\",!0),W(\"math\",j,Q,\"\\u2283\",\"\\\\supset\",!0),W(\"math\",j,Q,\"\\u2286\",\"\\\\subseteq\",!0),W(\"math\",j,Q,\"\\u2287\",\"\\\\supseteq\",!0),W(\"math\",$,Q,\"\\u2288\",\"\\\\nsubseteq\",!0),W(\"math\",$,Q,\"\\u2289\",\"\\\\nsupseteq\",!0),W(\"math\",j,Q,\"\\u22a8\",\"\\\\models\"),W(\"math\",j,Q,\"\\u2190\",\"\\\\leftarrow\",!0),W(\"math\",j,Q,\"\\u2264\",\"\\\\le\"),W(\"math\",j,Q,\"\\u2264\",\"\\\\leq\",!0),W(\"math\",j,Q,\"<\",\"\\\\lt\"),W(\"math\",j,Q,\"\\u2192\",\"\\\\rightarrow\",!0),W(\"math\",j,Q,\"\\u2192\",\"\\\\to\"),W(\"math\",$,Q,\"\\u2271\",\"\\\\ngeq\",!0),W(\"math\",$,Q,\"\\u2270\",\"\\\\nleq\",!0),W(\"math\",j,\"spacing\",\"\\xa0\",\"\\\\ \"),W(\"math\",j,\"spacing\",\"\\xa0\",\"~\"),W(\"math\",j,\"spacing\",\"\\xa0\",\"\\\\space\"),W(\"math\",j,\"spacing\",\"\\xa0\",\"\\\\nobreakspace\"),W(\"text\",j,\"spacing\",\"\\xa0\",\"\\\\ \"),W(\"text\",j,\"spacing\",\"\\xa0\",\"~\"),W(\"text\",j,\"spacing\",\"\\xa0\",\"\\\\space\"),W(\"text\",j,\"spacing\",\"\\xa0\",\"\\\\nobreakspace\"),W(\"math\",j,\"spacing\",null,\"\\\\nobreak\"),W(\"math\",j,\"spacing\",null,\"\\\\allowbreak\"),W(\"math\",j,\"punct\",\",\",\",\"),W(\"math\",j,\"punct\",\";\",\";\"),W(\"math\",$,Z,\"\\u22bc\",\"\\\\barwedge\",!0),W(\"math\",$,Z,\"\\u22bb\",\"\\\\veebar\",!0),W(\"math\",j,Z,\"\\u2299\",\"\\\\odot\",!0),W(\"math\",j,Z,\"\\u2295\",\"\\\\oplus\",!0),W(\"math\",j,Z,\"\\u2297\",\"\\\\otimes\",!0),W(\"math\",j,\"textord\",\"\\u2202\",\"\\\\partial\",!0),W(\"math\",j,Z,\"\\u2298\",\"\\\\oslash\",!0),W(\"math\",$,Z,\"\\u229a\",\"\\\\circledcirc\",!0),W(\"math\",$,Z,\"\\u22a1\",\"\\\\boxdot\",!0),W(\"math\",j,Z,\"\\u25b3\",\"\\\\bigtriangleup\"),W(\"math\",j,Z,\"\\u25bd\",\"\\\\bigtriangledown\"),W(\"math\",j,Z,\"\\u2020\",\"\\\\dagger\"),W(\"math\",j,Z,\"\\u22c4\",\"\\\\diamond\"),W(\"math\",j,Z,\"\\u22c6\",\"\\\\star\"),W(\"math\",j,Z,\"\\u25c3\",\"\\\\triangleleft\"),W(\"math\",j,Z,\"\\u25b9\",\"\\\\triangleright\"),W(\"math\",j,\"open\",\"{\",\"\\\\{\"),W(\"text\",j,\"textord\",\"{\",\"\\\\{\"),W(\"text\",j,\"textord\",\"{\",\"\\\\textbraceleft\"),W(\"math\",j,\"close\",\"}\",\"\\\\}\"),W(\"text\",j,\"textord\",\"}\",\"\\\\}\"),W(\"text\",j,\"textord\",\"}\",\"\\\\textbraceright\"),W(\"math\",j,\"open\",\"{\",\"\\\\lbrace\"),W(\"math\",j,\"close\",\"}\",\"\\\\rbrace\"),W(\"math\",j,\"open\",\"[\",\"\\\\lbrack\"),W(\"text\",j,\"textord\",\"[\",\"\\\\lbrack\"),W(\"math\",j,\"close\",\"]\",\"\\\\rbrack\"),W(\"text\",j,\"textord\",\"]\",\"\\\\rbrack\"),W(\"math\",j,\"open\",\"(\",\"\\\\lparen\"),W(\"math\",j,\"close\",\")\",\"\\\\rparen\"),W(\"text\",j,\"textord\",\"<\",\"\\\\textless\"),W(\"text\",j,\"textord\",\">\",\"\\\\textgreater\"),W(\"math\",j,\"open\",\"\\u230a\",\"\\\\lfloor\",!0),W(\"math\",j,\"close\",\"\\u230b\",\"\\\\rfloor\",!0),W(\"math\",j,\"open\",\"\\u2308\",\"\\\\lceil\",!0),W(\"math\",j,\"close\",\"\\u2309\",\"\\\\rceil\",!0),W(\"math\",j,\"textord\",\"\\\\\",\"\\\\backslash\"),W(\"math\",j,\"textord\",\"\\u2223\",\"|\"),W(\"math\",j,\"textord\",\"\\u2223\",\"\\\\vert\"),W(\"text\",j,\"textord\",\"|\",\"\\\\textbar\"),W(\"math\",j,\"textord\",\"\\u2225\",\"\\\\|\"),W(\"math\",j,\"textord\",\"\\u2225\",\"\\\\Vert\"),W(\"text\",j,\"textord\",\"\\u2225\",\"\\\\textbardbl\"),W(\"text\",j,\"textord\",\"~\",\"\\\\textasciitilde\"),W(\"text\",j,\"textord\",\"\\\\\",\"\\\\textbackslash\"),W(\"text\",j,\"textord\",\"^\",\"\\\\textasciicircum\"),W(\"math\",j,Q,\"\\u2191\",\"\\\\uparrow\",!0),W(\"math\",j,Q,\"\\u21d1\",\"\\\\Uparrow\",!0),W(\"math\",j,Q,\"\\u2193\",\"\\\\downarrow\",!0),W(\"math\",j,Q,\"\\u21d3\",\"\\\\Downarrow\",!0),W(\"math\",j,Q,\"\\u2195\",\"\\\\updownarrow\",!0),W(\"math\",j,Q,\"\\u21d5\",\"\\\\Updownarrow\",!0),W(\"math\",j,J,\"\\u2210\",\"\\\\coprod\"),W(\"math\",j,J,\"\\u22c1\",\"\\\\bigvee\"),W(\"math\",j,J,\"\\u22c0\",\"\\\\bigwedge\"),W(\"math\",j,J,\"\\u2a04\",\"\\\\biguplus\"),W(\"math\",j,J,\"\\u22c2\",\"\\\\bigcap\"),W(\"math\",j,J,\"\\u22c3\",\"\\\\bigcup\"),W(\"math\",j,J,\"\\u222b\",\"\\\\int\"),W(\"math\",j,J,\"\\u222b\",\"\\\\intop\"),W(\"math\",j,J,\"\\u222c\",\"\\\\iint\"),W(\"math\",j,J,\"\\u222d\",\"\\\\iiint\"),W(\"math\",j,J,\"\\u220f\",\"\\\\prod\"),W(\"math\",j,J,\"\\u2211\",\"\\\\sum\"),W(\"math\",j,J,\"\\u2a02\",\"\\\\bigotimes\"),W(\"math\",j,J,\"\\u2a01\",\"\\\\bigoplus\"),W(\"math\",j,J,\"\\u2a00\",\"\\\\bigodot\"),W(\"math\",j,J,\"\\u222e\",\"\\\\oint\"),W(\"math\",j,J,\"\\u222f\",\"\\\\oiint\"),W(\"math\",j,J,\"\\u2230\",\"\\\\oiiint\"),W(\"math\",j,J,\"\\u2a06\",\"\\\\bigsqcup\"),W(\"math\",j,J,\"\\u222b\",\"\\\\smallint\"),W(\"text\",j,\"inner\",\"\\u2026\",\"\\\\textellipsis\"),W(\"math\",j,\"inner\",\"\\u2026\",\"\\\\mathellipsis\"),W(\"text\",j,\"inner\",\"\\u2026\",\"\\\\ldots\",!0),W(\"math\",j,\"inner\",\"\\u2026\",\"\\\\ldots\",!0),W(\"math\",j,\"inner\",\"\\u22ef\",\"\\\\@cdots\",!0),W(\"math\",j,\"inner\",\"\\u22f1\",\"\\\\ddots\",!0),W(\"math\",j,\"textord\",\"\\u22ee\",\"\\\\varvdots\"),W(\"math\",j,\"accent-token\",\"\\u02ca\",\"\\\\acute\"),W(\"math\",j,\"accent-token\",\"\\u02cb\",\"\\\\grave\"),W(\"math\",j,\"accent-token\",\"\\xa8\",\"\\\\ddot\"),W(\"math\",j,\"accent-token\",\"~\",\"\\\\tilde\"),W(\"math\",j,\"accent-token\",\"\\u02c9\",\"\\\\bar\"),W(\"math\",j,\"accent-token\",\"\\u02d8\",\"\\\\breve\"),W(\"math\",j,\"accent-token\",\"\\u02c7\",\"\\\\check\"),W(\"math\",j,\"accent-token\",\"^\",\"\\\\hat\"),W(\"math\",j,\"accent-token\",\"\\u20d7\",\"\\\\vec\"),W(\"math\",j,\"accent-token\",\"\\u02d9\",\"\\\\dot\"),W(\"math\",j,\"accent-token\",\"\\u02da\",\"\\\\mathring\"),W(\"math\",j,K,\"\\u0131\",\"\\\\imath\",!0),W(\"math\",j,K,\"\\u0237\",\"\\\\jmath\",!0),W(\"text\",j,\"textord\",\"\\u0131\",\"\\\\i\",!0),W(\"text\",j,\"textord\",\"\\u0237\",\"\\\\j\",!0),W(\"text\",j,\"textord\",\"\\xdf\",\"\\\\ss\",!0),W(\"text\",j,\"textord\",\"\\xe6\",\"\\\\ae\",!0),W(\"text\",j,\"textord\",\"\\xe6\",\"\\\\ae\",!0),W(\"text\",j,\"textord\",\"\\u0153\",\"\\\\oe\",!0),W(\"text\",j,\"textord\",\"\\xf8\",\"\\\\o\",!0),W(\"text\",j,\"textord\",\"\\xc6\",\"\\\\AE\",!0),W(\"text\",j,\"textord\",\"\\u0152\",\"\\\\OE\",!0),W(\"text\",j,\"textord\",\"\\xd8\",\"\\\\O\",!0),W(\"text\",j,\"accent-token\",\"\\u02ca\",\"\\\\'\"),W(\"text\",j,\"accent-token\",\"\\u02cb\",\"\\\\`\"),W(\"text\",j,\"accent-token\",\"\\u02c6\",\"\\\\^\"),W(\"text\",j,\"accent-token\",\"\\u02dc\",\"\\\\~\"),W(\"text\",j,\"accent-token\",\"\\u02c9\",\"\\\\=\"),W(\"text\",j,\"accent-token\",\"\\u02d8\",\"\\\\u\"),W(\"text\",j,\"accent-token\",\"\\u02d9\",\"\\\\.\"),W(\"text\",j,\"accent-token\",\"\\u02da\",\"\\\\r\"),W(\"text\",j,\"accent-token\",\"\\u02c7\",\"\\\\v\"),W(\"text\",j,\"accent-token\",\"\\xa8\",'\\\\\"'),W(\"text\",j,\"accent-token\",\"\\u02dd\",\"\\\\H\"),W(\"text\",j,\"accent-token\",\"\\u25ef\",\"\\\\textcircled\");var tt={\"--\":!0,\"---\":!0,\"``\":!0,\"''\":!0};W(\"text\",j,\"textord\",\"\\u2013\",\"--\"),W(\"text\",j,\"textord\",\"\\u2013\",\"\\\\textendash\"),W(\"text\",j,\"textord\",\"\\u2014\",\"---\"),W(\"text\",j,\"textord\",\"\\u2014\",\"\\\\textemdash\"),W(\"text\",j,\"textord\",\"\\u2018\",\"`\"),W(\"text\",j,\"textord\",\"\\u2018\",\"\\\\textquoteleft\"),W(\"text\",j,\"textord\",\"\\u2019\",\"'\"),W(\"text\",j,\"textord\",\"\\u2019\",\"\\\\textquoteright\"),W(\"text\",j,\"textord\",\"\\u201c\",\"``\"),W(\"text\",j,\"textord\",\"\\u201c\",\"\\\\textquotedblleft\"),W(\"text\",j,\"textord\",\"\\u201d\",\"''\"),W(\"text\",j,\"textord\",\"\\u201d\",\"\\\\textquotedblright\"),W(\"math\",j,\"textord\",\"\\xb0\",\"\\\\degree\",!0),W(\"text\",j,\"textord\",\"\\xb0\",\"\\\\degree\"),W(\"text\",j,\"textord\",\"\\xb0\",\"\\\\textdegree\",!0),W(\"math\",j,K,\"\\xa3\",\"\\\\pounds\"),W(\"math\",j,K,\"\\xa3\",\"\\\\mathsterling\",!0),W(\"text\",j,K,\"\\xa3\",\"\\\\pounds\"),W(\"text\",j,K,\"\\xa3\",\"\\\\textsterling\",!0),W(\"math\",$,\"textord\",\"\\u2720\",\"\\\\maltese\"),W(\"text\",$,\"textord\",\"\\u2720\",\"\\\\maltese\"),W(\"text\",j,\"spacing\",\"\\xa0\",\"\\\\ \"),W(\"text\",j,\"spacing\",\"\\xa0\",\" \"),W(\"text\",j,\"spacing\",\"\\xa0\",\"~\");for(var et=0;et<'0123456789/@.\"'.length;et++){var rt='0123456789/@.\"'.charAt(et);W(\"math\",j,\"textord\",rt,rt)}for(var at=0;at<'0123456789!@*()-=+[]<>|\";:?/.,'.length;at++){var nt='0123456789!@*()-=+[]<>|\";:?/.,'.charAt(at);W(\"text\",j,\"textord\",nt,nt)}for(var ot=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",it=0;it<ot.length;it++){var st=ot.charAt(it);W(\"math\",j,K,st,st),W(\"text\",j,\"textord\",st,st)}W(\"math\",$,\"textord\",\"C\",\"\\u2102\"),W(\"text\",$,\"textord\",\"C\",\"\\u2102\"),W(\"math\",$,\"textord\",\"H\",\"\\u210d\"),W(\"text\",$,\"textord\",\"H\",\"\\u210d\"),W(\"math\",$,\"textord\",\"N\",\"\\u2115\"),W(\"text\",$,\"textord\",\"N\",\"\\u2115\"),W(\"math\",$,\"textord\",\"P\",\"\\u2119\"),W(\"text\",$,\"textord\",\"P\",\"\\u2119\"),W(\"math\",$,\"textord\",\"Q\",\"\\u211a\"),W(\"text\",$,\"textord\",\"Q\",\"\\u211a\"),W(\"math\",$,\"textord\",\"R\",\"\\u211d\"),W(\"text\",$,\"textord\",\"R\",\"\\u211d\"),W(\"math\",$,\"textord\",\"Z\",\"\\u2124\"),W(\"text\",$,\"textord\",\"Z\",\"\\u2124\"),W(\"math\",j,K,\"h\",\"\\u210e\"),W(\"text\",j,K,\"h\",\"\\u210e\");for(var ht=\"\",lt=0;lt<ot.length;lt++){var mt=ot.charAt(lt);W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56320+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56372+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56424+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56580+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56736+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56788+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56840+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56944+lt)),W(\"text\",j,\"textord\",mt,ht),lt<26&&(W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56632+lt)),W(\"text\",j,\"textord\",mt,ht),W(\"math\",j,K,mt,ht=String.fromCharCode(55349,56476+lt)),W(\"text\",j,\"textord\",mt,ht))}W(\"math\",j,K,\"k\",ht=String.fromCharCode(55349,56668)),W(\"text\",j,\"textord\",\"k\",ht);for(var ct=0;ct<10;ct++){var ut=ct.toString();W(\"math\",j,K,ut,ht=String.fromCharCode(55349,57294+ct)),W(\"text\",j,\"textord\",ut,ht),W(\"math\",j,K,ut,ht=String.fromCharCode(55349,57314+ct)),W(\"text\",j,\"textord\",ut,ht),W(\"math\",j,K,ut,ht=String.fromCharCode(55349,57324+ct)),W(\"text\",j,\"textord\",ut,ht),W(\"math\",j,K,ut,ht=String.fromCharCode(55349,57334+ct)),W(\"text\",j,\"textord\",ut,ht)}for(var dt=0;dt<\"\\xc7\\xd0\\xde\\xe7\\xfe\".length;dt++){var pt=\"\\xc7\\xd0\\xde\\xe7\\xfe\".charAt(dt);W(\"math\",j,K,pt,pt),W(\"text\",j,\"textord\",pt,pt)}W(\"text\",j,\"textord\",\"\\xf0\",\"\\xf0\"),W(\"text\",j,\"textord\",\"\\u2013\",\"\\u2013\"),W(\"text\",j,\"textord\",\"\\u2014\",\"\\u2014\"),W(\"text\",j,\"textord\",\"\\u2018\",\"\\u2018\"),W(\"text\",j,\"textord\",\"\\u2019\",\"\\u2019\"),W(\"text\",j,\"textord\",\"\\u201c\",\"\\u201c\"),W(\"text\",j,\"textord\",\"\\u201d\",\"\\u201d\");var ft=[[\"mathbf\",\"textbf\",\"Main-Bold\"],[\"mathbf\",\"textbf\",\"Main-Bold\"],[\"mathdefault\",\"textit\",\"Math-Italic\"],[\"mathdefault\",\"textit\",\"Math-Italic\"],[\"boldsymbol\",\"boldsymbol\",\"Main-BoldItalic\"],[\"boldsymbol\",\"boldsymbol\",\"Main-BoldItalic\"],[\"mathscr\",\"textscr\",\"Script-Regular\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"mathfrak\",\"textfrak\",\"Fraktur-Regular\"],[\"mathfrak\",\"textfrak\",\"Fraktur-Regular\"],[\"mathbb\",\"textbb\",\"AMS-Regular\"],[\"mathbb\",\"textbb\",\"AMS-Regular\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"mathsf\",\"textsf\",\"SansSerif-Regular\"],[\"mathsf\",\"textsf\",\"SansSerif-Regular\"],[\"mathboldsf\",\"textboldsf\",\"SansSerif-Bold\"],[\"mathboldsf\",\"textboldsf\",\"SansSerif-Bold\"],[\"mathitsf\",\"textitsf\",\"SansSerif-Italic\"],[\"mathitsf\",\"textitsf\",\"SansSerif-Italic\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"mathtt\",\"texttt\",\"Typewriter-Regular\"],[\"mathtt\",\"texttt\",\"Typewriter-Regular\"]],gt=[[\"mathbf\",\"textbf\",\"Main-Bold\"],[\"\",\"\",\"\"],[\"mathsf\",\"textsf\",\"SansSerif-Regular\"],[\"mathboldsf\",\"textboldsf\",\"SansSerif-Bold\"],[\"mathtt\",\"texttt\",\"Typewriter-Regular\"]],xt=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],vt=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],bt=function(t,e){return e.size<2?t:xt[t-1][e.size-1]},yt=function(){function t(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||\"\",this.fontFamily=e.fontFamily||\"\",this.fontWeight=e.fontWeight||\"\",this.fontShape=e.fontShape||\"\",this.sizeMultiplier=vt[this.size-1],this.maxSize=e.maxSize,this._fontMetrics=void 0}var e=t.prototype;return e.extend=function(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(var a in e)e.hasOwnProperty(a)&&(r[a]=e[a]);return new t(r)},e.havingStyle=function(t){return this.style===t?this:this.extend({style:t,size:bt(this.textSize,t)})},e.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},e.havingSize=function(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:vt[t-1]})},e.havingBaseStyle=function(e){e=e||this.style.text();var r=bt(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})},e.havingBaseSizing=function(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})},e.withColor=function(t){return this.extend({color:t})},e.withPhantom=function(){return this.extend({phantom:!0})},e.withFont=function(t){return this.extend({font:t})},e.withTextFontFamily=function(t){return this.extend({fontFamily:t,font:\"\"})},e.withTextFontWeight=function(t){return this.extend({fontWeight:t,font:\"\"})},e.withTextFontShape=function(t){return this.extend({fontShape:t,font:\"\"})},e.sizingClasses=function(t){return t.size!==this.size?[\"sizing\",\"reset-size\"+t.size,\"size\"+this.size]:[]},e.baseSizingClasses=function(){return this.size!==t.BASESIZE?[\"sizing\",\"reset-size\"+this.size,\"size\"+t.BASESIZE]:[]},e.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(t){var e;if(!U[e=t>=5?0:t>=3?1:2]){var r=U[e]={cssEmPerMu:D.quad[e]/18};for(var a in D)D.hasOwnProperty(a)&&(r[a]=D[a][e])}return U[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?\"transparent\":this.color},t}();yt.BASESIZE=6;var wt=yt,kt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},St={ex:!0,em:!0,mu:!0},zt=function(t,e){var r;if(t.unit in kt)r=kt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if(\"mu\"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,\"ex\"===t.unit)r=a.fontMetrics().xHeight;else{if(\"em\"!==t.unit)throw new i(\"Invalid unit: '\"+t.unit+\"'\");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Mt=[\"\\\\imath\",\"\\u0131\",\"\\\\jmath\",\"\\u0237\",\"\\\\pounds\",\"\\\\mathsterling\",\"\\\\textsterling\",\"\\xa3\"],Tt=function(t,e,r){return _[r][t]&&_[r][t].replace&&(t=_[r][t].replace),{value:t,metrics:V(t,e,r)}},At=function(t,e,r,a,n){var o,i=Tt(t,e,r),s=i.metrics;if(t=i.value,s){var h=s.italic;(\"text\"===r||a&&\"mathit\"===a.font)&&(h=0),o=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else\"undefined\"!=typeof console&&console.warn(\"No character metrics for '\"+t+\"' in style '\"+e+\"'\"),o=new E(t,0,0,0,0,0,n);if(a){o.maxFontSize=a.sizeMultiplier,a.style.isTight()&&o.classes.push(\"mtight\");var l=a.getColor();l&&(o.style.color=l)}return o},Bt=function(t,e){if(A(t.classes)!==A(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},qt=function(t){for(var e=0,r=0,a=0,n=0;n<t.children.length;n++){var o=t.children[n];o.height>e&&(e=o.height),o.depth>r&&(r=o.depth),o.maxFontSize>a&&(a=o.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Ct=function(t,e,r,a){var n=new N(t,e,r,a);return qt(n),n},Nt=function(t,e,r,a){return new N(t,e,r,a)},It=function(t){var e=new T(t);return qt(e),e},Ot=function(t,e,r){var a=\"\";switch(t){case\"amsrm\":a=\"AMS\";break;case\"textrm\":a=\"Main\";break;case\"textsf\":a=\"SansSerif\";break;case\"texttt\":a=\"Typewriter\";break;default:a=t}return a+\"-\"+(\"textbf\"===e&&\"textit\"===r?\"BoldItalic\":\"textbf\"===e?\"Bold\":\"textit\"===e?\"Italic\":\"Regular\")},Et={mathbf:{variant:\"bold\",fontName:\"Main-Bold\"},mathrm:{variant:\"normal\",fontName:\"Main-Regular\"},textit:{variant:\"italic\",fontName:\"Main-Italic\"},mathit:{variant:\"italic\",fontName:\"Main-Italic\"},mathbb:{variant:\"double-struck\",fontName:\"AMS-Regular\"},mathcal:{variant:\"script\",fontName:\"Caligraphic-Regular\"},mathfrak:{variant:\"fraktur\",fontName:\"Fraktur-Regular\"},mathscr:{variant:\"script\",fontName:\"Script-Regular\"},mathsf:{variant:\"sans-serif\",fontName:\"SansSerif-Regular\"},mathtt:{variant:\"monospace\",fontName:\"Typewriter-Regular\"}},Rt={vec:[\"vec\",.471,.714],oiintSize1:[\"oiintSize1\",.957,.499],oiintSize2:[\"oiintSize2\",1.472,.659],oiiintSize1:[\"oiiintSize1\",1.304,.499],oiiintSize2:[\"oiiintSize2\",1.98,.659]},Lt={fontMap:Et,makeSymbol:At,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),r&&r.font&&\"boldsymbol\"===r.font&&Tt(t,\"Main-Bold\",e).metrics?At(t,\"Main-Bold\",e,r,a.concat([\"mathbf\"])):\"\\\\\"===t||\"main\"===_[e][t].font?At(t,\"Main-Regular\",e,r,a):At(t,\"AMS-Regular\",e,r,a.concat([\"amsrm\"]))},makeSpan:Ct,makeSvgSpan:Nt,makeLineSpan:function(t,e,r){var a=Ct([t],[],e);return a.height=r||e.fontMetrics().defaultRuleThickness,a.style.borderBottomWidth=a.height+\"em\",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return qt(n),n},makeFragment:It,wrapFragment:function(t,e){return t instanceof T?Ct([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if(\"individualShift\"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,o=1;o<e.length;o++){var i=-e[o].shift-n-e[o].elem.depth,s=i-(e[o-1].elem.height+e[o-1].elem.depth);n+=i,r.push({type:\"kern\",size:s}),r.push(e[o])}return{children:r,depth:a}}var h;if(\"top\"===t.positionType){for(var l=t.positionData,m=0;m<t.children.length;m++){var c=t.children[m];l-=\"kern\"===c.type?c.size:c.elem.height+c.elem.depth}h=l}else if(\"bottom\"===t.positionType)h=-t.positionData;else{var u=t.children[0];if(\"elem\"!==u.type)throw new Error('First child must have type \"elem\".');if(\"shift\"===t.positionType)h=-u.elem.depth-t.positionData;else{if(\"firstBaseline\"!==t.positionType)throw new Error(\"Invalid positionType \"+t.positionType+\".\");h=-u.elem.depth}}return{children:t.children,depth:h}}(t),a=r.children,n=r.depth,o=0,i=0;i<a.length;i++){var s=a[i];if(\"elem\"===s.type){var h=s.elem;o=Math.max(o,h.maxFontSize,h.height)}}o+=2;var l=Ct([\"pstrut\"],[]);l.style.height=o+\"em\";for(var m=[],c=n,u=n,d=n,p=0;p<a.length;p++){var f=a[p];if(\"kern\"===f.type)d+=f.size;else{var g=f.elem,x=f.wrapperClasses||[],v=f.wrapperStyle||{},b=Ct(x,[l,g],void 0,v);b.style.top=-o-d-g.depth+\"em\",f.marginLeft&&(b.style.marginLeft=f.marginLeft),f.marginRight&&(b.style.marginRight=f.marginRight),m.push(b),d+=g.height+g.depth}c=Math.min(c,d),u=Math.max(u,d)}var y,w=Ct([\"vlist\"],m);if(w.style.height=u+\"em\",c<0){var k=Ct([],[]),S=Ct([\"vlist\"],[k]);S.style.height=-c+\"em\";var z=Ct([\"vlist-s\"],[new E(\"\\u200b\")]);y=[Ct([\"vlist-r\"],[w,z]),Ct([\"vlist-r\"],[S])]}else y=[Ct([\"vlist-r\"],[w])];var M=Ct([\"vlist-t\"],y);return 2===y.length&&M.classes.push(\"vlist-t2\"),M.height=u,M.depth=-c,M},makeOrd:function(t,e,r){var a,n=t.mode,o=t.text,s=[\"mord\"],h=\"math\"===n||\"text\"===n&&e.font,l=h?e.font:e.fontFamily;if(55349===o.charCodeAt(0)){var m=function(t,e){var r=1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536,a=\"math\"===e?0:1;if(119808<=r&&r<120484){var n=Math.floor((r-119808)/26);return[ft[n][2],ft[n][a]]}if(120782<=r&&r<=120831){var o=Math.floor((r-120782)/10);return[gt[o][2],gt[o][a]]}if(120485===r||120486===r)return[ft[0][2],ft[0][a]];if(120486<r&&r<120782)return[\"\",\"\"];throw new i(\"Unsupported character: \"+t)}(o,n),u=m[0],d=m[1];return At(o,u,n,e,s.concat(d))}if(l){var p,f;if(\"boldsymbol\"===l||\"mathnormal\"===l){var g=\"boldsymbol\"===l?function(t,e,r,a){return Tt(t,\"Math-BoldItalic\",e).metrics?{fontName:\"Math-BoldItalic\",fontClass:\"boldsymbol\"}:{fontName:\"Main-Bold\",fontClass:\"mathbf\"}}(o,n):(a=o,c.contains(Mt,a)?{fontName:\"Main-Italic\",fontClass:\"mathit\"}:/[0-9]/.test(a.charAt(0))?{fontName:\"Caligraphic-Regular\",fontClass:\"mathcal\"}:{fontName:\"Math-Italic\",fontClass:\"mathdefault\"});p=g.fontName,f=[g.fontClass]}else c.contains(Mt,o)?(p=\"Main-Italic\",f=[\"mathit\"]):h?(p=Et[l].fontName,f=[l]):(p=Ot(l,e.fontWeight,e.fontShape),f=[l,e.fontWeight,e.fontShape]);if(Tt(o,p,n).metrics)return At(o,p,n,e,s.concat(f));if(tt.hasOwnProperty(o)&&\"Typewriter\"===p.substr(0,10)){for(var x=[],v=0;v<o.length;v++)x.push(At(o[v],p,n,e,s.concat(f)));return It(x)}}if(\"mathord\"===r){var b=function(t,e,r,a){return/[0-9]/.test(t.charAt(0))||c.contains(Mt,t)?{fontName:\"Main-Italic\",fontClass:\"mathit\"}:{fontName:\"Math-Italic\",fontClass:\"mathdefault\"}}(o);return At(o,b.fontName,n,e,s.concat([b.fontClass]))}if(\"textord\"===r){var y=_[n][o]&&_[n][o].font;if(\"ams\"===y){var w=Ot(\"amsrm\",e.fontWeight,e.fontShape);return At(o,w,n,e,s.concat(\"amsrm\",e.fontWeight,e.fontShape))}if(\"main\"!==y&&y){var k=Ot(y,e.fontWeight,e.fontShape);return At(o,k,n,e,s.concat(k,e.fontWeight,e.fontShape))}var S=Ot(\"textrm\",e.fontWeight,e.fontShape);return At(o,S,n,e,s.concat(e.fontWeight,e.fontShape))}throw new Error(\"unexpected type: \"+r+\" in makeOrd\")},makeGlue:function(t,e){var r=Ct([\"mspace\"],[],e),a=zt(t,e);return r.style.marginRight=a+\"em\",r},staticSvg:function(t,e){var r=Rt[t],a=r[0],n=r[1],o=r[2],i=new L(a),s=new R([i],{width:n+\"em\",height:o+\"em\",style:\"width:\"+n+\"em\",viewBox:\"0 0 \"+1e3*n+\" \"+1e3*o,preserveAspectRatio:\"xMinYMin\"}),h=Nt([\"overlay\"],[s],e);return h.height=o,h.style.height=o+\"em\",h.style.width=n+\"em\",h},svgData:Rt,tryCombineChars:function(t){for(var e=0;e<t.length-1;e++){var r=t[e],a=t[e+1];r instanceof E&&a instanceof E&&Bt(r,a)&&(r.text+=a.text,r.height=Math.max(r.height,a.height),r.depth=Math.max(r.depth,a.depth),r.italic=a.italic,t.splice(e+1,1),e--)}return t}};function Ht(t,e){var r=Pt(t,e);if(!r)throw new Error(\"Expected node of type \"+e+\", but got \"+(t?\"node of type \"+t.type:String(t)));return r}function Pt(t,e){return t&&t.type===e?t:null}function Dt(t,e){var r=function(t,e){return t&&\"atom\"===t.type&&t.family===e?t:null}(t,e);if(!r)throw new Error('Expected node of type \"atom\" and family \"'+e+'\", but got '+(t?\"atom\"===t.type?\"atom of family \"+t.family:\"node of type \"+t.type:String(t)));return r}function Ft(t){return t&&(\"atom\"===t.type||X.hasOwnProperty(t.type))?t:null}var Vt={number:3,unit:\"mu\"},Ut={number:4,unit:\"mu\"},Gt={number:5,unit:\"mu\"},Xt={mord:{mop:Vt,mbin:Ut,mrel:Gt,minner:Vt},mop:{mord:Vt,mop:Vt,mrel:Gt,minner:Vt},mbin:{mord:Ut,mop:Ut,mopen:Ut,minner:Ut},mrel:{mord:Gt,mop:Gt,mopen:Gt,minner:Gt},mopen:{},mclose:{mop:Vt,mbin:Ut,mrel:Gt,minner:Vt},mpunct:{mord:Vt,mop:Vt,mrel:Gt,mopen:Vt,mclose:Vt,mpunct:Vt,minner:Vt},minner:{mord:Vt,mop:Vt,mbin:Ut,mrel:Gt,mopen:Vt,mpunct:Vt,minner:Vt}},Yt={mord:{mop:Vt},mop:{mord:Vt,mop:Vt},mbin:{},mrel:{},mopen:{},mclose:{mop:Vt},mpunct:{},minner:{mop:Vt}},_t={},Wt={},jt={};function $t(t){for(var e=t.type,r=(t.nodeType,t.names),a=t.props,n=t.handler,o=t.htmlBuilder,i=t.mathmlBuilder,s={type:e,numArgs:a.numArgs,argTypes:a.argTypes,greediness:void 0===a.greediness?1:a.greediness,allowedInText:!!a.allowedInText,allowedInMath:void 0===a.allowedInMath||a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,consumeMode:a.consumeMode,handler:n},h=0;h<r.length;++h)_t[r[h]]=s;e&&(o&&(Wt[e]=o),i&&(jt[e]=i))}function Zt(t){$t({type:t.type,names:[],props:{numArgs:0},handler:function(){throw new Error(\"Should never be called.\")},htmlBuilder:t.htmlBuilder,mathmlBuilder:t.mathmlBuilder})}var Kt=function(t){var e=Pt(t,\"ordgroup\");return e?e.body:[t]},Jt=Lt.makeSpan,Qt=[\"leftmost\",\"mbin\",\"mopen\",\"mrel\",\"mop\",\"mpunct\"],te=[\"rightmost\",\"mrel\",\"mclose\",\"mpunct\"],ee={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT},re={mord:\"mord\",mop:\"mop\",mbin:\"mbin\",mrel:\"mrel\",mopen:\"mopen\",mclose:\"mclose\",mpunct:\"mpunct\",minner:\"minner\"},ae=function(t,e,r,a){void 0===a&&(a=[null,null]);for(var n=[],o=0;o<t.length;o++){var i=he(t[o],e);if(i instanceof T){var s=i.children;n.push.apply(n,s)}else n.push(i)}if(!r)return n;var h=e;if(1===t.length){var l=Pt(t[0],\"sizing\")||Pt(t[0],\"styling\");l&&(\"sizing\"===l.type?h=e.havingSize(l.size):\"styling\"===l.type&&(h=e.havingStyle(ee[l.style])))}var m=Jt([a[0]||\"leftmost\"],[],e),u=Jt([a[1]||\"rightmost\"],[],e);return ne(n,function(t,e){var r=e.classes[0],a=t.classes[0];\"mbin\"===r&&c.contains(te,a)?e.classes[0]=\"mord\":\"mbin\"===a&&c.contains(Qt,r)&&(t.classes[0]=\"mord\")},{node:m},u),ne(n,function(t,e){var r=ie(e),a=ie(t),n=r&&a?t.hasClass(\"mtight\")?Yt[r][a]:Xt[r][a]:null;if(n)return Lt.makeGlue(n,h)},{node:m},u),n},ne=function t(e,r,a,n){n&&e.push(n);for(var o=0;o<e.length;o++){var i=e[o],s=oe(i);if(s)t(s.children,r,a);else if(\"mspace\"!==i.classes[0]){var h=r(i,a.node);h&&(a.insertAfter?a.insertAfter(h):(e.unshift(h),o++)),a.node=i,a.insertAfter=function(t){return function(r){e.splice(t+1,0,r),o++}}(o)}}n&&e.pop()},oe=function(t){return t instanceof T||t instanceof I?t:null},ie=function(t,e){return t?(e&&(t=function t(e,r){var a=oe(e);if(a){var n=a.children;if(n.length){if(\"right\"===r)return t(n[n.length-1],\"right\");if(\"left\"===r)return t(n[0],\"left\")}}return e}(t,e)),re[t.classes[0]]||null):null},se=function(t,e){var r=[\"nulldelimiter\"].concat(t.baseSizingClasses());return Jt(e.concat(r))},he=function(t,e,r){if(!t)return Jt();if(Wt[t.type]){var a=Wt[t.type](t,e);if(r&&e.size!==r.size){a=Jt(e.sizingClasses(r),[a],e);var n=e.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new i(\"Got group of unknown type: '\"+t.type+\"'\")};function le(t,e){var r=Jt([\"base\"],t,e),a=Jt([\"strut\"]);return a.style.height=r.height+r.depth+\"em\",a.style.verticalAlign=-r.depth+\"em\",r.children.unshift(a),r}function me(t,e){var r=null;1===t.length&&\"tag\"===t[0].type&&(r=t[0].tag,t=t[0].body);for(var a,n=ae(t,e,!0),o=[],i=[],s=0;s<n.length;s++)if(i.push(n[s]),n[s].hasClass(\"mbin\")||n[s].hasClass(\"mrel\")||n[s].hasClass(\"allowbreak\")){for(var h=!1;s<n.length-1&&n[s+1].hasClass(\"mspace\")&&!n[s+1].hasClass(\"newline\");)s++,i.push(n[s]),n[s].hasClass(\"nobreak\")&&(h=!0);h||(o.push(le(i,e)),i=[])}else n[s].hasClass(\"newline\")&&(i.pop(),i.length>0&&(o.push(le(i,e)),i=[]),o.push(n[s]));i.length>0&&o.push(le(i,e)),r&&((a=le(ae(r,e,!0))).classes=[\"tag\"],o.push(a));var l=Jt([\"katex-html\"],o);if(l.setAttribute(\"aria-hidden\",\"true\"),a){var m=a.children[0];m.style.height=l.height+l.depth+\"em\",m.style.verticalAlign=-l.depth+\"em\"}return l}function ce(t){return new T(t)}var ue=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r<this.children.length;r++)t.appendChild(this.children[r].toNode());return t},e.toMarkup=function(){var t=\"<\"+this.type;for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&(t+=\" \"+e+'=\"',t+=c.escape(this.attributes[e]),t+='\"');t+=\">\";for(var r=0;r<this.children.length;r++)t+=this.children[r].toMarkup();return t+=\"</\"+this.type+\">\"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join(\"\")},t}(),de=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),pe={MathNode:ue,TextNode:de,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?\"\\u200a\":t>=.1666&&t<=.1667?\"\\u2009\":t>=.2222&&t<=.2223?\"\\u2005\":t>=.2777&&t<=.2778?\"\\u2005\\u200a\":t>=-.05556&&t<=-.05555?\"\\u200a\\u2063\":t>=-.1667&&t<=-.1666?\"\\u2009\\u2063\":t>=-.2223&&t<=-.2222?\"\\u205f\\u2063\":t>=-.2778&&t<=-.2777?\"\\u2005\\u2063\":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",\"mspace\");return t.setAttribute(\"width\",this.width+\"em\"),t},e.toMarkup=function(){return this.character?\"<mtext>\"+this.character+\"</mtext>\":'<mspace width=\"'+this.width+'em\"/>'},e.toText=function(){return this.character?this.character:\" \"},t}(),newDocumentFragment:ce},fe=function(t,e,r){return!_[e][t]||!_[e][t].replace||55349===t.charCodeAt(0)||tt.hasOwnProperty(t)&&r&&(r.fontFamily&&\"tt\"===r.fontFamily.substr(4,2)||r.font&&\"tt\"===r.font.substr(4,2))||(t=_[e][t].replace),new pe.TextNode(t)},ge=function(t){return 1===t.length?t[0]:new pe.MathNode(\"mrow\",t)},xe=function(t,e){if(\"texttt\"===e.fontFamily)return\"monospace\";if(\"textsf\"===e.fontFamily)return\"textit\"===e.fontShape&&\"textbf\"===e.fontWeight?\"sans-serif-bold-italic\":\"textit\"===e.fontShape?\"sans-serif-italic\":\"textbf\"===e.fontWeight?\"bold-sans-serif\":\"sans-serif\";if(\"textit\"===e.fontShape&&\"textbf\"===e.fontWeight)return\"bold-italic\";if(\"textit\"===e.fontShape)return\"italic\";if(\"textbf\"===e.fontWeight)return\"bold\";var r=e.font;if(!r||\"mathnormal\"===r)return null;var a=t.mode;if(\"mathit\"===r)return\"italic\";if(\"boldsymbol\"===r)return\"bold-italic\";var n=t.text;return c.contains([\"\\\\imath\",\"\\\\jmath\"],n)?null:(_[a][n]&&_[a][n].replace&&(n=_[a][n].replace),V(n,Lt.fontMap[r].fontName,a)?Lt.fontMap[r].variant:null)},ve=function(t,e){for(var r,a=[],n=0;n<t.length;n++){var o=ye(t[n],e);if(o instanceof ue&&r instanceof ue){if(\"mtext\"===o.type&&\"mtext\"===r.type&&o.getAttribute(\"mathvariant\")===r.getAttribute(\"mathvariant\")){var i;(i=r.children).push.apply(i,o.children);continue}if(\"mn\"===o.type&&\"mn\"===r.type){var s;(s=r.children).push.apply(s,o.children);continue}if(\"mi\"===o.type&&1===o.children.length&&\"mn\"===r.type){var h=o.children[0];if(h instanceof de&&\".\"===h.text){var l;(l=r.children).push.apply(l,o.children);continue}}else if(\"mi\"===r.type&&1===r.children.length){var m=r.children[0];if(m instanceof de&&\"\\u0338\"===m.text&&(\"mo\"===o.type||\"mi\"===o.type||\"mn\"===o.type)){var c=o.children[0];c instanceof de&&c.text.length>0&&(c.text=c.text.slice(0,1)+\"\\u0338\"+c.text.slice(1),a.pop())}}}a.push(o),r=o}return a},be=function(t,e){return ge(ve(t,e))},ye=function(t,e){if(!t)return new pe.MathNode(\"mrow\");if(jt[t.type])return jt[t.type](t,e);throw new i(\"Got group of unknown type: '\"+t.type+\"'\")};var we=function(t){return new wt({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize})},ke=function(t,e){if(e.displayMode){var r=[\"katex-display\"];e.leqno&&r.push(\"leqno\"),e.fleqn&&r.push(\"fleqn\"),t=Lt.makeSpan(r,[t])}return t},Se=function(t,e,r){var a=we(r),n=function(t,e,r){var a,n=ve(t,r);a=1===n.length&&n[0]instanceof ue&&c.contains([\"mrow\",\"mtable\"],n[0].type)?n[0]:new pe.MathNode(\"mrow\",n);var o=new pe.MathNode(\"annotation\",[new pe.TextNode(e)]);o.setAttribute(\"encoding\",\"application/x-tex\");var i=new pe.MathNode(\"semantics\",[a,o]),s=new pe.MathNode(\"math\",[i]);return Lt.makeSpan([\"katex-mathml\"],[s])}(t,e,a),o=me(t,a),i=Lt.makeSpan([\"katex\"],[n,o]);return ke(i,r)},ze={widehat:\"^\",widecheck:\"\\u02c7\",widetilde:\"~\",utilde:\"~\",overleftarrow:\"\\u2190\",underleftarrow:\"\\u2190\",xleftarrow:\"\\u2190\",overrightarrow:\"\\u2192\",underrightarrow:\"\\u2192\",xrightarrow:\"\\u2192\",underbrace:\"\\u23df\",overbrace:\"\\u23de\",overgroup:\"\\u23e0\",undergroup:\"\\u23e1\",overleftrightarrow:\"\\u2194\",underleftrightarrow:\"\\u2194\",xleftrightarrow:\"\\u2194\",Overrightarrow:\"\\u21d2\",xRightarrow:\"\\u21d2\",overleftharpoon:\"\\u21bc\",xleftharpoonup:\"\\u21bc\",overrightharpoon:\"\\u21c0\",xrightharpoonup:\"\\u21c0\",xLeftarrow:\"\\u21d0\",xLeftrightarrow:\"\\u21d4\",xhookleftarrow:\"\\u21a9\",xhookrightarrow:\"\\u21aa\",xmapsto:\"\\u21a6\",xrightharpoondown:\"\\u21c1\",xleftharpoondown:\"\\u21bd\",xrightleftharpoons:\"\\u21cc\",xleftrightharpoons:\"\\u21cb\",xtwoheadleftarrow:\"\\u219e\",xtwoheadrightarrow:\"\\u21a0\",xlongequal:\"=\",xtofrom:\"\\u21c4\",xrightleftarrows:\"\\u21c4\",xrightequilibrium:\"\\u21cc\",xleftequilibrium:\"\\u21cb\"},Me={overrightarrow:[[\"rightarrow\"],.888,522,\"xMaxYMin\"],overleftarrow:[[\"leftarrow\"],.888,522,\"xMinYMin\"],underrightarrow:[[\"rightarrow\"],.888,522,\"xMaxYMin\"],underleftarrow:[[\"leftarrow\"],.888,522,\"xMinYMin\"],xrightarrow:[[\"rightarrow\"],1.469,522,\"xMaxYMin\"],xleftarrow:[[\"leftarrow\"],1.469,522,\"xMinYMin\"],Overrightarrow:[[\"doublerightarrow\"],.888,560,\"xMaxYMin\"],xRightarrow:[[\"doublerightarrow\"],1.526,560,\"xMaxYMin\"],xLeftarrow:[[\"doubleleftarrow\"],1.526,560,\"xMinYMin\"],overleftharpoon:[[\"leftharpoon\"],.888,522,\"xMinYMin\"],xleftharpoonup:[[\"leftharpoon\"],.888,522,\"xMinYMin\"],xleftharpoondown:[[\"leftharpoondown\"],.888,522,\"xMinYMin\"],overrightharpoon:[[\"rightharpoon\"],.888,522,\"xMaxYMin\"],xrightharpoonup:[[\"rightharpoon\"],.888,522,\"xMaxYMin\"],xrightharpoondown:[[\"rightharpoondown\"],.888,522,\"xMaxYMin\"],xlongequal:[[\"longequal\"],.888,334,\"xMinYMin\"],xtwoheadleftarrow:[[\"twoheadleftarrow\"],.888,334,\"xMinYMin\"],xtwoheadrightarrow:[[\"twoheadrightarrow\"],.888,334,\"xMaxYMin\"],overleftrightarrow:[[\"leftarrow\",\"rightarrow\"],.888,522],overbrace:[[\"leftbrace\",\"midbrace\",\"rightbrace\"],1.6,548],underbrace:[[\"leftbraceunder\",\"midbraceunder\",\"rightbraceunder\"],1.6,548],underleftrightarrow:[[\"leftarrow\",\"rightarrow\"],.888,522],xleftrightarrow:[[\"leftarrow\",\"rightarrow\"],1.75,522],xLeftrightarrow:[[\"doubleleftarrow\",\"doublerightarrow\"],1.75,560],xrightleftharpoons:[[\"leftharpoondownplus\",\"rightharpoonplus\"],1.75,716],xleftrightharpoons:[[\"leftharpoonplus\",\"rightharpoondownplus\"],1.75,716],xhookleftarrow:[[\"leftarrow\",\"righthook\"],1.08,522],xhookrightarrow:[[\"lefthook\",\"rightarrow\"],1.08,522],overlinesegment:[[\"leftlinesegment\",\"rightlinesegment\"],.888,522],underlinesegment:[[\"leftlinesegment\",\"rightlinesegment\"],.888,522],overgroup:[[\"leftgroup\",\"rightgroup\"],.888,342],undergroup:[[\"leftgroupunder\",\"rightgroupunder\"],.888,342],xmapsto:[[\"leftmapsto\",\"rightarrow\"],1.5,522],xtofrom:[[\"leftToFrom\",\"rightToFrom\"],1.75,528],xrightleftarrows:[[\"baraboveleftarrow\",\"rightarrowabovebar\"],1.75,901],xrightequilibrium:[[\"baraboveshortleftharpoon\",\"rightharpoonaboveshortbar\"],1.75,716],xleftequilibrium:[[\"shortbaraboveleftharpoon\",\"shortrightharpoonabovebar\"],1.75,716]},Te=function(t){return\"ordgroup\"===t.type?t.body.length:1},Ae=function(t,e,r,a){var n,o=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Lt.makeSpan([\"stretchy\",e],[],a),\"fbox\"===e){var i=a.color&&a.getColor();i&&(n.style.borderColor=i)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new H({x1:\"0\",y1:\"0\",x2:\"100%\",y2:\"100%\",\"stroke-width\":\"0.046em\"})),/^x?cancel$/.test(e)&&s.push(new H({x1:\"0\",y1:\"100%\",x2:\"100%\",y2:\"0\",\"stroke-width\":\"0.046em\"}));var h=new R(s,{width:\"100%\",height:o+\"em\"});n=Lt.makeSvgSpan([],[h],a)}return n.height=o,n.style.height=o+\"em\",n},Be=function(t){var e=new pe.MathNode(\"mo\",[new pe.TextNode(ze[t.substr(1)])]);return e.setAttribute(\"stretchy\",\"true\"),e},qe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains([\"widehat\",\"widecheck\",\"widetilde\",\"utilde\"],a)){var n,o,i,s=Te(t.base);if(s>5)\"widehat\"===a||\"widecheck\"===a?(n=420,r=2364,i=.42,o=a+\"4\"):(n=312,r=2340,i=.34,o=\"tilde4\");else{var h=[1,1,2,2,3,3][s];\"widehat\"===a||\"widecheck\"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],i=[0,.24,.3,.3,.36,.42][h],o=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],i=[0,.26,.286,.3,.306,.34][h],o=\"tilde\"+h)}var l=new L(o),m=new R([l],{width:\"100%\",height:i+\"em\",viewBox:\"0 0 \"+r+\" \"+n,preserveAspectRatio:\"none\"});return{span:Lt.makeSvgSpan([],[m],e),minWidth:0,height:i}}var u,d,p=[],f=Me[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=[\"hide-tail\"],d=[f[3]];else if(2===y)u=[\"halfarrow-left\",\"halfarrow-right\"],d=[\"xMinYMin\",\"xMaxYMin\"];else{if(3!==y)throw new Error(\"Correct katexImagesData or update code here to support\\n \"+y+\" children.\");u=[\"brace-left\",\"brace-center\",\"brace-right\"],d=[\"xMinYMin\",\"xMidYMin\",\"xMaxYMin\"]}for(var w=0;w<y;w++){var k=new L(g[w]),S=new R([k],{width:\"400em\",height:b+\"em\",viewBox:\"0 0 \"+r+\" \"+v,preserveAspectRatio:d[w]+\" slice\"}),z=Lt.makeSvgSpan([u[w]],[S],e);if(1===y)return{span:z,minWidth:x,height:b};z.style.height=b+\"em\",p.push(z)}return{span:Lt.makeSpan([\"stretchy\"],p,e),minWidth:x,height:b}}(),a=r.span,n=r.minWidth,o=r.height;return a.height=o,a.style.height=o+\"em\",n>0&&(a.style.minWidth=n+\"em\"),a},Ce=function(t,e){var r,a,n,o=Pt(t,\"supsub\");o?(r=(a=Ht(o.base,\"accent\")).base,o.base=r,n=function(t){if(t instanceof N)return t;throw new Error(\"Expected span<HtmlDomNode> but got \"+String(t)+\".\")}(he(o,e)),o.base=a):r=(a=Ht(t,\"accent\")).base;var i=he(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=function(t){if(t instanceof E)return t;throw new Error(\"Expected symbolNode but got \"+String(t)+\".\")}(he(h,e.havingCrampedStyle())).skew}var l,m=Math.min(i.height,e.fontMetrics().xHeight);if(a.isStretchy)l=qe(a,e),l=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:i},{type:\"elem\",elem:l,wrapperClasses:[\"svg-align\"],wrapperStyle:s>0?{width:\"calc(100% - \"+2*s+\"em)\",marginLeft:2*s+\"em\"}:void 0}]},e);else{var u,d;\"\\\\vec\"===a.label?(u=Lt.staticSvg(\"vec\",e),d=Lt.svgData.vec[1]):((u=Lt.makeSymbol(a.label,\"Main-Regular\",a.mode,e)).italic=0,d=u.width),l=Lt.makeSpan([\"accent-body\"],[u]);var p=\"\\\\textcircled\"===a.label;p&&(l.classes.push(\"accent-full\"),m=i.height);var f=s;p||(f-=d/2),l.style.left=f+\"em\",\"\\\\textcircled\"===a.label&&(l.style.top=\".2em\"),l=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:i},{type:\"kern\",size:-m},{type:\"elem\",elem:l}]},e)}var g=Lt.makeSpan([\"mord\",\"accent\"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]=\"mord\",n):g},Ne=function(t,e){var r=t.isStretchy?Be(t.label):new pe.MathNode(\"mo\",[fe(t.label,t.mode)]),a=new pe.MathNode(\"mover\",[ye(t.base,e),r]);return a.setAttribute(\"accent\",\"true\"),a},Ie=new RegExp([\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\",\"\\\\mathring\"].map(function(t){return\"\\\\\"+t}).join(\"|\"));$t({type:\"accent\",names:[\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\",\"\\\\mathring\",\"\\\\widecheck\",\"\\\\widehat\",\"\\\\widetilde\",\"\\\\overrightarrow\",\"\\\\overleftarrow\",\"\\\\Overrightarrow\",\"\\\\overleftrightarrow\",\"\\\\overgroup\",\"\\\\overlinesegment\",\"\\\\overleftharpoon\",\"\\\\overrightharpoon\"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!Ie.test(t.funcName),n=!a||\"\\\\widehat\"===t.funcName||\"\\\\widetilde\"===t.funcName||\"\\\\widecheck\"===t.funcName;return{type:\"accent\",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ce,mathmlBuilder:Ne}),$t({type:\"accent\",names:[\"\\\\'\",\"\\\\`\",\"\\\\^\",\"\\\\~\",\"\\\\=\",\"\\\\u\",\"\\\\.\",'\\\\\"',\"\\\\r\",\"\\\\H\",\"\\\\v\",\"\\\\textcircled\"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:\"accent\",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ce,mathmlBuilder:Ne}),$t({type:\"accentUnder\",names:[\"\\\\underleftarrow\",\"\\\\underrightarrow\",\"\\\\underleftrightarrow\",\"\\\\undergroup\",\"\\\\underlinesegment\",\"\\\\utilde\"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:\"accentUnder\",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=he(t.base,e),a=qe(t,e),n=\"\\\\utilde\"===t.label?.12:0,o=Lt.makeVList({positionType:\"bottom\",positionData:a.height+n,children:[{type:\"elem\",elem:a,wrapperClasses:[\"svg-align\"]},{type:\"kern\",size:n},{type:\"elem\",elem:r}]},e);return Lt.makeSpan([\"mord\",\"accentunder\"],[o],e)},mathmlBuilder:function(t,e){var r=Be(t.label),a=new pe.MathNode(\"munder\",[ye(t.base,e),r]);return a.setAttribute(\"accentunder\",\"true\"),a}});var Oe=function(t){var e=new pe.MathNode(\"mpadded\",t?[t]:[]);return e.setAttribute(\"width\",\"+0.6em\"),e.setAttribute(\"lspace\",\"0.3em\"),e};$t({type:\"xArrow\",names:[\"\\\\xleftarrow\",\"\\\\xrightarrow\",\"\\\\xLeftarrow\",\"\\\\xRightarrow\",\"\\\\xleftrightarrow\",\"\\\\xLeftrightarrow\",\"\\\\xhookleftarrow\",\"\\\\xhookrightarrow\",\"\\\\xmapsto\",\"\\\\xrightharpoondown\",\"\\\\xrightharpoonup\",\"\\\\xleftharpoondown\",\"\\\\xleftharpoonup\",\"\\\\xrightleftharpoons\",\"\\\\xleftrightharpoons\",\"\\\\xlongequal\",\"\\\\xtwoheadrightarrow\",\"\\\\xtwoheadleftarrow\",\"\\\\xtofrom\",\"\\\\xrightleftarrows\",\"\\\\xrightequilibrium\",\"\\\\xleftequilibrium\"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:\"xArrow\",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),o=Lt.wrapFragment(he(t.body,n,e),e);o.classes.push(\"x-arrow-pad\"),t.below&&(n=e.havingStyle(a.sub()),(r=Lt.wrapFragment(he(t.below,n,e),e)).classes.push(\"x-arrow-pad\"));var i,s=qe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((o.depth>.25||\"\\\\xleftequilibrium\"===t.label)&&(l-=o.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;i=Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:o,shift:l},{type:\"elem\",elem:s,shift:h},{type:\"elem\",elem:r,shift:m}]},e)}else i=Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:o,shift:l},{type:\"elem\",elem:s,shift:h}]},e);return i.children[0].children[0].children[1].classes.push(\"svg-align\"),Lt.makeSpan([\"mrel\",\"x-arrow\"],[i],e)},mathmlBuilder:function(t,e){var r,a=Be(t.label);if(t.body){var n=Oe(ye(t.body,e));if(t.below){var o=Oe(ye(t.below,e));r=new pe.MathNode(\"munderover\",[a,o,n])}else r=new pe.MathNode(\"mover\",[a,n])}else if(t.below){var i=Oe(ye(t.below,e));r=new pe.MathNode(\"munder\",[a,i])}else r=Oe(),r=new pe.MathNode(\"mover\",[a,r]);return r}}),$t({type:\"textord\",names:[\"\\\\@char\"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ht(e[0],\"ordgroup\").body,n=\"\",o=0;o<a.length;o++){n+=Ht(a[o],\"textord\").text}var s=parseInt(n);if(isNaN(s))throw new i(\"\\\\@char has non-numeric argument \"+n);return{type:\"textord\",mode:r.mode,text:String.fromCharCode(s)}}});var Ee=function(t,e){var r=ae(t.body,e.withColor(t.color),!1);return Lt.makeFragment(r)},Re=function(t,e){var r=ve(t.body,e.withColor(t.color)),a=new pe.MathNode(\"mstyle\",r);return a.setAttribute(\"mathcolor\",t.color),a};$t({type:\"color\",names:[\"\\\\textcolor\"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:[\"color\",\"original\"]},handler:function(t,e){var r=t.parser,a=Ht(e[0],\"color-token\").color,n=e[1];return{type:\"color\",mode:r.mode,color:a,body:Kt(n)}},htmlBuilder:Ee,mathmlBuilder:Re}),$t({type:\"color\",names:[\"\\\\color\"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:[\"color\"]},handler:function(t,e){var r=t.parser,a=t.breakOnTokenText,n=Ht(e[0],\"color-token\").color,o=r.parseExpression(!0,a);return{type:\"color\",mode:r.mode,color:n,body:o}},htmlBuilder:Ee,mathmlBuilder:Re}),$t({type:\"cr\",names:[\"\\\\cr\",\"\\\\newline\"],props:{numArgs:0,numOptionalArgs:1,argTypes:[\"size\"],allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=r[0],i=\"\\\\cr\"===n,s=!1;return i||(s=!a.settings.displayMode||!a.settings.useStrictBehavior(\"newLineInDisplayMode\",\"In LaTeX, \\\\\\\\ or \\\\newline does nothing in display mode\")),{type:\"cr\",mode:a.mode,newLine:s,newRow:i,size:o&&Ht(o,\"size\").value}},htmlBuilder:function(t,e){if(t.newRow)throw new i(\"\\\\cr valid only within a tabular/array environment\");var r=Lt.makeSpan([\"mspace\"],[],e);return t.newLine&&(r.classes.push(\"newline\"),t.size&&(r.style.marginTop=zt(t.size,e)+\"em\")),r},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mspace\");return t.newLine&&(r.setAttribute(\"linebreak\",\"newline\"),t.size&&r.setAttribute(\"height\",zt(t.size,e)+\"em\")),r}});var Le=function(t,e,r){var a=V(_.math[t]&&_.math[t].replace||t,e,r);if(!a)throw new Error(\"Unsupported symbol \"+t+\" and font size \"+e+\".\");return a},He=function(t,e,r,a){var n=r.havingBaseStyle(e),o=Lt.makeSpan(a.concat(n.sizingClasses(r)),[t],r),i=n.sizeMultiplier/r.sizeMultiplier;return o.height*=i,o.depth*=i,o.maxFontSize=n.sizeMultiplier,o},Pe=function(t,e,r){var a=e.havingBaseStyle(r),n=(1-e.sizeMultiplier/a.sizeMultiplier)*e.fontMetrics().axisHeight;t.classes.push(\"delimcenter\"),t.style.top=n+\"em\",t.height-=n,t.depth+=n},De=function(t,e,r,a,n,o){var i=function(t,e,r,a){return Lt.makeSymbol(t,\"Size\"+e+\"-Regular\",r,a)}(t,e,n,a),s=He(Lt.makeSpan([\"delimsizing\",\"size\"+e],[i],a),w.TEXT,a,o);return r&&Pe(s,a,w.TEXT),s},Fe=function(t,e,r){var a;return a=\"Size1-Regular\"===e?\"delim-size1\":\"delim-size4\",{type:\"elem\",elem:Lt.makeSpan([\"delimsizinginner\",a],[Lt.makeSpan([],[Lt.makeSymbol(t,e,r)])])}},Ve=function(t,e,r,a,n,o){var i,s,h,l;i=h=l=t,s=null;var m=\"Size1-Regular\";\"\\\\uparrow\"===t?h=l=\"\\u23d0\":\"\\\\Uparrow\"===t?h=l=\"\\u2016\":\"\\\\downarrow\"===t?i=h=\"\\u23d0\":\"\\\\Downarrow\"===t?i=h=\"\\u2016\":\"\\\\updownarrow\"===t?(i=\"\\\\uparrow\",h=\"\\u23d0\",l=\"\\\\downarrow\"):\"\\\\Updownarrow\"===t?(i=\"\\\\Uparrow\",h=\"\\u2016\",l=\"\\\\Downarrow\"):\"[\"===t||\"\\\\lbrack\"===t?(i=\"\\u23a1\",h=\"\\u23a2\",l=\"\\u23a3\",m=\"Size4-Regular\"):\"]\"===t||\"\\\\rbrack\"===t?(i=\"\\u23a4\",h=\"\\u23a5\",l=\"\\u23a6\",m=\"Size4-Regular\"):\"\\\\lfloor\"===t||\"\\u230a\"===t?(h=i=\"\\u23a2\",l=\"\\u23a3\",m=\"Size4-Regular\"):\"\\\\lceil\"===t||\"\\u2308\"===t?(i=\"\\u23a1\",h=l=\"\\u23a2\",m=\"Size4-Regular\"):\"\\\\rfloor\"===t||\"\\u230b\"===t?(h=i=\"\\u23a5\",l=\"\\u23a6\",m=\"Size4-Regular\"):\"\\\\rceil\"===t||\"\\u2309\"===t?(i=\"\\u23a4\",h=l=\"\\u23a5\",m=\"Size4-Regular\"):\"(\"===t||\"\\\\lparen\"===t?(i=\"\\u239b\",h=\"\\u239c\",l=\"\\u239d\",m=\"Size4-Regular\"):\")\"===t||\"\\\\rparen\"===t?(i=\"\\u239e\",h=\"\\u239f\",l=\"\\u23a0\",m=\"Size4-Regular\"):\"\\\\{\"===t||\"\\\\lbrace\"===t?(i=\"\\u23a7\",s=\"\\u23a8\",l=\"\\u23a9\",h=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\}\"===t||\"\\\\rbrace\"===t?(i=\"\\u23ab\",s=\"\\u23ac\",l=\"\\u23ad\",h=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\lgroup\"===t||\"\\u27ee\"===t?(i=\"\\u23a7\",l=\"\\u23a9\",h=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\rgroup\"===t||\"\\u27ef\"===t?(i=\"\\u23ab\",l=\"\\u23ad\",h=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\lmoustache\"===t||\"\\u23b0\"===t?(i=\"\\u23a7\",l=\"\\u23ad\",h=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\rmoustache\"!==t&&\"\\u23b1\"!==t||(i=\"\\u23ab\",l=\"\\u23a9\",h=\"\\u23aa\",m=\"Size4-Regular\");var c=Le(i,m,n),u=c.height+c.depth,d=Le(h,m,n),p=d.height+d.depth,f=Le(l,m,n),g=f.height+f.depth,x=0,v=1;if(null!==s){var b=Le(s,m,n);x=b.height+b.depth,v=2}var y=u+g+x,k=Math.ceil((e-y)/(v*p)),S=y+k*v*p,z=a.fontMetrics().axisHeight;r&&(z*=a.sizeMultiplier);var M=S/2-z,T=[];if(T.push(Fe(l,m,n)),null===s)for(var A=0;A<k;A++)T.push(Fe(h,m,n));else{for(var B=0;B<k;B++)T.push(Fe(h,m,n));T.push(Fe(s,m,n));for(var q=0;q<k;q++)T.push(Fe(h,m,n))}T.push(Fe(i,m,n));var C=a.havingBaseStyle(w.TEXT),N=Lt.makeVList({positionType:\"bottom\",positionData:M,children:T},C);return He(Lt.makeSpan([\"delimsizing\",\"mult\"],[N],C),w.TEXT,a,o)},Ue=function(t,e,r,a){var n;\"sqrtTall\"===t&&(n=\"M702 80H400000v40H742v\"+(r-54-80)+\"l-4 4-4 4c-.667.7\\n-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h-12l-28-84c-16.667-52-96.667\\n-294.333-240-727l-212 -643 -85 170c-4-3.333-8.333-7.667-13 -13l-13-13l77-155\\n 77-156c66 199.333 139 419.667 219 661 l218 661zM702 80H400000v40H742z\");var o=new L(t,n),i=new R([o],{width:\"400em\",height:e+\"em\",viewBox:\"0 0 400000 \"+r,preserveAspectRatio:\"xMinYMin slice\"});return Lt.makeSvgSpan([\"hide-tail\"],[i],a)},Ge=[\"(\",\"\\\\lparen\",\")\",\"\\\\rparen\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\u230a\",\"\\u230b\",\"\\\\lceil\",\"\\\\rceil\",\"\\u2308\",\"\\u2309\",\"\\\\surd\"],Xe=[\"\\\\uparrow\",\"\\\\downarrow\",\"\\\\updownarrow\",\"\\\\Uparrow\",\"\\\\Downarrow\",\"\\\\Updownarrow\",\"|\",\"\\\\|\",\"\\\\vert\",\"\\\\Vert\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\u27ee\",\"\\u27ef\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"\\u23b0\",\"\\u23b1\"],Ye=[\"<\",\">\",\"\\\\langle\",\"\\\\rangle\",\"/\",\"\\\\backslash\",\"\\\\lt\",\"\\\\gt\"],_e=[0,1.2,1.8,2.4,3],We=[{type:\"small\",style:w.SCRIPTSCRIPT},{type:\"small\",style:w.SCRIPT},{type:\"small\",style:w.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4}],je=[{type:\"small\",style:w.SCRIPTSCRIPT},{type:\"small\",style:w.SCRIPT},{type:\"small\",style:w.TEXT},{type:\"stack\"}],$e=[{type:\"small\",style:w.SCRIPTSCRIPT},{type:\"small\",style:w.SCRIPT},{type:\"small\",style:w.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4},{type:\"stack\"}],Ze=function(t){if(\"small\"===t.type)return\"Main-Regular\";if(\"large\"===t.type)return\"Size\"+t.size+\"-Regular\";if(\"stack\"===t.type)return\"Size4-Regular\";throw new Error(\"Add support for delim type '\"+t.type+\"' here.\")},Ke=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);n<r.length&&\"stack\"!==r[n].type;n++){var o=Le(t,Ze(r[n]),\"math\"),i=o.height+o.depth;if(\"small\"===r[n].type&&(i*=a.havingBaseStyle(r[n].style).sizeMultiplier),i>e)return r[n]}return r[r.length-1]},Je=function(t,e,r,a,n,o){var i;\"<\"===t||\"\\\\lt\"===t||\"\\u27e8\"===t?t=\"\\\\langle\":\">\"!==t&&\"\\\\gt\"!==t&&\"\\u27e9\"!==t||(t=\"\\\\rangle\"),i=c.contains(Ye,t)?We:c.contains(Ge,t)?$e:je;var s=Ke(t,e,i,a);return\"small\"===s.type?function(t,e,r,a,n,o){var i=Lt.makeSymbol(t,\"Main-Regular\",n,a),s=He(i,e,a,o);return r&&Pe(s,a,e),s}(t,s.style,r,a,n,o):\"large\"===s.type?De(t,s.size,r,a,n,o):Ve(t,e,r,a,n,o)},Qe=function(t,e){var r,a,n=e.havingBaseSizing(),o=Ke(\"\\\\surd\",t*n.sizeMultiplier,$e,n),i=n.sizeMultiplier,s=0,h=0,l=0;return\"small\"===o.type?(t<1?i=1:t<1.4&&(i=.7),h=1/i,(r=Ue(\"sqrtMain\",s=1.08/i,l=1080,e)).style.minWidth=\"0.853em\",a=.833/i):\"large\"===o.type?(l=1080*_e[o.size],h=_e[o.size]/i,s=(_e[o.size]+.08)/i,(r=Ue(\"sqrtSize\"+o.size,s,l,e)).style.minWidth=\"1.02em\",a=1/i):(s=t+.08,h=t,l=Math.floor(1e3*t)+80,(r=Ue(\"sqrtTall\",s,l,e)).style.minWidth=\"0.742em\",a=1.056),r.height=h,r.style.height=s+\"em\",{span:r,advanceWidth:a,ruleWidth:e.fontMetrics().sqrtRuleThickness*i}},tr=function(t,e,r,a,n){if(\"<\"===t||\"\\\\lt\"===t||\"\\u27e8\"===t?t=\"\\\\langle\":\">\"!==t&&\"\\\\gt\"!==t&&\"\\u27e9\"!==t||(t=\"\\\\rangle\"),c.contains(Ge,t)||c.contains(Ye,t))return De(t,e,!1,r,a,n);if(c.contains(Xe,t))return Ve(t,_e[e],!1,r,a,n);throw new i(\"Illegal delimiter: '\"+t+\"'\")},er=Je,rr=function(t,e,r,a,n,o){var i=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-i,r+i),l=Math.max(h/500*901,2*h-s);return Je(t,l,!0,a,n,o)},ar={\"\\\\bigl\":{mclass:\"mopen\",size:1},\"\\\\Bigl\":{mclass:\"mopen\",size:2},\"\\\\biggl\":{mclass:\"mopen\",size:3},\"\\\\Biggl\":{mclass:\"mopen\",size:4},\"\\\\bigr\":{mclass:\"mclose\",size:1},\"\\\\Bigr\":{mclass:\"mclose\",size:2},\"\\\\biggr\":{mclass:\"mclose\",size:3},\"\\\\Biggr\":{mclass:\"mclose\",size:4},\"\\\\bigm\":{mclass:\"mrel\",size:1},\"\\\\Bigm\":{mclass:\"mrel\",size:2},\"\\\\biggm\":{mclass:\"mrel\",size:3},\"\\\\Biggm\":{mclass:\"mrel\",size:4},\"\\\\big\":{mclass:\"mord\",size:1},\"\\\\Big\":{mclass:\"mord\",size:2},\"\\\\bigg\":{mclass:\"mord\",size:3},\"\\\\Bigg\":{mclass:\"mord\",size:4}},nr=[\"(\",\"\\\\lparen\",\")\",\"\\\\rparen\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\u230a\",\"\\u230b\",\"\\\\lceil\",\"\\\\rceil\",\"\\u2308\",\"\\u2309\",\"<\",\">\",\"\\\\langle\",\"\\u27e8\",\"\\\\rangle\",\"\\u27e9\",\"\\\\lt\",\"\\\\gt\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\u27ee\",\"\\u27ef\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"\\u23b0\",\"\\u23b1\",\"/\",\"\\\\backslash\",\"|\",\"\\\\vert\",\"\\\\|\",\"\\\\Vert\",\"\\\\uparrow\",\"\\\\Uparrow\",\"\\\\downarrow\",\"\\\\Downarrow\",\"\\\\updownarrow\",\"\\\\Updownarrow\",\".\"];function or(t,e){var r=Ft(t);if(r&&c.contains(nr,r.text))return r;throw new i(\"Invalid delimiter: '\"+(r?r.text:JSON.stringify(t))+\"' after '\"+e.funcName+\"'\",t)}function ir(t){if(!t.body)throw new Error(\"Bug: The leftright ParseNode wasn't fully parsed.\")}$t({type:\"delimsizing\",names:[\"\\\\bigl\",\"\\\\Bigl\",\"\\\\biggl\",\"\\\\Biggl\",\"\\\\bigr\",\"\\\\Bigr\",\"\\\\biggr\",\"\\\\Biggr\",\"\\\\bigm\",\"\\\\Bigm\",\"\\\\biggm\",\"\\\\Biggm\",\"\\\\big\",\"\\\\Big\",\"\\\\bigg\",\"\\\\Bigg\"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t);return{type:\"delimsizing\",mode:t.parser.mode,size:ar[t.funcName].size,mclass:ar[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return\".\"===t.delim?Lt.makeSpan([t.mclass]):tr(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];\".\"!==t.delim&&e.push(fe(t.delim,t.mode));var r=new pe.MathNode(\"mo\",e);return\"mopen\"===t.mclass||\"mclose\"===t.mclass?r.setAttribute(\"fence\",\"true\"):r.setAttribute(\"fence\",\"false\"),r}}),$t({type:\"leftright-right\",names:[\"\\\\right\"],props:{numArgs:1},handler:function(t,e){return{type:\"leftright-right\",mode:t.parser.mode,delim:or(e[0],t).text}}}),$t({type:\"leftright\",names:[\"\\\\left\"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect(\"\\\\right\",!1);var o=Ht(a.parseFunction(),\"leftright-right\");return{type:\"leftright\",mode:a.mode,body:n,left:r.text,right:o.delim}},htmlBuilder:function(t,e){ir(t);for(var r,a,n=ae(t.body,e,!0,[\"mopen\",\"mclose\"]),o=0,i=0,s=!1,h=0;h<n.length;h++)n[h].isMiddle?s=!0:(o=Math.max(n[h].height,o),i=Math.max(n[h].depth,i));if(o*=e.sizeMultiplier,i*=e.sizeMultiplier,r=\".\"===t.left?se(e,[\"mopen\"]):rr(t.left,o,i,e,t.mode,[\"mopen\"]),n.unshift(r),s)for(var l=1;l<n.length;l++){var m=n[l].isMiddle;m&&(n[l]=rr(m.delim,o,i,m.options,t.mode,[]))}return a=\".\"===t.right?se(e,[\"mclose\"]):rr(t.right,o,i,e,t.mode,[\"mclose\"]),n.push(a),Lt.makeSpan([\"minner\"],n,e)},mathmlBuilder:function(t,e){ir(t);var r=ve(t.body,e);if(\".\"!==t.left){var a=new pe.MathNode(\"mo\",[fe(t.left,t.mode)]);a.setAttribute(\"fence\",\"true\"),r.unshift(a)}if(\".\"!==t.right){var n=new pe.MathNode(\"mo\",[fe(t.right,t.mode)]);n.setAttribute(\"fence\",\"true\"),r.push(n)}return ge(r)}}),$t({type:\"middle\",names:[\"\\\\middle\"],props:{numArgs:1},handler:function(t,e){var r=or(e[0],t);if(!t.parser.leftrightDepth)throw new i(\"\\\\middle without preceding \\\\left\",r);return{type:\"middle\",mode:t.parser.mode,delim:r.text}},htmlBuilder:function(t,e){var r;if(\".\"===t.delim)r=se(e,[]);else{r=tr(t.delim,1,e,t.mode,[]);var a={delim:t.delim,options:e};r.isMiddle=a}return r},mathmlBuilder:function(t,e){var r=\"\\\\vert\"===t.delim||\"|\"===t.delim?fe(\"|\",\"text\"):fe(t.delim,t.mode),a=new pe.MathNode(\"mo\",[r]);return a.setAttribute(\"fence\",\"true\"),a.setAttribute(\"lspace\",\"0.05em\"),a.setAttribute(\"rspace\",\"0.05em\"),a}});var sr=function(t,e){var r,a,n=Lt.wrapFragment(he(t.body,e),e),o=t.label.substr(1),i=e.sizeMultiplier,s=0,h=c.isCharacterBox(t.body);if(\"sout\"===o)(r=Lt.makeSpan([\"stretchy\",\"sout\"])).height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else{/cancel/.test(o)?h||n.classes.push(\"cancel-pad\"):n.classes.push(\"boxpad\");var l=0;l=/box/.test(o)?\"colorbox\"===o?.3:.34:h?.2:0,r=Ae(n,o,l,e),s=n.depth+l,t.backgroundColor&&(r.style.backgroundColor=t.backgroundColor,t.borderColor&&(r.style.borderColor=t.borderColor))}return a=t.backgroundColor?Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:r,shift:s},{type:\"elem\",elem:n,shift:0}]},e):Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:n,shift:0},{type:\"elem\",elem:r,shift:s,wrapperClasses:/cancel/.test(o)?[\"svg-align\"]:[]}]},e),/cancel/.test(o)&&(a.height=n.height,a.depth=n.depth),/cancel/.test(o)&&!h?Lt.makeSpan([\"mord\",\"cancel-lap\"],[a],e):Lt.makeSpan([\"mord\"],[a],e)},hr=function(t,e){var r=new pe.MathNode(t.label.indexOf(\"colorbox\")>-1?\"mpadded\":\"menclose\",[ye(t.body,e)]);switch(t.label){case\"\\\\cancel\":r.setAttribute(\"notation\",\"updiagonalstrike\");break;case\"\\\\bcancel\":r.setAttribute(\"notation\",\"downdiagonalstrike\");break;case\"\\\\sout\":r.setAttribute(\"notation\",\"horizontalstrike\");break;case\"\\\\fbox\":r.setAttribute(\"notation\",\"box\");break;case\"\\\\fcolorbox\":case\"\\\\colorbox\":if(r.setAttribute(\"width\",\"+6pt\"),r.setAttribute(\"height\",\"+6pt\"),r.setAttribute(\"lspace\",\"3pt\"),r.setAttribute(\"voffset\",\"3pt\"),\"\\\\fcolorbox\"===t.label){var a=e.fontMetrics().defaultRuleThickness;r.setAttribute(\"style\",\"border: \"+a+\"em solid \"+String(t.borderColor))}break;case\"\\\\xcancel\":r.setAttribute(\"notation\",\"updiagonalstrike downdiagonalstrike\")}return t.backgroundColor&&r.setAttribute(\"mathbackground\",t.backgroundColor),r};$t({type:\"enclose\",names:[\"\\\\colorbox\"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:[\"color\",\"text\"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=Ht(e[0],\"color-token\").color,i=e[1];return{type:\"enclose\",mode:a.mode,label:n,backgroundColor:o,body:i}},htmlBuilder:sr,mathmlBuilder:hr}),$t({type:\"enclose\",names:[\"\\\\fcolorbox\"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:[\"color\",\"color\",\"text\"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=Ht(e[0],\"color-token\").color,i=Ht(e[1],\"color-token\").color,s=e[2];return{type:\"enclose\",mode:a.mode,label:n,backgroundColor:i,borderColor:o,body:s}},htmlBuilder:sr,mathmlBuilder:hr}),$t({type:\"enclose\",names:[\"\\\\fbox\"],props:{numArgs:1,argTypes:[\"text\"],allowedInText:!0},handler:function(t,e){return{type:\"enclose\",mode:t.parser.mode,label:\"\\\\fbox\",body:e[0]}}}),$t({type:\"enclose\",names:[\"\\\\cancel\",\"\\\\bcancel\",\"\\\\xcancel\",\"\\\\sout\"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,o=e[0];return{type:\"enclose\",mode:a.mode,label:n,body:o}},htmlBuilder:sr,mathmlBuilder:hr});var lr={};function mr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,o=t.htmlBuilder,i=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h<r.length;++h)lr[r[h]]=s;o&&(Wt[e]=o),i&&(jt[e]=i)}function cr(t){var e=[];t.consumeSpaces();for(var r=t.nextToken.text;\"\\\\hline\"===r||\"\\\\hdashline\"===r;)t.consume(),e.push(\"\\\\hdashline\"===r),t.consumeSpaces(),r=t.nextToken.text;return e}function ur(t,e,r){var a=e.hskipBeforeAndAfter,n=e.addJot,o=e.cols,s=e.arraystretch,h=e.colSeparationType;if(t.gullet.beginGroup(),t.gullet.macros.set(\"\\\\\\\\\",\"\\\\cr\"),!s){var l=t.gullet.expandMacroAsText(\"\\\\arraystretch\");if(null==l)s=1;else if(!(s=parseFloat(l))||s<0)throw new i(\"Invalid \\\\arraystretch: \"+l)}var m=[],c=[m],u=[],d=[];for(d.push(cr(t));;){var p=t.parseExpression(!1,\"\\\\cr\");p={type:\"ordgroup\",mode:t.mode,body:p},r&&(p={type:\"styling\",mode:t.mode,style:r,body:[p]}),m.push(p);var f=t.nextToken.text;if(\"&\"===f)t.consume();else{if(\"\\\\end\"===f){1===m.length&&\"styling\"===p.type&&0===p.body[0].body.length&&c.pop(),d.length<c.length+1&&d.push([]);break}if(\"\\\\cr\"!==f)throw new i(\"Expected & or \\\\\\\\ or \\\\cr or \\\\end\",t.nextToken);var g=Ht(t.parseFunction(),\"cr\");u.push(g.size),d.push(cr(t)),m=[],c.push(m)}}return t.gullet.endGroup(),{type:\"array\",mode:t.mode,addJot:n,arraystretch:s,body:c,cols:o,rowGaps:u,hskipBeforeAndAfter:a,hLinesBeforeRow:d,colSeparationType:h}}function dr(t){return\"d\"===t.substr(0,1)?\"display\":\"text\"}var pr=function(t,e){var r,a,n=t.body.length,o=t.hLinesBeforeRow,s=0,h=new Array(n),l=[],m=1/e.fontMetrics().ptPerEm,u=5*m,d=12*m,p=3*m,f=t.arraystretch*d,g=.7*f,x=.3*f,v=0;function b(t){for(var e=0;e<t.length;++e)e>0&&(v+=.25),l.push({pos:v,isDashed:t[e]})}for(b(o[0]),r=0;r<t.body.length;++r){var y=t.body[r],w=g,k=x;s<y.length&&(s=y.length);var S=new Array(y.length);for(a=0;a<y.length;++a){var z=he(y[a],e);k<z.depth&&(k=z.depth),w<z.height&&(w=z.height),S[a]=z}var M=t.rowGaps[r],T=0;M&&(T=zt(M,e))>0&&(k<(T+=x)&&(k=T),T=0),t.addJot&&(k+=p),S.height=w,S.depth=k,v+=w,S.pos=v,v+=k+T,h[r]=S,b(o[r+1])}var A,B,q=v/2+e.fontMetrics().axisHeight,C=t.cols||[],N=[];for(a=0,B=0;a<s||B<C.length;++a,++B){for(var I=C[B]||{},O=!0;\"separator\"===I.type;){if(O||((A=Lt.makeSpan([\"arraycolsep\"],[])).style.width=e.fontMetrics().doubleRuleSep+\"em\",N.push(A)),\"|\"===I.separator){var E=Lt.makeSpan([\"vertical-separator\"],[],e);E.style.height=v+\"em\",E.style.verticalAlign=-(v-q)+\"em\",N.push(E)}else{if(\":\"!==I.separator)throw new i(\"Invalid separator type: \"+I.separator);var R=Lt.makeSpan([\"vertical-separator\",\"vs-dashed\"],[],e);R.style.height=v+\"em\",R.style.verticalAlign=-(v-q)+\"em\",N.push(R)}I=C[++B]||{},O=!1}if(!(a>=s)){var L=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(L=c.deflt(I.pregap,u))&&((A=Lt.makeSpan([\"arraycolsep\"],[])).style.width=L+\"em\",N.push(A));var H=[];for(r=0;r<n;++r){var P=h[r],D=P[a];if(D){var F=P.pos-q;D.depth=P.depth,D.height=P.height,H.push({type:\"elem\",elem:D,shift:F})}}H=Lt.makeVList({positionType:\"individualShift\",children:H},e),H=Lt.makeSpan([\"col-align-\"+(I.align||\"c\")],[H]),N.push(H),(a<s-1||t.hskipBeforeAndAfter)&&0!==(L=c.deflt(I.postgap,u))&&((A=Lt.makeSpan([\"arraycolsep\"],[])).style.width=L+\"em\",N.push(A))}}if(h=Lt.makeSpan([\"mtable\"],N),l.length>0){for(var V=Lt.makeLineSpan(\"hline\",e,.05),U=Lt.makeLineSpan(\"hdashline\",e,.05),G=[{type:\"elem\",elem:h,shift:0}];l.length>0;){var X=l.pop(),Y=X.pos-q;X.isDashed?G.push({type:\"elem\",elem:U,shift:Y}):G.push({type:\"elem\",elem:V,shift:Y})}h=Lt.makeVList({positionType:\"individualShift\",children:G},e)}return Lt.makeSpan([\"mord\"],[h],e)},fr={c:\"center \",l:\"left \",r:\"right \"},gr=function(t,e){var r=new pe.MathNode(\"mtable\",t.body.map(function(t){return new pe.MathNode(\"mtr\",t.map(function(t){return new pe.MathNode(\"mtd\",[ye(t,e)])}))})),a=.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute(\"rowspacing\",a+\"em\");var n=\"\",o=\"\";if(t.cols){var i=t.cols,s=\"\",h=!1,l=0,m=i.length;\"separator\"===i[0].type&&(n+=\"top \",l=1),\"separator\"===i[i.length-1].type&&(n+=\"bottom \",m-=1);for(var c=l;c<m;c++)\"align\"===i[c].type?(o+=fr[i[c].align],h&&(s+=\"none \"),h=!0):\"separator\"===i[c].type&&h&&(s+=\"|\"===i[c].separator?\"solid \":\"dashed \",h=!1);r.setAttribute(\"columnalign\",o.trim()),/[sd]/.test(s)&&r.setAttribute(\"columnlines\",s.trim())}if(\"align\"===t.colSeparationType){for(var u=t.cols||[],d=\"\",p=1;p<u.length;p++)d+=p%2?\"0em \":\"1em \";r.setAttribute(\"columnspacing\",d.trim())}else\"alignat\"===t.colSeparationType?r.setAttribute(\"columnspacing\",\"0em\"):r.setAttribute(\"columnspacing\",\"1em\");var f=\"\",g=t.hLinesBeforeRow;n+=g[0].length>0?\"left \":\"\",n+=g[g.length-1].length>0?\"right \":\"\";for(var x=1;x<g.length-1;x++)f+=0===g[x].length?\"none \":g[x][0]?\"dashed \":\"solid \";if(/[sd]/.test(f)&&r.setAttribute(\"rowlines\",f.trim()),\"\"===n)return r;var v=new pe.MathNode(\"menclose\",[r]);return v.setAttribute(\"notation\",n.trim()),v},xr=function(t,e){var r,a=[],n=ur(t.parser,{cols:a,addJot:!0},\"display\"),o=0,s={type:\"ordgroup\",mode:t.mode,body:[]},h=Pt(e[0],\"ordgroup\");if(h){for(var l=\"\",m=0;m<h.body.length;m++){l+=Ht(h.body[m],\"textord\").text}r=Number(l),o=2*r}var c=!o;n.body.forEach(function(t){for(var e=1;e<t.length;e+=2){var a=Ht(t[e],\"styling\");Ht(a.body[0],\"ordgroup\").body.unshift(s)}if(c)o<t.length&&(o=t.length);else{var n=t.length/2;if(r<n)throw new i(\"Too many math in a row: expected \"+r+\", but got \"+n,t[0])}});for(var u=0;u<o;++u){var d=\"r\",p=0;u%2==1?d=\"l\":u>0&&c&&(p=1),a[u]={type:\"align\",align:d,pregap:p,postgap:0}}return n.colSeparationType=c?\"align\":\"alignat\",n};mr({type:\"array\",names:[\"array\",\"darray\"],props:{numArgs:1},handler:function(t,e){var r={cols:(Ft(e[0])?[e[0]]:Ht(e[0],\"ordgroup\").body).map(function(t){var e=function(t){var e=Ft(t);if(!e)throw new Error(\"Expected node of symbol group type, but got \"+(t?\"node of type \"+t.type:String(t)));return e}(t).text;if(-1!==\"lcr\".indexOf(e))return{type:\"align\",align:e};if(\"|\"===e)return{type:\"separator\",separator:\"|\"};if(\":\"===e)return{type:\"separator\",separator:\":\"};throw new i(\"Unknown column alignment: \"+e,t)}),hskipBeforeAndAfter:!0};return ur(t.parser,r,dr(t.envName))},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:\"array\",names:[\"matrix\",\"pmatrix\",\"bmatrix\",\"Bmatrix\",\"vmatrix\",\"Vmatrix\"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:[\"(\",\")\"],bmatrix:[\"[\",\"]\"],Bmatrix:[\"\\\\{\",\"\\\\}\"],vmatrix:[\"|\",\"|\"],Vmatrix:[\"\\\\Vert\",\"\\\\Vert\"]}[t.envName],r=ur(t.parser,{hskipBeforeAndAfter:!1},dr(t.envName));return e?{type:\"leftright\",mode:t.mode,body:[r],left:e[0],right:e[1]}:r},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:\"array\",names:[\"cases\",\"dcases\"],props:{numArgs:0},handler:function(t){var e=ur(t.parser,{arraystretch:1.2,cols:[{type:\"align\",align:\"l\",pregap:0,postgap:1},{type:\"align\",align:\"l\",pregap:0,postgap:0}]},dr(t.envName));return{type:\"leftright\",mode:t.mode,body:[e],left:\"\\\\{\",right:\".\"}},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:\"array\",names:[\"aligned\"],props:{numArgs:0},handler:xr,htmlBuilder:pr,mathmlBuilder:gr}),mr({type:\"array\",names:[\"gathered\"],props:{numArgs:0},handler:function(t){return ur(t.parser,{cols:[{type:\"align\",align:\"c\"}],addJot:!0},\"display\")},htmlBuilder:pr,mathmlBuilder:gr}),mr({type:\"array\",names:[\"alignedat\"],props:{numArgs:1},handler:xr,htmlBuilder:pr,mathmlBuilder:gr}),$t({type:\"text\",names:[\"\\\\hline\",\"\\\\hdashline\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new i(t.funcName+\" valid only within array environment\")}});var vr=lr;$t({type:\"environment\",names:[\"\\\\begin\",\"\\\\end\"],props:{numArgs:1,argTypes:[\"text\"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if(\"ordgroup\"!==n.type)throw new i(\"Invalid environment name\",n);for(var o=\"\",s=0;s<n.body.length;++s)o+=Ht(n.body[s],\"textord\").text;if(\"\\\\begin\"===a){if(!vr.hasOwnProperty(o))throw new i(\"No such environment: \"+o,n);var h=vr[o],l=r.parseArguments(\"\\\\begin{\"+o+\"}\",h),m=l.args,c=l.optArgs,u={mode:r.mode,envName:o,parser:r},d=h.handler(u,m,c);r.expect(\"\\\\end\",!1);var p=r.nextToken,f=Ht(r.parseFunction(),\"environment\");if(f.name!==o)throw new i(\"Mismatch: \\\\begin{\"+o+\"} matched by \\\\end{\"+f.name+\"}\",p);return d}return{type:\"environment\",mode:r.mode,name:o,nameGroup:n}}});var br=Lt.makeSpan;function yr(t,e){var r=ae(t.body,e,!0);return br([t.mclass],r,e)}function wr(t,e){var r=ve(t.body,e);return pe.newDocumentFragment(r)}$t({type:\"mclass\",names:[\"\\\\mathord\",\"\\\\mathbin\",\"\\\\mathrel\",\"\\\\mathopen\",\"\\\\mathclose\",\"\\\\mathpunct\",\"\\\\mathinner\"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:\"mclass\",mode:r.mode,mclass:\"m\"+a.substr(5),body:Kt(n)}},htmlBuilder:yr,mathmlBuilder:wr});var kr=function(t){var e=\"ordgroup\"===t.type&&t.body.length?t.body[0]:t;return\"atom\"!==e.type||\"bin\"!==e.family&&\"rel\"!==e.family?\"mord\":\"m\"+e.family};$t({type:\"mclass\",names:[\"\\\\@binrel\"],props:{numArgs:2},handler:function(t,e){return{type:\"mclass\",mode:t.parser.mode,mclass:kr(e[0]),body:[e[1]]}}}),$t({type:\"mclass\",names:[\"\\\\stackrel\",\"\\\\overset\",\"\\\\underset\"],props:{numArgs:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,o=e[1],i=e[0];r=\"\\\\stackrel\"!==n?kr(o):\"mrel\";var s={type:\"op\",mode:o.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:\"\\\\stackrel\"!==n,body:Kt(o)},h={type:\"supsub\",mode:i.mode,base:s,sup:\"\\\\underset\"===n?null:i,sub:\"\\\\underset\"===n?i:null};return{type:\"mclass\",mode:a.mode,mclass:r,body:[h]}},htmlBuilder:yr,mathmlBuilder:wr});var Sr=function(t,e){var r=t.font,a=e.withFont(r);return he(t.body,a)},zr=function(t,e){var r=t.font,a=e.withFont(r);return ye(t.body,a)},Mr={\"\\\\Bbb\":\"\\\\mathbb\",\"\\\\bold\":\"\\\\mathbf\",\"\\\\frak\":\"\\\\mathfrak\",\"\\\\bm\":\"\\\\boldsymbol\"};$t({type:\"font\",names:[\"\\\\mathrm\",\"\\\\mathit\",\"\\\\mathbf\",\"\\\\mathnormal\",\"\\\\mathbb\",\"\\\\mathcal\",\"\\\\mathfrak\",\"\\\\mathscr\",\"\\\\mathsf\",\"\\\\mathtt\",\"\\\\Bbb\",\"\\\\bold\",\"\\\\frak\"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0],o=a;return o in Mr&&(o=Mr[o]),{type:\"font\",mode:r.mode,font:o.slice(1),body:n}},htmlBuilder:Sr,mathmlBuilder:zr}),$t({type:\"mclass\",names:[\"\\\\boldsymbol\",\"\\\\bm\"],props:{numArgs:1,greediness:2},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"mclass\",mode:r.mode,mclass:kr(a),body:[{type:\"font\",mode:r.mode,font:\"boldsymbol\",body:a}]}}}),$t({type:\"font\",names:[\"\\\\rm\",\"\\\\sf\",\"\\\\tt\",\"\\\\bf\",\"\\\\it\"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=t.breakOnTokenText,o=r.mode,i=r.parseExpression(!0,n);return{type:\"font\",mode:o,font:\"math\"+a.slice(1),body:{type:\"ordgroup\",mode:r.mode,body:i}}},htmlBuilder:Sr,mathmlBuilder:zr});var Tr=function(t,e){var r=e;return\"display\"===t?r=r.id>=w.SCRIPT.id?r.text():w.DISPLAY:\"text\"===t&&r.size===w.DISPLAY.size?r=w.TEXT:\"script\"===t?r=w.SCRIPT:\"scriptscript\"===t&&(r=w.SCRIPTSCRIPT),r},Ar=function(t,e){var r,a=Tr(t.size,e.style),n=a.fracNum(),o=a.fracDen();r=e.havingStyle(n);var i=he(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;i.height=i.height<s?s:i.height,i.depth=i.depth<h?h:i.depth}r=e.havingStyle(o);var l,m,c,u,d,p,f,g,x,v,b=he(t.denom,r,e);if(t.hasBarLine?(t.barSize?(m=zt(t.barSize,e),l=Lt.makeLineSpan(\"frac-line\",e,m)):l=Lt.makeLineSpan(\"frac-line\",e),m=l.height,c=l.height):(l=null,m=0,c=e.fontMetrics().defaultRuleThickness),a.size===w.DISPLAY.size||\"display\"===t.size?(u=e.fontMetrics().num1,d=m>0?3*c:7*c,p=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,d=c):(u=e.fontMetrics().num3,d=3*c),p=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-i.depth-(y+.5*m)<d&&(u+=d-(u-i.depth-(y+.5*m))),y-.5*m-(b.height-p)<d&&(p+=d-(y-.5*m-(b.height-p)));var k=-(y-.5*m);f=Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:b,shift:p},{type:\"elem\",elem:l,shift:k},{type:\"elem\",elem:i,shift:-u}]},e)}else{var S=u-i.depth-(b.height-p);S<d&&(u+=.5*(d-S),p+=.5*(d-S)),f=Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:b,shift:p},{type:\"elem\",elem:i,shift:-u}]},e)}return r=e.havingStyle(a),f.height*=r.sizeMultiplier/e.sizeMultiplier,f.depth*=r.sizeMultiplier/e.sizeMultiplier,g=a.size===w.DISPLAY.size?e.fontMetrics().delim1:e.fontMetrics().delim2,x=null==t.leftDelim?se(e,[\"mopen\"]):er(t.leftDelim,g,!0,e.havingStyle(a),t.mode,[\"mopen\"]),v=t.continued?Lt.makeSpan([]):null==t.rightDelim?se(e,[\"mclose\"]):er(t.rightDelim,g,!0,e.havingStyle(a),t.mode,[\"mclose\"]),Lt.makeSpan([\"mord\"].concat(r.sizingClasses(e)),[x,Lt.makeSpan([\"mfrac\"],[f]),v],e)},Br=function(t,e){var r=new pe.MathNode(\"mfrac\",[ye(t.numer,e),ye(t.denom,e)]);if(t.hasBarLine){if(t.barSize){var a=zt(t.barSize,e);r.setAttribute(\"linethickness\",a+\"em\")}}else r.setAttribute(\"linethickness\",\"0px\");var n=Tr(t.size,e.style);if(n.size!==e.style.size){r=new pe.MathNode(\"mstyle\",[r]);var o=n.size===w.DISPLAY.size?\"true\":\"false\";r.setAttribute(\"displaystyle\",o),r.setAttribute(\"scriptlevel\",\"0\")}if(null!=t.leftDelim||null!=t.rightDelim){var i=[];if(null!=t.leftDelim){var s=new pe.MathNode(\"mo\",[new pe.TextNode(t.leftDelim.replace(\"\\\\\",\"\"))]);s.setAttribute(\"fence\",\"true\"),i.push(s)}if(i.push(r),null!=t.rightDelim){var h=new pe.MathNode(\"mo\",[new pe.TextNode(t.rightDelim.replace(\"\\\\\",\"\"))]);h.setAttribute(\"fence\",\"true\"),i.push(h)}return ge(i)}return r};$t({type:\"genfrac\",names:[\"\\\\cfrac\",\"\\\\dfrac\",\"\\\\frac\",\"\\\\tfrac\",\"\\\\dbinom\",\"\\\\binom\",\"\\\\tbinom\",\"\\\\\\\\atopfrac\",\"\\\\\\\\bracefrac\",\"\\\\\\\\brackfrac\"],props:{numArgs:2,greediness:2},handler:function(t,e){var r,a=t.parser,n=t.funcName,o=e[0],i=e[1],s=null,h=null,l=\"auto\";switch(n){case\"\\\\cfrac\":case\"\\\\dfrac\":case\"\\\\frac\":case\"\\\\tfrac\":r=!0;break;case\"\\\\\\\\atopfrac\":r=!1;break;case\"\\\\dbinom\":case\"\\\\binom\":case\"\\\\tbinom\":r=!1,s=\"(\",h=\")\";break;case\"\\\\\\\\bracefrac\":r=!1,s=\"\\\\{\",h=\"\\\\}\";break;case\"\\\\\\\\brackfrac\":r=!1,s=\"[\",h=\"]\";break;default:throw new Error(\"Unrecognized genfrac command\")}switch(n){case\"\\\\cfrac\":case\"\\\\dfrac\":case\"\\\\dbinom\":l=\"display\";break;case\"\\\\tfrac\":case\"\\\\tbinom\":l=\"text\"}return{type:\"genfrac\",mode:a.mode,continued:\"\\\\cfrac\"===n,numer:o,denom:i,hasBarLine:r,leftDelim:s,rightDelim:h,size:l,barSize:null}},htmlBuilder:Ar,mathmlBuilder:Br}),$t({type:\"infix\",names:[\"\\\\over\",\"\\\\choose\",\"\\\\atop\",\"\\\\brace\",\"\\\\brack\"],props:{numArgs:0,infix:!0},handler:function(t){var e,r=t.parser,a=t.funcName,n=t.token;switch(a){case\"\\\\over\":e=\"\\\\frac\";break;case\"\\\\choose\":e=\"\\\\binom\";break;case\"\\\\atop\":e=\"\\\\\\\\atopfrac\";break;case\"\\\\brace\":e=\"\\\\\\\\bracefrac\";break;case\"\\\\brack\":e=\"\\\\\\\\brackfrac\";break;default:throw new Error(\"Unrecognized infix genfrac command\")}return{type:\"infix\",mode:r.mode,replaceWith:e,token:n}}});var qr=[\"display\",\"text\",\"script\",\"scriptscript\"],Cr=function(t){var e=null;return t.length>0&&(e=\".\"===(e=t)?null:e),e};$t({type:\"genfrac\",names:[\"\\\\genfrac\"],props:{numArgs:6,greediness:6,argTypes:[\"math\",\"math\",\"size\",\"text\",\"math\",\"math\"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],o=Pt(e[0],\"atom\");o&&(o=Dt(e[0],\"open\"));var i=o?Cr(o.text):null,s=Pt(e[1],\"atom\");s&&(s=Dt(e[1],\"close\"));var h,l=s?Cr(s.text):null,m=Ht(e[2],\"size\"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u=\"auto\",d=Pt(e[3],\"ordgroup\");if(d){if(d.body.length>0){var p=Ht(d.body[0],\"textord\");u=qr[Number(p.text)]}}else d=Ht(e[3],\"textord\"),u=qr[Number(d.text)];return{type:\"genfrac\",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:i,rightDelim:l,size:u}},htmlBuilder:Ar,mathmlBuilder:Br}),$t({type:\"infix\",names:[\"\\\\above\"],props:{numArgs:1,argTypes:[\"size\"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:\"infix\",mode:r.mode,replaceWith:\"\\\\\\\\abovefrac\",size:Ht(e[0],\"size\").value,token:a}}}),$t({type:\"genfrac\",names:[\"\\\\\\\\abovefrac\"],props:{numArgs:3,argTypes:[\"math\",\"size\",\"math\"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error(\"Expected non-null, but got \"+String(t));return t}(Ht(e[1],\"infix\").size),o=e[2],i=n.number>0;return{type:\"genfrac\",mode:r.mode,numer:a,denom:o,continued:!1,hasBarLine:i,barSize:n,leftDelim:null,rightDelim:null,size:\"auto\"}},htmlBuilder:Ar,mathmlBuilder:Br});var Nr=function(t,e){var r,a,n=e.style,o=Pt(t,\"supsub\");o?(r=o.sup?he(o.sup,e.havingStyle(n.sup()),e):he(o.sub,e.havingStyle(n.sub()),e),a=Ht(o.base,\"horizBrace\")):a=Ht(t,\"horizBrace\");var i,s=he(a.base,e.havingBaseStyle(w.DISPLAY)),h=qe(a,e);if(a.isOver?(i=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:s},{type:\"kern\",size:.1},{type:\"elem\",elem:h}]},e)).children[0].children[0].children[1].classes.push(\"svg-align\"):(i=Lt.makeVList({positionType:\"bottom\",positionData:s.depth+.1+h.height,children:[{type:\"elem\",elem:h},{type:\"kern\",size:.1},{type:\"elem\",elem:s}]},e)).children[0].children[0].children[0].classes.push(\"svg-align\"),r){var l=Lt.makeSpan([\"mord\",a.isOver?\"mover\":\"munder\"],[i],e);i=a.isOver?Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:l},{type:\"kern\",size:.2},{type:\"elem\",elem:r}]},e):Lt.makeVList({positionType:\"bottom\",positionData:l.depth+.2+r.height+r.depth,children:[{type:\"elem\",elem:r},{type:\"kern\",size:.2},{type:\"elem\",elem:l}]},e)}return Lt.makeSpan([\"mord\",a.isOver?\"mover\":\"munder\"],[i],e)};$t({type:\"horizBrace\",names:[\"\\\\overbrace\",\"\\\\underbrace\"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:\"horizBrace\",mode:r.mode,label:a,isOver:/^\\\\over/.test(a),base:e[0]}},htmlBuilder:Nr,mathmlBuilder:function(t,e){var r=Be(t.label);return new pe.MathNode(t.isOver?\"mover\":\"munder\",[ye(t.base,e),r])}}),$t({type:\"href\",names:[\"\\\\href\"],props:{numArgs:2,argTypes:[\"url\",\"original\"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ht(e[0],\"url\").url;return{type:\"href\",mode:r.mode,href:n,body:Kt(a)}},htmlBuilder:function(t,e){var r=ae(t.body,e,!1);return Lt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=be(t.body,e);return r instanceof ue||(r=new ue(\"mrow\",[r])),r.setAttribute(\"href\",t.href),r}}),$t({type:\"href\",names:[\"\\\\url\"],props:{numArgs:1,argTypes:[\"url\"],allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ht(e[0],\"url\").url,n=[],o=0;o<a.length;o++){var i=a[o];\"~\"===i&&(i=\"\\\\textasciitilde\"),n.push({type:\"textord\",mode:\"text\",text:i})}var s={type:\"text\",mode:r.mode,font:\"\\\\texttt\",body:n};return{type:\"href\",mode:r.mode,href:a,body:Kt(s)}}}),$t({type:\"htmlmathml\",names:[\"\\\\html@mathml\"],props:{numArgs:2,allowedInText:!0},handler:function(t,e){return{type:\"htmlmathml\",mode:t.parser.mode,html:Kt(e[0]),mathml:Kt(e[1])}},htmlBuilder:function(t,e){var r=ae(t.html,e,!1);return Lt.makeFragment(r)},mathmlBuilder:function(t,e){return be(t.mathml,e)}}),$t({type:\"kern\",names:[\"\\\\kern\",\"\\\\mkern\",\"\\\\hskip\",\"\\\\mskip\"],props:{numArgs:1,argTypes:[\"size\"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ht(e[0],\"size\");if(r.settings.strict){var o=\"m\"===a[1],i=\"mu\"===n.value.unit;o?(i||r.settings.reportNonstrict(\"mathVsTextUnits\",\"LaTeX's \"+a+\" supports only mu units, not \"+n.value.unit+\" units\"),\"math\"!==r.mode&&r.settings.reportNonstrict(\"mathVsTextUnits\",\"LaTeX's \"+a+\" works only in math mode\")):i&&r.settings.reportNonstrict(\"mathVsTextUnits\",\"LaTeX's \"+a+\" doesn't support mu units\")}return{type:\"kern\",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Lt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=zt(t.dimension,e);return new pe.SpaceNode(r)}}),$t({type:\"lap\",names:[\"\\\\mathllap\",\"\\\\mathrlap\",\"\\\\mathclap\"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:\"lap\",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;\"clap\"===t.alignment?(r=Lt.makeSpan([],[he(t.body,e)]),r=Lt.makeSpan([\"inner\"],[r],e)):r=Lt.makeSpan([\"inner\"],[he(t.body,e)]);var a=Lt.makeSpan([\"fix\"],[]),n=Lt.makeSpan([t.alignment],[r,a],e),o=Lt.makeSpan([\"strut\"]);return o.style.height=n.height+n.depth+\"em\",o.style.verticalAlign=-n.depth+\"em\",n.children.unshift(o),n=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:n}]},e),Lt.makeSpan([\"mord\"],[n],e)},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mpadded\",[ye(t.body,e)]);if(\"rlap\"!==t.alignment){var a=\"llap\"===t.alignment?\"-1\":\"-0.5\";r.setAttribute(\"lspace\",a+\"width\")}return r.setAttribute(\"width\",\"0px\"),r}}),$t({type:\"styling\",names:[\"\\\\(\",\"$\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1,consumeMode:\"math\"},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode(\"math\");var o=\"\\\\(\"===r?\"\\\\)\":\"$\",i=a.parseExpression(!1,o);return a.expect(o,!1),a.switchMode(n),a.consume(),{type:\"styling\",mode:a.mode,style:\"text\",body:i}}}),$t({type:\"text\",names:[\"\\\\)\",\"\\\\]\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new i(\"Mismatched \"+t.funcName)}});var Ir=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};$t({type:\"mathchoice\",names:[\"\\\\mathchoice\"],props:{numArgs:4},handler:function(t,e){return{type:\"mathchoice\",mode:t.parser.mode,display:Kt(e[0]),text:Kt(e[1]),script:Kt(e[2]),scriptscript:Kt(e[3])}},htmlBuilder:function(t,e){var r=Ir(t,e),a=ae(r,e,!1);return Lt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Ir(t,e);return be(r,e)}});var Or=[\"\\\\smallint\"],Er=function(t,e){var r,a,n,o=!1,i=Pt(t,\"supsub\");i?(r=i.sup,a=i.sub,n=Ht(i.base,\"op\"),o=!0):n=Ht(t,\"op\");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Or,n.name)&&(l=!0),n.symbol){var m=l?\"Size2-Regular\":\"Size1-Regular\",u=\"\";if(\"\\\\oiint\"!==n.name&&\"\\\\oiiint\"!==n.name||(u=n.name.substr(1),n.name=\"oiint\"===u?\"\\\\iint\":\"\\\\iiint\"),s=Lt.makeSymbol(n.name,m,\"math\",e,[\"mop\",\"op-symbol\",l?\"large-op\":\"small-op\"]),u.length>0){var d=s.italic,p=Lt.staticSvg(u+\"Size\"+(l?\"2\":\"1\"),e);s=Lt.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:s,shift:0},{type:\"elem\",elem:p,shift:l?.08:0}]},e),n.name=\"\\\\\"+u,s.classes.unshift(\"mop\"),s.italic=d}}else if(n.body){var f=ae(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]=\"mop\":s=Lt.makeSpan([\"mop\"],Lt.tryCombineChars(f),e)}else{for(var g=[],x=1;x<n.name.length;x++)g.push(Lt.mathsym(n.name[x],n.mode));s=Lt.makeSpan([\"mop\"],g,e)}var v=0,b=0;if((s instanceof E||\"\\\\oiint\"===n.name||\"\\\\oiiint\"===n.name)&&!n.suppressBaseShift&&(v=(s.height-s.depth)/2-e.fontMetrics().axisHeight,b=s.italic),o){var y,k,S;if(s=Lt.makeSpan([],[s]),r){var z=he(r,e.havingStyle(h.sup()),e);k={elem:z,kern:Math.max(e.fontMetrics().bigOpSpacing1,e.fontMetrics().bigOpSpacing3-z.depth)}}if(a){var M=he(a,e.havingStyle(h.sub()),e);y={elem:M,kern:Math.max(e.fontMetrics().bigOpSpacing2,e.fontMetrics().bigOpSpacing4-M.height)}}if(k&&y){var T=e.fontMetrics().bigOpSpacing5+y.elem.height+y.elem.depth+y.kern+s.depth+v;S=Lt.makeVList({positionType:\"bottom\",positionData:T,children:[{type:\"kern\",size:e.fontMetrics().bigOpSpacing5},{type:\"elem\",elem:y.elem,marginLeft:-b+\"em\"},{type:\"kern\",size:y.kern},{type:\"elem\",elem:s},{type:\"kern\",size:k.kern},{type:\"elem\",elem:k.elem,marginLeft:b+\"em\"},{type:\"kern\",size:e.fontMetrics().bigOpSpacing5}]},e)}else if(y){var A=s.height-v;S=Lt.makeVList({positionType:\"top\",positionData:A,children:[{type:\"kern\",size:e.fontMetrics().bigOpSpacing5},{type:\"elem\",elem:y.elem,marginLeft:-b+\"em\"},{type:\"kern\",size:y.kern},{type:\"elem\",elem:s}]},e)}else{if(!k)return s;var B=s.depth+v;S=Lt.makeVList({positionType:\"bottom\",positionData:B,children:[{type:\"elem\",elem:s},{type:\"kern\",size:k.kern},{type:\"elem\",elem:k.elem,marginLeft:b+\"em\"},{type:\"kern\",size:e.fontMetrics().bigOpSpacing5}]},e)}return Lt.makeSpan([\"mop\",\"op-limits\"],[S],e)}return v&&(s.style.position=\"relative\",s.style.top=v+\"em\"),s},Rr=function(t,e){var r;if(t.symbol)r=new ue(\"mo\",[fe(t.name,t.mode)]),c.contains(Or,t.name)&&r.setAttribute(\"largeop\",\"false\");else if(t.body)r=new ue(\"mo\",ve(t.body,e));else{r=new ue(\"mi\",[new de(t.name.slice(1))]);var a=new ue(\"mo\",[fe(\"\\u2061\",\"text\")]);r=t.parentIsSupSub?new ue(\"mo\",[r,a]):ce([r,a])}return r},Lr={\"\\u220f\":\"\\\\prod\",\"\\u2210\":\"\\\\coprod\",\"\\u2211\":\"\\\\sum\",\"\\u22c0\":\"\\\\bigwedge\",\"\\u22c1\":\"\\\\bigvee\",\"\\u22c2\":\"\\\\bigcap\",\"\\u22c3\":\"\\\\bigcup\",\"\\u2a00\":\"\\\\bigodot\",\"\\u2a01\":\"\\\\bigoplus\",\"\\u2a02\":\"\\\\bigotimes\",\"\\u2a04\":\"\\\\biguplus\",\"\\u2a06\":\"\\\\bigsqcup\"};$t({type:\"op\",names:[\"\\\\coprod\",\"\\\\bigvee\",\"\\\\bigwedge\",\"\\\\biguplus\",\"\\\\bigcap\",\"\\\\bigcup\",\"\\\\intop\",\"\\\\prod\",\"\\\\sum\",\"\\\\bigotimes\",\"\\\\bigoplus\",\"\\\\bigodot\",\"\\\\bigsqcup\",\"\\\\smallint\",\"\\u220f\",\"\\u2210\",\"\\u2211\",\"\\u22c0\",\"\\u22c1\",\"\\u22c2\",\"\\u22c3\",\"\\u2a00\",\"\\u2a01\",\"\\u2a02\",\"\\u2a04\",\"\\u2a06\"],props:{numArgs:0},handler:function(t,e){var r=t.parser,a=t.funcName;return 1===a.length&&(a=Lr[a]),{type:\"op\",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:Er,mathmlBuilder:Rr}),$t({type:\"op\",names:[\"\\\\mathop\"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"op\",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Kt(a)}},htmlBuilder:Er,mathmlBuilder:Rr});var Hr={\"\\u222b\":\"\\\\int\",\"\\u222c\":\"\\\\iint\",\"\\u222d\":\"\\\\iiint\",\"\\u222e\":\"\\\\oint\",\"\\u222f\":\"\\\\oiint\",\"\\u2230\":\"\\\\oiiint\"};function Pr(t,e,r){for(var a=ae(t,e,!1),n=e.sizeMultiplier/r.sizeMultiplier,o=0;o<a.length;o++){var i=a[o].classes.indexOf(\"sizing\");i<0?Array.prototype.push.apply(a[o].classes,e.sizingClasses(r)):a[o].classes[i+1]===\"reset-size\"+e.size&&(a[o].classes[i+1]=\"reset-size\"+r.size),a[o].height*=n,a[o].depth*=n}return Lt.makeFragment(a)}$t({type:\"op\",names:[\"\\\\arcsin\",\"\\\\arccos\",\"\\\\arctan\",\"\\\\arctg\",\"\\\\arcctg\",\"\\\\arg\",\"\\\\ch\",\"\\\\cos\",\"\\\\cosec\",\"\\\\cosh\",\"\\\\cot\",\"\\\\cotg\",\"\\\\coth\",\"\\\\csc\",\"\\\\ctg\",\"\\\\cth\",\"\\\\deg\",\"\\\\dim\",\"\\\\exp\",\"\\\\hom\",\"\\\\ker\",\"\\\\lg\",\"\\\\ln\",\"\\\\log\",\"\\\\sec\",\"\\\\sin\",\"\\\\sinh\",\"\\\\sh\",\"\\\\tan\",\"\\\\tanh\",\"\\\\tg\",\"\\\\th\"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:\"op\",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Er,mathmlBuilder:Rr}),$t({type:\"op\",names:[\"\\\\det\",\"\\\\gcd\",\"\\\\inf\",\"\\\\lim\",\"\\\\max\",\"\\\\min\",\"\\\\Pr\",\"\\\\sup\"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return{type:\"op\",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:Er,mathmlBuilder:Rr}),$t({type:\"op\",names:[\"\\\\int\",\"\\\\iint\",\"\\\\iiint\",\"\\\\oint\",\"\\\\oiint\",\"\\\\oiiint\",\"\\u222b\",\"\\u222c\",\"\\u222d\",\"\\u222e\",\"\\u222f\",\"\\u2230\"],props:{numArgs:0},handler:function(t){var e=t.parser,r=t.funcName;return 1===r.length&&(r=Hr[r]),{type:\"op\",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Er,mathmlBuilder:Rr}),$t({type:\"operatorname\",names:[\"\\\\operatorname\"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"operatorname\",mode:r.mode,body:Kt(a)}},htmlBuilder:function(t,e){if(t.body.length>0){for(var r=t.body.map(function(t){var e=t.text;return\"string\"==typeof e?{type:\"textord\",mode:t.mode,text:e}:t}),a=ae(r,e.withFont(\"mathrm\"),!0),n=0;n<a.length;n++){var o=a[n];o instanceof E&&(o.text=o.text.replace(/\\u2212/,\"-\").replace(/\\u2217/,\"*\"))}return Lt.makeSpan([\"mop\"],a,e)}return Lt.makeSpan([\"mop\"],[],e)},mathmlBuilder:function(t,e){for(var r=ve(t.body,e.withFont(\"mathrm\")),a=!0,n=0;n<r.length;n++){var o=r[n];if(o instanceof pe.SpaceNode);else if(o instanceof pe.MathNode)switch(o.type){case\"mi\":case\"mn\":case\"ms\":case\"mspace\":case\"mtext\":break;case\"mo\":var i=o.children[0];1===o.children.length&&i instanceof pe.TextNode?i.text=i.text.replace(/\\u2212/,\"-\").replace(/\\u2217/,\"*\"):a=!1;break;default:a=!1}else a=!1}if(a){var s=r.map(function(t){return t.toText()}).join(\"\");r=[new pe.TextNode(s)]}var h=new pe.MathNode(\"mi\",r);h.setAttribute(\"mathvariant\",\"normal\");var l=new pe.MathNode(\"mo\",[fe(\"\\u2061\",\"text\")]);return pe.newDocumentFragment([h,l])}}),Zt({type:\"ordgroup\",htmlBuilder:function(t,e){return t.semisimple?Lt.makeFragment(ae(t.body,e,!1)):Lt.makeSpan([\"mord\"],ae(t.body,e,!0),e)},mathmlBuilder:function(t,e){return be(t.body,e)}}),$t({type:\"overline\",names:[\"\\\\overline\"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"overline\",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=he(t.body,e.havingCrampedStyle()),a=Lt.makeLineSpan(\"overline-line\",e),n=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r},{type:\"kern\",size:3*a.height},{type:\"elem\",elem:a},{type:\"kern\",size:a.height}]},e);return Lt.makeSpan([\"mord\",\"overline\"],[n],e)},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mo\",[new pe.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var a=new pe.MathNode(\"mover\",[ye(t.body,e),r]);return a.setAttribute(\"accent\",\"true\"),a}}),$t({type:\"phantom\",names:[\"\\\\phantom\"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"phantom\",mode:r.mode,body:Kt(a)}},htmlBuilder:function(t,e){var r=ae(t.body,e.withPhantom(),!1);return Lt.makeFragment(r)},mathmlBuilder:function(t,e){var r=ve(t.body,e);return new pe.MathNode(\"mphantom\",r)}}),$t({type:\"hphantom\",names:[\"\\\\hphantom\"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"hphantom\",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Lt.makeSpan([],[he(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a<r.children.length;a++)r.children[a].height=0,r.children[a].depth=0;return r=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r}]},e),Lt.makeSpan([\"mord\"],[r],e)},mathmlBuilder:function(t,e){var r=ve(Kt(t.body),e),a=new pe.MathNode(\"mphantom\",r),n=new pe.MathNode(\"mpadded\",[a]);return n.setAttribute(\"height\",\"0px\"),n.setAttribute(\"depth\",\"0px\"),n}}),$t({type:\"vphantom\",names:[\"\\\\vphantom\"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[0];return{type:\"vphantom\",mode:r.mode,body:a}},htmlBuilder:function(t,e){var r=Lt.makeSpan([\"inner\"],[he(t.body,e.withPhantom())]),a=Lt.makeSpan([\"fix\"],[]);return Lt.makeSpan([\"mord\",\"rlap\"],[r,a],e)},mathmlBuilder:function(t,e){var r=ve(Kt(t.body),e),a=new pe.MathNode(\"mphantom\",r),n=new pe.MathNode(\"mpadded\",[a]);return n.setAttribute(\"width\",\"0px\"),n}});var Dr=[\"\\\\tiny\",\"\\\\sixptsize\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"],Fr=function(t,e){var r=e.havingSize(t.size);return Pr(t.body,r,e)};$t({type:\"sizing\",names:Dr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,o=n.parseExpression(!1,r);return{type:\"sizing\",mode:n.mode,size:Dr.indexOf(a)+1,body:o}},htmlBuilder:Fr,mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ve(t.body,r),n=new pe.MathNode(\"mstyle\",a);return n.setAttribute(\"mathsize\",r.sizeMultiplier+\"em\"),n}}),$t({type:\"raisebox\",names:[\"\\\\raisebox\"],props:{numArgs:2,argTypes:[\"size\",\"text\"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ht(e[0],\"size\").value,n=e[1];return{type:\"raisebox\",mode:r.mode,dy:a,body:n}},htmlBuilder:function(t,e){var r={type:\"text\",mode:t.mode,body:Kt(t.body),font:\"mathrm\"},a={type:\"sizing\",mode:t.mode,body:[r],size:6},n=Fr(a,e),o=zt(t.dy,e);return Lt.makeVList({positionType:\"shift\",positionData:-o,children:[{type:\"elem\",elem:n}]},e)},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mpadded\",[ye(t.body,e)]),a=t.dy.number+t.dy.unit;return r.setAttribute(\"voffset\",a),r}}),$t({type:\"rule\",names:[\"\\\\rule\"],props:{numArgs:2,numOptionalArgs:1,argTypes:[\"size\",\"size\",\"size\"]},handler:function(t,e,r){var a=t.parser,n=r[0],o=Ht(e[0],\"size\"),i=Ht(e[1],\"size\");return{type:\"rule\",mode:a.mode,shift:n&&Ht(n,\"size\").value,width:o.value,height:i.value}},htmlBuilder:function(t,e){var r=Lt.makeSpan([\"mord\",\"rule\"],[],e),a=zt(t.width,e),n=zt(t.height,e),o=t.shift?zt(t.shift,e):0;return r.style.borderRightWidth=a+\"em\",r.style.borderTopWidth=n+\"em\",r.style.bottom=o+\"em\",r.width=a,r.height=n+o,r.depth=-o,r.maxFontSize=1.125*n*e.sizeMultiplier,r},mathmlBuilder:function(t,e){var r=zt(t.width,e),a=zt(t.height,e),n=t.shift?zt(t.shift,e):0,o=e.color&&e.getColor()||\"black\",i=new pe.MathNode(\"mspace\");i.setAttribute(\"mathbackground\",o),i.setAttribute(\"width\",r+\"em\"),i.setAttribute(\"height\",a+\"em\");var s=new pe.MathNode(\"mpadded\",[i]);return n>=0?s.setAttribute(\"height\",\"+\"+n+\"em\"):(s.setAttribute(\"height\",n+\"em\"),s.setAttribute(\"depth\",\"+\"+-n+\"em\")),s.setAttribute(\"voffset\",n+\"em\"),s}}),$t({type:\"smash\",names:[\"\\\\smash\"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,o=!1,i=r[0]&&Ht(r[0],\"ordgroup\");if(i)for(var s=\"\",h=0;h<i.body.length;++h){if(\"t\"===(s=i.body[h].text))n=!0;else{if(\"b\"!==s){n=!1,o=!1;break}o=!0}}else n=!0,o=!0;var l=e[0];return{type:\"smash\",mode:a.mode,body:l,smashHeight:n,smashDepth:o}},htmlBuilder:function(t,e){var r=Lt.makeSpan([],[he(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var a=0;a<r.children.length;a++)r.children[a].height=0;if(t.smashDepth&&(r.depth=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].depth=0;var o=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r}]},e);return Lt.makeSpan([\"mord\"],[o],e)},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mpadded\",[ye(t.body,e)]);return t.smashHeight&&r.setAttribute(\"height\",\"0px\"),t.smashDepth&&r.setAttribute(\"depth\",\"0px\"),r}}),$t({type:\"sqrt\",names:[\"\\\\sqrt\"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=r[0],o=e[0];return{type:\"sqrt\",mode:a.mode,body:o,index:n}},htmlBuilder:function(t,e){var r=he(t.body,e.havingCrampedStyle());0===r.height&&(r.height=e.fontMetrics().xHeight),r=Lt.wrapFragment(r,e);var a=e.fontMetrics().defaultRuleThickness,n=a;e.style.id<w.TEXT.id&&(n=e.fontMetrics().xHeight);var o=a+n/4,i=r.height+r.depth+o+a,s=Qe(i,e),h=s.span,l=s.ruleWidth,m=s.advanceWidth,c=h.height-l;c>r.height+r.depth+o&&(o=(o+c-r.height-r.depth)/2);var u=h.height-r.height-o-l;r.style.paddingLeft=m+\"em\";var d=Lt.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r,wrapperClasses:[\"svg-align\"]},{type:\"kern\",size:-(r.height+u)},{type:\"elem\",elem:h},{type:\"kern\",size:l}]},e);if(t.index){var p=e.havingStyle(w.SCRIPTSCRIPT),f=he(t.index,p,e),g=.6*(d.height-d.depth),x=Lt.makeVList({positionType:\"shift\",positionData:-g,children:[{type:\"elem\",elem:f}]},e),v=Lt.makeSpan([\"root\"],[x]);return Lt.makeSpan([\"mord\",\"sqrt\"],[v,d],e)}return Lt.makeSpan([\"mord\",\"sqrt\"],[d],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new pe.MathNode(\"mroot\",[ye(r,e),ye(a,e)]):new pe.MathNode(\"msqrt\",[ye(r,e)])}});var Vr={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};$t({type:\"styling\",names:[\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,o=n.parseExpression(!0,r),i=a.slice(1,a.length-5);return{type:\"styling\",mode:n.mode,style:i,body:o}},htmlBuilder:function(t,e){var r=Vr[t.style],a=e.havingStyle(r).withFont(\"\");return Pr(t.body,a,e)},mathmlBuilder:function(t,e){var r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT}[t.style],a=e.havingStyle(r),n=ve(t.body,a),o=new pe.MathNode(\"mstyle\",n),i={display:[\"0\",\"true\"],text:[\"0\",\"false\"],script:[\"1\",\"false\"],scriptscript:[\"2\",\"false\"]}[t.style];return o.setAttribute(\"scriptlevel\",i[0]),o.setAttribute(\"displaystyle\",i[1]),o}});Zt({type:\"supsub\",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?\"op\"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Er:null:\"accent\"===r.type?c.isCharacterBox(r.base)?Ce:null:\"horizBrace\"===r.type&&!t.sub===r.isOver?Nr:null:null}(t,e);if(r)return r(t,e);var a,n,o,i=t.base,s=t.sup,h=t.sub,l=he(i,e),m=e.fontMetrics(),u=0,d=0,p=i&&c.isCharacterBox(i);if(s){var f=e.havingStyle(e.style.sup());a=he(s,f,e),p||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=he(h,g,e),p||(d=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}o=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+\"em\",y=null;if(n){var k=t.base&&\"op\"===t.base.type&&t.base.name&&(\"\\\\oiint\"===t.base.name||\"\\\\oiiint\"===t.base.name);(l instanceof E||k)&&(y=-l.italic+\"em\")}if(a&&n){u=Math.max(u,o,a.depth+.25*m.xHeight),d=Math.max(d,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-d)<S){d=S-(u-a.depth)+n.height;var z=.8*m.xHeight-(u-a.depth);z>0&&(u+=z,d-=z)}var M=[{type:\"elem\",elem:n,shift:d,marginRight:b,marginLeft:y},{type:\"elem\",elem:a,shift:-u,marginRight:b}];x=Lt.makeVList({positionType:\"individualShift\",children:M},e)}else if(n){d=Math.max(d,m.sub1,n.height-.8*m.xHeight);var T=[{type:\"elem\",elem:n,marginLeft:y,marginRight:b}];x=Lt.makeVList({positionType:\"shift\",positionData:d,children:T},e)}else{if(!a)throw new Error(\"supsub must have either sup or sub.\");u=Math.max(u,o,a.depth+.25*m.xHeight),x=Lt.makeVList({positionType:\"shift\",positionData:-u,children:[{type:\"elem\",elem:a,marginRight:b}]},e)}var A=ie(l,\"right\")||\"mord\";return Lt.makeSpan([A],[l,Lt.makeSpan([\"msupsub\"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Pt(t.base,\"horizBrace\");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),t.base&&\"op\"===t.base.type&&(t.base.parentIsSupSub=!0);var o,i=[ye(t.base,e)];if(t.sub&&i.push(ye(t.sub,e)),t.sup&&i.push(ye(t.sup,e)),a)o=r?\"mover\":\"munder\";else if(t.sub)if(t.sup){var s=t.base;o=s&&\"op\"===s.type&&s.limits&&e.style===w.DISPLAY?\"munderover\":\"msubsup\"}else{var h=t.base;o=h&&\"op\"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?\"munder\":\"msub\"}else{var l=t.base;o=l&&\"op\"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?\"mover\":\"msup\"}return new pe.MathNode(o,i)}}),Zt({type:\"atom\",htmlBuilder:function(t,e){return Lt.mathsym(t.text,t.mode,e,[\"m\"+t.family])},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mo\",[fe(t.text,t.mode)]);if(\"bin\"===t.family){var a=xe(t,e);\"bold-italic\"===a&&r.setAttribute(\"mathvariant\",a)}else\"punct\"===t.family?r.setAttribute(\"separator\",\"true\"):\"open\"!==t.family&&\"close\"!==t.family||r.setAttribute(\"stretchy\",\"false\");return r}});var Ur={mi:\"italic\",mn:\"normal\",mtext:\"normal\"};Zt({type:\"mathord\",htmlBuilder:function(t,e){return Lt.makeOrd(t,e,\"mathord\")},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mi\",[fe(t.text,t.mode,e)]),a=xe(t,e)||\"italic\";return a!==Ur[r.type]&&r.setAttribute(\"mathvariant\",a),r}}),Zt({type:\"textord\",htmlBuilder:function(t,e){return Lt.makeOrd(t,e,\"textord\")},mathmlBuilder:function(t,e){var r,a=fe(t.text,t.mode,e),n=xe(t,e)||\"normal\";return r=\"text\"===t.mode?new pe.MathNode(\"mtext\",[a]):/[0-9]/.test(t.text)?new pe.MathNode(\"mn\",[a]):\"\\\\prime\"===t.text?new pe.MathNode(\"mo\",[a]):new pe.MathNode(\"mi\",[a]),n!==Ur[r.type]&&r.setAttribute(\"mathvariant\",n),r}});var Gr={\"\\\\nobreak\":\"nobreak\",\"\\\\allowbreak\":\"allowbreak\"},Xr={\" \":{},\"\\\\ \":{},\"~\":{className:\"nobreak\"},\"\\\\space\":{},\"\\\\nobreakspace\":{className:\"nobreak\"}};Zt({type:\"spacing\",htmlBuilder:function(t,e){if(Xr.hasOwnProperty(t.text)){var r=Xr[t.text].className||\"\";if(\"text\"===t.mode){var a=Lt.makeOrd(t,e,\"textord\");return a.classes.push(r),a}return Lt.makeSpan([\"mspace\",r],[Lt.mathsym(t.text,t.mode,e)],e)}if(Gr.hasOwnProperty(t.text))return Lt.makeSpan([\"mspace\",Gr[t.text]],[],e);throw new i('Unknown type of space \"'+t.text+'\"')},mathmlBuilder:function(t,e){if(!Xr.hasOwnProperty(t.text)){if(Gr.hasOwnProperty(t.text))return new pe.MathNode(\"mspace\");throw new i('Unknown type of space \"'+t.text+'\"')}return new pe.MathNode(\"mtext\",[new pe.TextNode(\"\\xa0\")])}});var Yr=function(){var t=new pe.MathNode(\"mtd\",[]);return t.setAttribute(\"width\",\"50%\"),t};Zt({type:\"tag\",mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mtable\",[new pe.MathNode(\"mtr\",[Yr(),new pe.MathNode(\"mtd\",[be(t.body,e)]),Yr(),new pe.MathNode(\"mtd\",[be(t.tag,e)])])]);return r.setAttribute(\"width\",\"100%\"),r}});var _r={\"\\\\text\":void 0,\"\\\\textrm\":\"textrm\",\"\\\\textsf\":\"textsf\",\"\\\\texttt\":\"texttt\",\"\\\\textnormal\":\"textrm\"},Wr={\"\\\\textbf\":\"textbf\",\"\\\\textmd\":\"textmd\"},jr={\"\\\\textit\":\"textit\",\"\\\\textup\":\"textup\"},$r=function(t,e){var r=t.font;return r?_r[r]?e.withTextFontFamily(_r[r]):Wr[r]?e.withTextFontWeight(Wr[r]):e.withTextFontShape(jr[r]):e};$t({type:\"text\",names:[\"\\\\text\",\"\\\\textrm\",\"\\\\textsf\",\"\\\\texttt\",\"\\\\textnormal\",\"\\\\textbf\",\"\\\\textmd\",\"\\\\textit\",\"\\\\textup\"],props:{numArgs:1,argTypes:[\"text\"],greediness:2,allowedInText:!0,consumeMode:\"text\"},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:\"text\",mode:r.mode,body:Kt(n),font:a}},htmlBuilder:function(t,e){var r=$r(t,e),a=ae(t.body,r,!0);return Lt.makeSpan([\"mord\",\"text\"],Lt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=$r(t,e);return be(t.body,r)}}),$t({type:\"underline\",names:[\"\\\\underline\"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:\"underline\",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=he(t.body,e),a=Lt.makeLineSpan(\"underline-line\",e),n=Lt.makeVList({positionType:\"top\",positionData:r.height,children:[{type:\"kern\",size:a.height},{type:\"elem\",elem:a},{type:\"kern\",size:3*a.height},{type:\"elem\",elem:r}]},e);return Lt.makeSpan([\"mord\",\"underline\"],[n],e)},mathmlBuilder:function(t,e){var r=new pe.MathNode(\"mo\",[new pe.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var a=new pe.MathNode(\"munder\",[ye(t.body,e),r]);return a.setAttribute(\"accentunder\",\"true\"),a}}),$t({type:\"verb\",names:[\"\\\\verb\"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new i(\"\\\\verb ended by end of line instead of matching delimiter\")},htmlBuilder:function(t,e){for(var r=Zr(t),a=[],n=e.havingStyle(e.style.text()),o=0;o<r.length;o++){var i=r[o];\"~\"===i&&(i=\"\\\\textasciitilde\"),a.push(Lt.makeSymbol(i,\"Typewriter-Regular\",t.mode,n,[\"mord\",\"texttt\"]))}return Lt.makeSpan([\"mord\",\"text\"].concat(n.sizingClasses(e)),Lt.tryCombineChars(a),n)},mathmlBuilder:function(t,e){var r=new pe.TextNode(Zr(t)),a=new pe.MathNode(\"mtext\",[r]);return a.setAttribute(\"mathvariant\",\"monospace\"),a}});var Zr=function(t){return t.body.replace(/ /g,t.star?\"\\u2423\":\"\\xa0\")},Kr=_t,Jr=new RegExp(\"^(\\\\\\\\[a-zA-Z@]+)[ \\r\\n\\t]*$\"),Qr=new RegExp(\"[\\u0300-\\u036f]+$\"),ta=\"([ \\r\\n\\t]+)|([!-\\\\[\\\\]-\\u2027\\u202a-\\ud7ff\\uf900-\\uffff][\\u0300-\\u036f]*|[\\ud800-\\udbff][\\udc00-\\udfff][\\u0300-\\u036f]*|\\\\\\\\verb\\\\*([^]).*?\\\\3|\\\\\\\\verb([^*a-zA-Z]).*?\\\\4|\\\\\\\\[a-zA-Z@]+[ \\r\\n\\t]*|\\\\\\\\[^\\ud800-\\udfff])\",ea=function(){function t(t,e){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=e,this.tokenRegex=new RegExp(ta,\"g\"),this.catcodes={\"%\":14}}var e=t.prototype;return e.setCatcode=function(t,e){this.catcodes[t]=e},e.lex=function(){var t=this.input,e=this.tokenRegex.lastIndex;if(e===t.length)return new n(\"EOF\",new a(this,e,e));var r=this.tokenRegex.exec(t);if(null===r||r.index!==e)throw new i(\"Unexpected character: '\"+t[e]+\"'\",new n(t[e],new a(this,e,e+1)));var o=r[2]||\" \";if(14===this.catcodes[o]){var s=t.indexOf(\"\\n\",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict(\"commentAtEnd\",\"% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)\")):this.tokenRegex.lastIndex=s+1,this.lex()}var h=o.match(Jr);return h&&(o=h[1]),new n(o,new a(this,e,this.tokenRegex.lastIndex))},t}(),ra=function(){function t(t,e){void 0===t&&(t={}),void 0===e&&(e={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=e,this.builtins=t,this.undefStack=[]}var e=t.prototype;return e.beginGroup=function(){this.undefStack.push({})},e.endGroup=function(){if(0===this.undefStack.length)throw new i(\"Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug\");var t=this.undefStack.pop();for(var e in t)t.hasOwnProperty(e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])},e.has=function(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)},e.get=function(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]},e.set=function(t,e,r){if(void 0===r&&(r=!1),r){for(var a=0;a<this.undefStack.length;a++)delete this.undefStack[a][t];this.undefStack.length>0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),aa={},na=aa;function oa(t,e){aa[t]=e}oa(\"\\\\@firstoftwo\",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),oa(\"\\\\@secondoftwo\",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),oa(\"\\\\@ifnextchar\",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),oa(\"\\\\@ifstar\",\"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\"),oa(\"\\\\TextOrMath\",function(t){var e=t.consumeArgs(2);return\"text\"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var ia={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};oa(\"\\\\char\",function(t){var e,r=t.popToken(),a=\"\";if(\"'\"===r.text)e=8,r=t.popToken();else if('\"'===r.text)e=16,r=t.popToken();else if(\"`\"===r.text)if(\"\\\\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if(\"EOF\"===r.text)throw new i(\"\\\\char` missing argument\");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=ia[r.text])||a>=e)throw new i(\"Invalid base-\"+e+\" digit \"+r.text);for(var n;null!=(n=ia[t.future().text])&&n<e;)a*=e,a+=n,t.popToken()}return\"\\\\@char{\"+a+\"}\"});var sa=function(t,e){var r=t.consumeArgs(1)[0];if(1!==r.length)throw new i(\"\\\\gdef's first argument must be a macro name\");var a=r[0].text,n=0;for(r=t.consumeArgs(1)[0];1===r.length&&\"#\"===r[0].text;){if(1!==(r=t.consumeArgs(1)[0]).length)throw new i('Invalid argument number length \"'+r.length+'\"');if(!/^[1-9]$/.test(r[0].text))throw new i('Invalid argument number \"'+r[0].text+'\"');if(n++,parseInt(r[0].text)!==n)throw new i('Argument number \"'+r[0].text+'\" out of order');r=t.consumeArgs(1)[0]}return t.macros.set(a,{tokens:r,numArgs:n},e),\"\"};oa(\"\\\\gdef\",function(t){return sa(t,!0)}),oa(\"\\\\def\",function(t){return sa(t,!1)}),oa(\"\\\\global\",function(t){var e=t.consumeArgs(1)[0];if(1!==e.length)throw new i(\"Invalid command after \\\\global\");var r=e[0].text;if(\"\\\\def\"===r)return sa(t,!0);throw new i(\"Invalid command '\"+r+\"' after \\\\global\")});var ha=function(t,e,r){var a=t.consumeArgs(1)[0];if(1!==a.length)throw new i(\"\\\\newcommand's first argument must be a macro name\");var n=a[0].text,o=t.isDefined(n);if(o&&!e)throw new i(\"\\\\newcommand{\"+n+\"} attempting to redefine \"+n+\"; use \\\\renewcommand\");if(!o&&!r)throw new i(\"\\\\renewcommand{\"+n+\"} when command \"+n+\" does not yet exist; use \\\\newcommand\");var s=0;if(1===(a=t.consumeArgs(1)[0]).length&&\"[\"===a[0].text){for(var h=\"\",l=t.expandNextToken();\"]\"!==l.text&&\"EOF\"!==l.text;)h+=l.text,l=t.expandNextToken();if(!h.match(/^\\s*[0-9]+\\s*$/))throw new i(\"Invalid number of arguments: \"+h);s=parseInt(h),a=t.consumeArgs(1)[0]}return t.macros.set(n,{tokens:a,numArgs:s}),\"\"};oa(\"\\\\newcommand\",function(t){return ha(t,!1,!0)}),oa(\"\\\\renewcommand\",function(t){return ha(t,!0,!1)}),oa(\"\\\\providecommand\",function(t){return ha(t,!0,!0)}),oa(\"\\\\bgroup\",\"{\"),oa(\"\\\\egroup\",\"}\"),oa(\"\\\\lq\",\"`\"),oa(\"\\\\rq\",\"'\"),oa(\"\\\\aa\",\"\\\\r a\"),oa(\"\\\\AA\",\"\\\\r A\"),oa(\"\\\\textcopyright\",\"\\\\html@mathml{\\\\textcircled{c}}{\\\\char`\\xa9}\"),oa(\"\\\\copyright\",\"\\\\TextOrMath{\\\\textcopyright}{\\\\text{\\\\textcopyright}}\"),oa(\"\\\\textregistered\",\"\\\\html@mathml{\\\\textcircled{\\\\scriptsize R}}{\\\\char`\\xae}\"),oa(\"\\u212c\",\"\\\\mathscr{B}\"),oa(\"\\u2130\",\"\\\\mathscr{E}\"),oa(\"\\u2131\",\"\\\\mathscr{F}\"),oa(\"\\u210b\",\"\\\\mathscr{H}\"),oa(\"\\u2110\",\"\\\\mathscr{I}\"),oa(\"\\u2112\",\"\\\\mathscr{L}\"),oa(\"\\u2133\",\"\\\\mathscr{M}\"),oa(\"\\u211b\",\"\\\\mathscr{R}\"),oa(\"\\u212d\",\"\\\\mathfrak{C}\"),oa(\"\\u210c\",\"\\\\mathfrak{H}\"),oa(\"\\u2128\",\"\\\\mathfrak{Z}\"),oa(\"\\\\Bbbk\",\"\\\\Bbb{k}\"),oa(\"\\xb7\",\"\\\\cdotp\"),oa(\"\\\\llap\",\"\\\\mathllap{\\\\textrm{#1}}\"),oa(\"\\\\rlap\",\"\\\\mathrlap{\\\\textrm{#1}}\"),oa(\"\\\\clap\",\"\\\\mathclap{\\\\textrm{#1}}\"),oa(\"\\\\not\",'\\\\html@mathml{\\\\mathrel{\\\\mathrlap\\\\@not}}{\\\\char\"338}'),oa(\"\\\\neq\",\"\\\\html@mathml{\\\\mathrel{\\\\not=}}{\\\\mathrel{\\\\char`\\u2260}}\"),oa(\"\\\\ne\",\"\\\\neq\"),oa(\"\\u2260\",\"\\\\neq\"),oa(\"\\\\notin\",\"\\\\html@mathml{\\\\mathrel{{\\\\in}\\\\mathllap{/\\\\mskip1mu}}}{\\\\mathrel{\\\\char`\\u2209}}\"),oa(\"\\u2209\",\"\\\\notin\"),oa(\"\\u2258\",\"\\\\html@mathml{\\\\mathrel{=\\\\kern{-1em}\\\\raisebox{0.4em}{$\\\\scriptsize\\\\frown$}}}{\\\\mathrel{\\\\char`\\u2258}}\"),oa(\"\\u2259\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\wedge}{=}}{\\\\mathrel{\\\\char`\\u2258}}\"),oa(\"\\u225a\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\vee}{=}}{\\\\mathrel{\\\\char`\\u225a}}\"),oa(\"\\u225b\",\"\\\\html@mathml{\\\\stackrel{\\\\scriptsize\\\\star}{=}}{\\\\mathrel{\\\\char`\\u225b}}\"),oa(\"\\u225d\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{def}}{=}}{\\\\mathrel{\\\\char`\\u225d}}\"),oa(\"\\u225e\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{m}}{=}}{\\\\mathrel{\\\\char`\\u225e}}\"),oa(\"\\u225f\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny?}{=}}{\\\\mathrel{\\\\char`\\u225f}}\"),oa(\"\\u27c2\",\"\\\\perp\"),oa(\"\\u203c\",\"\\\\mathclose{!\\\\mkern-0.8mu!}\"),oa(\"\\u220c\",\"\\\\notni\"),oa(\"\\u231c\",\"\\\\ulcorner\"),oa(\"\\u231d\",\"\\\\urcorner\"),oa(\"\\u231e\",\"\\\\llcorner\"),oa(\"\\u231f\",\"\\\\lrcorner\"),oa(\"\\xa9\",\"\\\\copyright\"),oa(\"\\xae\",\"\\\\textregistered\"),oa(\"\\ufe0f\",\"\\\\textregistered\"),oa(\"\\\\vdots\",\"\\\\mathord{\\\\varvdots\\\\rule{0pt}{15pt}}\"),oa(\"\\u22ee\",\"\\\\vdots\"),oa(\"\\\\varGamma\",\"\\\\mathit{\\\\Gamma}\"),oa(\"\\\\varDelta\",\"\\\\mathit{\\\\Delta}\"),oa(\"\\\\varTheta\",\"\\\\mathit{\\\\Theta}\"),oa(\"\\\\varLambda\",\"\\\\mathit{\\\\Lambda}\"),oa(\"\\\\varXi\",\"\\\\mathit{\\\\Xi}\"),oa(\"\\\\varPi\",\"\\\\mathit{\\\\Pi}\"),oa(\"\\\\varSigma\",\"\\\\mathit{\\\\Sigma}\"),oa(\"\\\\varUpsilon\",\"\\\\mathit{\\\\Upsilon}\"),oa(\"\\\\varPhi\",\"\\\\mathit{\\\\Phi}\"),oa(\"\\\\varPsi\",\"\\\\mathit{\\\\Psi}\"),oa(\"\\\\varOmega\",\"\\\\mathit{\\\\Omega}\"),oa(\"\\\\colon\",\"\\\\nobreak\\\\mskip2mu\\\\mathpunct{}\\\\mathchoice{\\\\mkern-3mu}{\\\\mkern-3mu}{}{}{:}\\\\mskip6mu\"),oa(\"\\\\boxed\",\"\\\\fbox{$\\\\displaystyle{#1}$}\"),oa(\"\\\\iff\",\"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\"),oa(\"\\\\implies\",\"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\"),oa(\"\\\\impliedby\",\"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\");var la={\",\":\"\\\\dotsc\",\"\\\\not\":\"\\\\dotsb\",\"+\":\"\\\\dotsb\",\"=\":\"\\\\dotsb\",\"<\":\"\\\\dotsb\",\">\":\"\\\\dotsb\",\"-\":\"\\\\dotsb\",\"*\":\"\\\\dotsb\",\":\":\"\\\\dotsb\",\"\\\\DOTSB\":\"\\\\dotsb\",\"\\\\coprod\":\"\\\\dotsb\",\"\\\\bigvee\":\"\\\\dotsb\",\"\\\\bigwedge\":\"\\\\dotsb\",\"\\\\biguplus\":\"\\\\dotsb\",\"\\\\bigcap\":\"\\\\dotsb\",\"\\\\bigcup\":\"\\\\dotsb\",\"\\\\prod\":\"\\\\dotsb\",\"\\\\sum\":\"\\\\dotsb\",\"\\\\bigotimes\":\"\\\\dotsb\",\"\\\\bigoplus\":\"\\\\dotsb\",\"\\\\bigodot\":\"\\\\dotsb\",\"\\\\bigsqcup\":\"\\\\dotsb\",\"\\\\And\":\"\\\\dotsb\",\"\\\\longrightarrow\":\"\\\\dotsb\",\"\\\\Longrightarrow\":\"\\\\dotsb\",\"\\\\longleftarrow\":\"\\\\dotsb\",\"\\\\Longleftarrow\":\"\\\\dotsb\",\"\\\\longleftrightarrow\":\"\\\\dotsb\",\"\\\\Longleftrightarrow\":\"\\\\dotsb\",\"\\\\mapsto\":\"\\\\dotsb\",\"\\\\longmapsto\":\"\\\\dotsb\",\"\\\\hookrightarrow\":\"\\\\dotsb\",\"\\\\doteq\":\"\\\\dotsb\",\"\\\\mathbin\":\"\\\\dotsb\",\"\\\\mathrel\":\"\\\\dotsb\",\"\\\\relbar\":\"\\\\dotsb\",\"\\\\Relbar\":\"\\\\dotsb\",\"\\\\xrightarrow\":\"\\\\dotsb\",\"\\\\xleftarrow\":\"\\\\dotsb\",\"\\\\DOTSI\":\"\\\\dotsi\",\"\\\\int\":\"\\\\dotsi\",\"\\\\oint\":\"\\\\dotsi\",\"\\\\iint\":\"\\\\dotsi\",\"\\\\iiint\":\"\\\\dotsi\",\"\\\\iiiint\":\"\\\\dotsi\",\"\\\\idotsint\":\"\\\\dotsi\",\"\\\\DOTSX\":\"\\\\dotsx\"};oa(\"\\\\dots\",function(t){var e=\"\\\\dotso\",r=t.expandAfterFuture().text;return r in la?e=la[r]:\"\\\\not\"===r.substr(0,4)?e=\"\\\\dotsb\":r in _.math&&c.contains([\"bin\",\"rel\"],_.math[r].group)&&(e=\"\\\\dotsb\"),e});var ma={\")\":!0,\"]\":!0,\"\\\\rbrack\":!0,\"\\\\}\":!0,\"\\\\rbrace\":!0,\"\\\\rangle\":!0,\"\\\\rceil\":!0,\"\\\\rfloor\":!0,\"\\\\rgroup\":!0,\"\\\\rmoustache\":!0,\"\\\\right\":!0,\"\\\\bigr\":!0,\"\\\\biggr\":!0,\"\\\\Bigr\":!0,\"\\\\Biggr\":!0,$:!0,\";\":!0,\".\":!0,\",\":!0};oa(\"\\\\dotso\",function(t){return t.future().text in ma?\"\\\\ldots\\\\,\":\"\\\\ldots\"}),oa(\"\\\\dotsc\",function(t){var e=t.future().text;return e in ma&&\",\"!==e?\"\\\\ldots\\\\,\":\"\\\\ldots\"}),oa(\"\\\\cdots\",function(t){return t.future().text in ma?\"\\\\@cdots\\\\,\":\"\\\\@cdots\"}),oa(\"\\\\dotsb\",\"\\\\cdots\"),oa(\"\\\\dotsm\",\"\\\\cdots\"),oa(\"\\\\dotsi\",\"\\\\!\\\\cdots\"),oa(\"\\\\dotsx\",\"\\\\ldots\\\\,\"),oa(\"\\\\DOTSI\",\"\\\\relax\"),oa(\"\\\\DOTSB\",\"\\\\relax\"),oa(\"\\\\DOTSX\",\"\\\\relax\"),oa(\"\\\\tmspace\",\"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\"),oa(\"\\\\,\",\"\\\\tmspace+{3mu}{.1667em}\"),oa(\"\\\\thinspace\",\"\\\\,\"),oa(\"\\\\>\",\"\\\\mskip{4mu}\"),oa(\"\\\\:\",\"\\\\tmspace+{4mu}{.2222em}\"),oa(\"\\\\medspace\",\"\\\\:\"),oa(\"\\\\;\",\"\\\\tmspace+{5mu}{.2777em}\"),oa(\"\\\\thickspace\",\"\\\\;\"),oa(\"\\\\!\",\"\\\\tmspace-{3mu}{.1667em}\"),oa(\"\\\\negthinspace\",\"\\\\!\"),oa(\"\\\\negmedspace\",\"\\\\tmspace-{4mu}{.2222em}\"),oa(\"\\\\negthickspace\",\"\\\\tmspace-{5mu}{.277em}\"),oa(\"\\\\enspace\",\"\\\\kern.5em \"),oa(\"\\\\enskip\",\"\\\\hskip.5em\\\\relax\"),oa(\"\\\\quad\",\"\\\\hskip1em\\\\relax\"),oa(\"\\\\qquad\",\"\\\\hskip2em\\\\relax\"),oa(\"\\\\tag\",\"\\\\@ifstar\\\\tag@literal\\\\tag@paren\"),oa(\"\\\\tag@paren\",\"\\\\tag@literal{({#1})}\"),oa(\"\\\\tag@literal\",function(t){if(t.macros.get(\"\\\\df@tag\"))throw new i(\"Multiple \\\\tag\");return\"\\\\gdef\\\\df@tag{\\\\text{#1}}\"}),oa(\"\\\\bmod\",\"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\\\\mathbin{\\\\rm mod}\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\"),oa(\"\\\\pod\",\"\\\\allowbreak\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\"),oa(\"\\\\pmod\",\"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\"),oa(\"\\\\mod\",\"\\\\allowbreak\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\rm mod}\\\\,\\\\,#1\"),oa(\"\\\\pmb\",\"\\\\html@mathml{\\\\@binrel{#1}{\\\\mathrlap{#1}\\\\mathrlap{\\\\mkern0.4mu\\\\raisebox{0.4mu}{$#1$}}{\\\\mkern0.8mu#1}}}{\\\\mathbf{#1}}\"),oa(\"\\\\\\\\\",\"\\\\newline\"),oa(\"\\\\TeX\",\"\\\\textrm{\\\\html@mathml{T\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125emX}{TeX}}\");var ca=P[\"Main-Regular\"][\"T\".charCodeAt(0)][1]-.7*P[\"Main-Regular\"][\"A\".charCodeAt(0)][1]+\"em\";oa(\"\\\\LaTeX\",\"\\\\textrm{\\\\html@mathml{L\\\\kern-.36em\\\\raisebox{\"+ca+\"}{\\\\scriptsize A}\\\\kern-.15em\\\\TeX}{LaTeX}}\"),oa(\"\\\\KaTeX\",\"\\\\textrm{\\\\html@mathml{K\\\\kern-.17em\\\\raisebox{\"+ca+\"}{\\\\scriptsize A}\\\\kern-.15em\\\\TeX}{KaTeX}}\"),oa(\"\\\\hspace\",\"\\\\@ifstar\\\\@hspacer\\\\@hspace\"),oa(\"\\\\@hspace\",\"\\\\hskip #1\\\\relax\"),oa(\"\\\\@hspacer\",\"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\"),oa(\"\\\\ordinarycolon\",\":\"),oa(\"\\\\vcentcolon\",\"\\\\mathrel{\\\\mathop\\\\ordinarycolon}\"),oa(\"\\\\dblcolon\",'\\\\html@mathml{\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-.9mu}\\\\vcentcolon}}{\\\\mathop{\\\\char\"2237}}'),oa(\"\\\\coloneqq\",'\\\\html@mathml{\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}=}}{\\\\mathop{\\\\char\"2254}}'),oa(\"\\\\Coloneqq\",'\\\\html@mathml{\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}=}}{\\\\mathop{\\\\char\"2237\\\\char\"3d}}'),oa(\"\\\\coloneq\",'\\\\html@mathml{\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}{\\\\mathop{\\\\char\"3a\\\\char\"2212}}'),oa(\"\\\\Coloneq\",'\\\\html@mathml{\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}}{\\\\mathop{\\\\char\"2237\\\\char\"2212}}'),oa(\"\\\\eqqcolon\",'\\\\html@mathml{\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}{\\\\mathop{\\\\char\"2255}}'),oa(\"\\\\Eqqcolon\",'\\\\html@mathml{\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}{\\\\mathop{\\\\char\"3d\\\\char\"2237}}'),oa(\"\\\\eqcolon\",'\\\\html@mathml{\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}}{\\\\mathop{\\\\char\"2239}}'),oa(\"\\\\Eqcolon\",'\\\\html@mathml{\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}}{\\\\mathop{\\\\char\"2212\\\\char\"2237}}'),oa(\"\\\\colonapprox\",'\\\\html@mathml{\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}{\\\\mathop{\\\\char\"3a\\\\char\"2248}}'),oa(\"\\\\Colonapprox\",'\\\\html@mathml{\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}}{\\\\mathop{\\\\char\"2237\\\\char\"2248}}'),oa(\"\\\\colonsim\",'\\\\html@mathml{\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}{\\\\mathop{\\\\char\"3a\\\\char\"223c}}'),oa(\"\\\\Colonsim\",'\\\\html@mathml{\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}}{\\\\mathop{\\\\char\"2237\\\\char\"223c}}'),oa(\"\\u2237\",\"\\\\dblcolon\"),oa(\"\\u2239\",\"\\\\eqcolon\"),oa(\"\\u2254\",\"\\\\coloneqq\"),oa(\"\\u2255\",\"\\\\eqqcolon\"),oa(\"\\u2a74\",\"\\\\Coloneqq\"),oa(\"\\\\ratio\",\"\\\\vcentcolon\"),oa(\"\\\\coloncolon\",\"\\\\dblcolon\"),oa(\"\\\\colonequals\",\"\\\\coloneqq\"),oa(\"\\\\coloncolonequals\",\"\\\\Coloneqq\"),oa(\"\\\\equalscolon\",\"\\\\eqqcolon\"),oa(\"\\\\equalscoloncolon\",\"\\\\Eqqcolon\"),oa(\"\\\\colonminus\",\"\\\\coloneq\"),oa(\"\\\\coloncolonminus\",\"\\\\Coloneq\"),oa(\"\\\\minuscolon\",\"\\\\eqcolon\"),oa(\"\\\\minuscoloncolon\",\"\\\\Eqcolon\"),oa(\"\\\\coloncolonapprox\",\"\\\\Colonapprox\"),oa(\"\\\\coloncolonsim\",\"\\\\Colonsim\"),oa(\"\\\\simcolon\",\"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\"),oa(\"\\\\simcoloncolon\",\"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"),oa(\"\\\\approxcolon\",\"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\"),oa(\"\\\\approxcoloncolon\",\"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"),oa(\"\\\\notni\",\"\\\\html@mathml{\\\\not\\\\ni}{\\\\mathrel{\\\\char`\\u220c}}\"),oa(\"\\\\limsup\",\"\\\\DOTSB\\\\mathop{\\\\operatorname{lim\\\\,sup}}\\\\limits\"),oa(\"\\\\liminf\",\"\\\\DOTSB\\\\mathop{\\\\operatorname{lim\\\\,inf}}\\\\limits\"),oa(\"\\\\gvertneqq\",\"\\\\html@mathml{\\\\@gvertneqq}{\\u2269}\"),oa(\"\\\\lvertneqq\",\"\\\\html@mathml{\\\\@lvertneqq}{\\u2268}\"),oa(\"\\\\ngeqq\",\"\\\\html@mathml{\\\\@ngeqq}{\\u2271}\"),oa(\"\\\\ngeqslant\",\"\\\\html@mathml{\\\\@ngeqslant}{\\u2271}\"),oa(\"\\\\nleqq\",\"\\\\html@mathml{\\\\@nleqq}{\\u2270}\"),oa(\"\\\\nleqslant\",\"\\\\html@mathml{\\\\@nleqslant}{\\u2270}\"),oa(\"\\\\nshortmid\",\"\\\\html@mathml{\\\\@nshortmid}{\\u2224}\"),oa(\"\\\\nshortparallel\",\"\\\\html@mathml{\\\\@nshortparallel}{\\u2226}\"),oa(\"\\\\nsubseteqq\",\"\\\\html@mathml{\\\\@nsubseteqq}{\\u2288}\"),oa(\"\\\\nsupseteqq\",\"\\\\html@mathml{\\\\@nsupseteqq}{\\u2289}\"),oa(\"\\\\varsubsetneq\",\"\\\\html@mathml{\\\\@varsubsetneq}{\\u228a}\"),oa(\"\\\\varsubsetneqq\",\"\\\\html@mathml{\\\\@varsubsetneqq}{\\u2acb}\"),oa(\"\\\\varsupsetneq\",\"\\\\html@mathml{\\\\@varsupsetneq}{\\u228b}\"),oa(\"\\\\varsupsetneqq\",\"\\\\html@mathml{\\\\@varsupsetneqq}{\\u2acc}\"),oa(\"\\\\llbracket\",\"\\\\html@mathml{\\\\mathopen{[\\\\mkern-3.2mu[}}{\\\\mathopen{\\\\char`\\u27e6}}\"),oa(\"\\\\rrbracket\",\"\\\\html@mathml{\\\\mathclose{]\\\\mkern-3.2mu]}}{\\\\mathclose{\\\\char`\\u27e7}}\"),oa(\"\\u27e6\",\"\\\\llbracket\"),oa(\"\\u27e7\",\"\\\\rrbracket\"),oa(\"\\\\lBrace\",\"\\\\html@mathml{\\\\mathopen{\\\\{\\\\mkern-3.2mu[}}{\\\\mathopen{\\\\char`\\u2983}}\"),oa(\"\\\\rBrace\",\"\\\\html@mathml{\\\\mathclose{]\\\\mkern-3.2mu\\\\}}}{\\\\mathclose{\\\\char`\\u2984}}\"),oa(\"\\u2983\",\"\\\\lBrace\"),oa(\"\\u2984\",\"\\\\rBrace\"),oa(\"\\\\darr\",\"\\\\downarrow\"),oa(\"\\\\dArr\",\"\\\\Downarrow\"),oa(\"\\\\Darr\",\"\\\\Downarrow\"),oa(\"\\\\lang\",\"\\\\langle\"),oa(\"\\\\rang\",\"\\\\rangle\"),oa(\"\\\\uarr\",\"\\\\uparrow\"),oa(\"\\\\uArr\",\"\\\\Uparrow\"),oa(\"\\\\Uarr\",\"\\\\Uparrow\"),oa(\"\\\\N\",\"\\\\mathbb{N}\"),oa(\"\\\\R\",\"\\\\mathbb{R}\"),oa(\"\\\\Z\",\"\\\\mathbb{Z}\"),oa(\"\\\\alef\",\"\\\\aleph\"),oa(\"\\\\alefsym\",\"\\\\aleph\"),oa(\"\\\\Alpha\",\"\\\\mathrm{A}\"),oa(\"\\\\Beta\",\"\\\\mathrm{B}\"),oa(\"\\\\bull\",\"\\\\bullet\"),oa(\"\\\\Chi\",\"\\\\mathrm{X}\"),oa(\"\\\\clubs\",\"\\\\clubsuit\"),oa(\"\\\\cnums\",\"\\\\mathbb{C}\"),oa(\"\\\\Complex\",\"\\\\mathbb{C}\"),oa(\"\\\\Dagger\",\"\\\\ddagger\"),oa(\"\\\\diamonds\",\"\\\\diamondsuit\"),oa(\"\\\\empty\",\"\\\\emptyset\"),oa(\"\\\\Epsilon\",\"\\\\mathrm{E}\"),oa(\"\\\\Eta\",\"\\\\mathrm{H}\"),oa(\"\\\\exist\",\"\\\\exists\"),oa(\"\\\\harr\",\"\\\\leftrightarrow\"),oa(\"\\\\hArr\",\"\\\\Leftrightarrow\"),oa(\"\\\\Harr\",\"\\\\Leftrightarrow\"),oa(\"\\\\hearts\",\"\\\\heartsuit\"),oa(\"\\\\image\",\"\\\\Im\"),oa(\"\\\\infin\",\"\\\\infty\"),oa(\"\\\\Iota\",\"\\\\mathrm{I}\"),oa(\"\\\\isin\",\"\\\\in\"),oa(\"\\\\Kappa\",\"\\\\mathrm{K}\"),oa(\"\\\\larr\",\"\\\\leftarrow\"),oa(\"\\\\lArr\",\"\\\\Leftarrow\"),oa(\"\\\\Larr\",\"\\\\Leftarrow\"),oa(\"\\\\lrarr\",\"\\\\leftrightarrow\"),oa(\"\\\\lrArr\",\"\\\\Leftrightarrow\"),oa(\"\\\\Lrarr\",\"\\\\Leftrightarrow\"),oa(\"\\\\Mu\",\"\\\\mathrm{M}\"),oa(\"\\\\natnums\",\"\\\\mathbb{N}\"),oa(\"\\\\Nu\",\"\\\\mathrm{N}\"),oa(\"\\\\Omicron\",\"\\\\mathrm{O}\"),oa(\"\\\\plusmn\",\"\\\\pm\"),oa(\"\\\\rarr\",\"\\\\rightarrow\"),oa(\"\\\\rArr\",\"\\\\Rightarrow\"),oa(\"\\\\Rarr\",\"\\\\Rightarrow\"),oa(\"\\\\real\",\"\\\\Re\"),oa(\"\\\\reals\",\"\\\\mathbb{R}\"),oa(\"\\\\Reals\",\"\\\\mathbb{R}\"),oa(\"\\\\Rho\",\"\\\\mathrm{P}\"),oa(\"\\\\sdot\",\"\\\\cdot\"),oa(\"\\\\sect\",\"\\\\S\"),oa(\"\\\\spades\",\"\\\\spadesuit\"),oa(\"\\\\sub\",\"\\\\subset\"),oa(\"\\\\sube\",\"\\\\subseteq\"),oa(\"\\\\supe\",\"\\\\supseteq\"),oa(\"\\\\Tau\",\"\\\\mathrm{T}\"),oa(\"\\\\thetasym\",\"\\\\vartheta\"),oa(\"\\\\weierp\",\"\\\\wp\"),oa(\"\\\\Zeta\",\"\\\\mathrm{Z}\"),oa(\"\\\\argmin\",\"\\\\DOTSB\\\\mathop{\\\\operatorname{arg\\\\,min}}\\\\limits\"),oa(\"\\\\argmax\",\"\\\\DOTSB\\\\mathop{\\\\operatorname{arg\\\\,max}}\\\\limits\"),oa(\"\\\\blue\",\"\\\\textcolor{##6495ed}{#1}\"),oa(\"\\\\orange\",\"\\\\textcolor{##ffa500}{#1}\"),oa(\"\\\\pink\",\"\\\\textcolor{##ff00af}{#1}\"),oa(\"\\\\red\",\"\\\\textcolor{##df0030}{#1}\"),oa(\"\\\\green\",\"\\\\textcolor{##28ae7b}{#1}\"),oa(\"\\\\gray\",\"\\\\textcolor{gray}{##1}\"),oa(\"\\\\purple\",\"\\\\textcolor{##9d38bd}{#1}\"),oa(\"\\\\blueA\",\"\\\\textcolor{##ccfaff}{#1}\"),oa(\"\\\\blueB\",\"\\\\textcolor{##80f6ff}{#1}\"),oa(\"\\\\blueC\",\"\\\\textcolor{##63d9ea}{#1}\"),oa(\"\\\\blueD\",\"\\\\textcolor{##11accd}{#1}\"),oa(\"\\\\blueE\",\"\\\\textcolor{##0c7f99}{#1}\"),oa(\"\\\\tealA\",\"\\\\textcolor{##94fff5}{#1}\"),oa(\"\\\\tealB\",\"\\\\textcolor{##26edd5}{#1}\"),oa(\"\\\\tealC\",\"\\\\textcolor{##01d1c1}{#1}\"),oa(\"\\\\tealD\",\"\\\\textcolor{##01a995}{#1}\"),oa(\"\\\\tealE\",\"\\\\textcolor{##208170}{#1}\"),oa(\"\\\\greenA\",\"\\\\textcolor{##b6ffb0}{#1}\"),oa(\"\\\\greenB\",\"\\\\textcolor{##8af281}{#1}\"),oa(\"\\\\greenC\",\"\\\\textcolor{##74cf70}{#1}\"),oa(\"\\\\greenD\",\"\\\\textcolor{##1fab54}{#1}\"),oa(\"\\\\greenE\",\"\\\\textcolor{##0d923f}{#1}\"),oa(\"\\\\goldA\",\"\\\\textcolor{##ffd0a9}{#1}\"),oa(\"\\\\goldB\",\"\\\\textcolor{##ffbb71}{#1}\"),oa(\"\\\\goldC\",\"\\\\textcolor{##ff9c39}{#1}\"),oa(\"\\\\goldD\",\"\\\\textcolor{##e07d10}{#1}\"),oa(\"\\\\goldE\",\"\\\\textcolor{##a75a05}{#1}\"),oa(\"\\\\redA\",\"\\\\textcolor{##fca9a9}{#1}\"),oa(\"\\\\redB\",\"\\\\textcolor{##ff8482}{#1}\"),oa(\"\\\\redC\",\"\\\\textcolor{##f9685d}{#1}\"),oa(\"\\\\redD\",\"\\\\textcolor{##e84d39}{#1}\"),oa(\"\\\\redE\",\"\\\\textcolor{##bc2612}{#1}\"),oa(\"\\\\maroonA\",\"\\\\textcolor{##ffbde0}{#1}\"),oa(\"\\\\maroonB\",\"\\\\textcolor{##ff92c6}{#1}\"),oa(\"\\\\maroonC\",\"\\\\textcolor{##ed5fa6}{#1}\"),oa(\"\\\\maroonD\",\"\\\\textcolor{##ca337c}{#1}\"),oa(\"\\\\maroonE\",\"\\\\textcolor{##9e034e}{#1}\"),oa(\"\\\\purpleA\",\"\\\\textcolor{##ddd7ff}{#1}\"),oa(\"\\\\purpleB\",\"\\\\textcolor{##c6b9fc}{#1}\"),oa(\"\\\\purpleC\",\"\\\\textcolor{##aa87ff}{#1}\"),oa(\"\\\\purpleD\",\"\\\\textcolor{##7854ab}{#1}\"),oa(\"\\\\purpleE\",\"\\\\textcolor{##543b78}{#1}\"),oa(\"\\\\mintA\",\"\\\\textcolor{##f5f9e8}{#1}\"),oa(\"\\\\mintB\",\"\\\\textcolor{##edf2df}{#1}\"),oa(\"\\\\mintC\",\"\\\\textcolor{##e0e5cc}{#1}\"),oa(\"\\\\grayA\",\"\\\\textcolor{##f6f7f7}{#1}\"),oa(\"\\\\grayB\",\"\\\\textcolor{##f0f1f2}{#1}\"),oa(\"\\\\grayC\",\"\\\\textcolor{##e3e5e6}{#1}\"),oa(\"\\\\grayD\",\"\\\\textcolor{##d6d8da}{#1}\"),oa(\"\\\\grayE\",\"\\\\textcolor{##babec2}{#1}\"),oa(\"\\\\grayF\",\"\\\\textcolor{##888d93}{#1}\"),oa(\"\\\\grayG\",\"\\\\textcolor{##626569}{#1}\"),oa(\"\\\\grayH\",\"\\\\textcolor{##3b3e40}{#1}\"),oa(\"\\\\grayI\",\"\\\\textcolor{##21242c}{#1}\"),oa(\"\\\\kaBlue\",\"\\\\textcolor{##314453}{#1}\"),oa(\"\\\\kaGreen\",\"\\\\textcolor{##71B307}{#1}\");var ua={\"\\\\relax\":!0,\"^\":!0,_:!0,\"\\\\limits\":!0,\"\\\\nolimits\":!0},da=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ra(na,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new ea(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(\" \"!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;r<t;++r){this.consumeSpaces();var a=this.popToken();if(\"{\"===a.text){for(var n=[],o=1;0!==o;){var s=this.popToken();if(n.push(s),\"{\"===s.text)++o;else if(\"}\"===s.text)--o;else if(\"EOF\"===s.text)throw new i(\"End of input in macro argument\",a)}n.pop(),n.reverse(),e[r]=n}else{if(\"EOF\"===a.text)throw new i(\"End of input expecting macro argument\");e[r]=[a]}}return e},e.expandOnce=function(){var t=this.popToken(),e=t.text,r=this._getExpansion(e);if(null==r)return this.pushToken(t),t;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new i(\"Too many expansions: infinite loop or need to increase maxExpand setting\");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),o=(a=a.slice()).length-1;o>=0;--o){var s=a[o];if(\"#\"===s.text){if(0===o)throw new i(\"Incomplete placeholder at end of macro body\",s);if(\"#\"===(s=a[--o]).text)a.splice(o+1,1);else{if(!/^[1-9]$/.test(s.text))throw new i(\"Not a valid argument number\",s);var h;(h=a).splice.apply(h,[o,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if(\"\\\\relax\"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(\"\"):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r=\"function\"==typeof e?e(this):e;if(\"string\"==typeof r){var a=0;if(-1!==r.indexOf(\"#\"))for(var n=r.replace(/##/g,\"\");-1!==n.indexOf(\"#\"+(a+1));)++a;for(var o=new ea(r,this.settings),i=[],s=o.lex();\"EOF\"!==s.text;)i.push(s),s=o.lex();return i.reverse(),{tokens:i,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||Kr.hasOwnProperty(t)||_.math.hasOwnProperty(t)||_.text.hasOwnProperty(t)||ua.hasOwnProperty(t)},t}(),pa={\"\\u0301\":{text:\"\\\\'\",math:\"\\\\acute\"},\"\\u0300\":{text:\"\\\\`\",math:\"\\\\grave\"},\"\\u0308\":{text:'\\\\\"',math:\"\\\\ddot\"},\"\\u0303\":{text:\"\\\\~\",math:\"\\\\tilde\"},\"\\u0304\":{text:\"\\\\=\",math:\"\\\\bar\"},\"\\u0306\":{text:\"\\\\u\",math:\"\\\\breve\"},\"\\u030c\":{text:\"\\\\v\",math:\"\\\\check\"},\"\\u0302\":{text:\"\\\\^\",math:\"\\\\hat\"},\"\\u0307\":{text:\"\\\\.\",math:\"\\\\dot\"},\"\\u030a\":{text:\"\\\\r\",math:\"\\\\mathring\"},\"\\u030b\":{text:\"\\\\H\"}},fa={\"\\xe1\":\"a\\u0301\",\"\\xe0\":\"a\\u0300\",\"\\xe4\":\"a\\u0308\",\"\\u01df\":\"a\\u0308\\u0304\",\"\\xe3\":\"a\\u0303\",\"\\u0101\":\"a\\u0304\",\"\\u0103\":\"a\\u0306\",\"\\u1eaf\":\"a\\u0306\\u0301\",\"\\u1eb1\":\"a\\u0306\\u0300\",\"\\u1eb5\":\"a\\u0306\\u0303\",\"\\u01ce\":\"a\\u030c\",\"\\xe2\":\"a\\u0302\",\"\\u1ea5\":\"a\\u0302\\u0301\",\"\\u1ea7\":\"a\\u0302\\u0300\",\"\\u1eab\":\"a\\u0302\\u0303\",\"\\u0227\":\"a\\u0307\",\"\\u01e1\":\"a\\u0307\\u0304\",\"\\xe5\":\"a\\u030a\",\"\\u01fb\":\"a\\u030a\\u0301\",\"\\u1e03\":\"b\\u0307\",\"\\u0107\":\"c\\u0301\",\"\\u010d\":\"c\\u030c\",\"\\u0109\":\"c\\u0302\",\"\\u010b\":\"c\\u0307\",\"\\u010f\":\"d\\u030c\",\"\\u1e0b\":\"d\\u0307\",\"\\xe9\":\"e\\u0301\",\"\\xe8\":\"e\\u0300\",\"\\xeb\":\"e\\u0308\",\"\\u1ebd\":\"e\\u0303\",\"\\u0113\":\"e\\u0304\",\"\\u1e17\":\"e\\u0304\\u0301\",\"\\u1e15\":\"e\\u0304\\u0300\",\"\\u0115\":\"e\\u0306\",\"\\u011b\":\"e\\u030c\",\"\\xea\":\"e\\u0302\",\"\\u1ebf\":\"e\\u0302\\u0301\",\"\\u1ec1\":\"e\\u0302\\u0300\",\"\\u1ec5\":\"e\\u0302\\u0303\",\"\\u0117\":\"e\\u0307\",\"\\u1e1f\":\"f\\u0307\",\"\\u01f5\":\"g\\u0301\",\"\\u1e21\":\"g\\u0304\",\"\\u011f\":\"g\\u0306\",\"\\u01e7\":\"g\\u030c\",\"\\u011d\":\"g\\u0302\",\"\\u0121\":\"g\\u0307\",\"\\u1e27\":\"h\\u0308\",\"\\u021f\":\"h\\u030c\",\"\\u0125\":\"h\\u0302\",\"\\u1e23\":\"h\\u0307\",\"\\xed\":\"i\\u0301\",\"\\xec\":\"i\\u0300\",\"\\xef\":\"i\\u0308\",\"\\u1e2f\":\"i\\u0308\\u0301\",\"\\u0129\":\"i\\u0303\",\"\\u012b\":\"i\\u0304\",\"\\u012d\":\"i\\u0306\",\"\\u01d0\":\"i\\u030c\",\"\\xee\":\"i\\u0302\",\"\\u01f0\":\"j\\u030c\",\"\\u0135\":\"j\\u0302\",\"\\u1e31\":\"k\\u0301\",\"\\u01e9\":\"k\\u030c\",\"\\u013a\":\"l\\u0301\",\"\\u013e\":\"l\\u030c\",\"\\u1e3f\":\"m\\u0301\",\"\\u1e41\":\"m\\u0307\",\"\\u0144\":\"n\\u0301\",\"\\u01f9\":\"n\\u0300\",\"\\xf1\":\"n\\u0303\",\"\\u0148\":\"n\\u030c\",\"\\u1e45\":\"n\\u0307\",\"\\xf3\":\"o\\u0301\",\"\\xf2\":\"o\\u0300\",\"\\xf6\":\"o\\u0308\",\"\\u022b\":\"o\\u0308\\u0304\",\"\\xf5\":\"o\\u0303\",\"\\u1e4d\":\"o\\u0303\\u0301\",\"\\u1e4f\":\"o\\u0303\\u0308\",\"\\u022d\":\"o\\u0303\\u0304\",\"\\u014d\":\"o\\u0304\",\"\\u1e53\":\"o\\u0304\\u0301\",\"\\u1e51\":\"o\\u0304\\u0300\",\"\\u014f\":\"o\\u0306\",\"\\u01d2\":\"o\\u030c\",\"\\xf4\":\"o\\u0302\",\"\\u1ed1\":\"o\\u0302\\u0301\",\"\\u1ed3\":\"o\\u0302\\u0300\",\"\\u1ed7\":\"o\\u0302\\u0303\",\"\\u022f\":\"o\\u0307\",\"\\u0231\":\"o\\u0307\\u0304\",\"\\u0151\":\"o\\u030b\",\"\\u1e55\":\"p\\u0301\",\"\\u1e57\":\"p\\u0307\",\"\\u0155\":\"r\\u0301\",\"\\u0159\":\"r\\u030c\",\"\\u1e59\":\"r\\u0307\",\"\\u015b\":\"s\\u0301\",\"\\u1e65\":\"s\\u0301\\u0307\",\"\\u0161\":\"s\\u030c\",\"\\u1e67\":\"s\\u030c\\u0307\",\"\\u015d\":\"s\\u0302\",\"\\u1e61\":\"s\\u0307\",\"\\u1e97\":\"t\\u0308\",\"\\u0165\":\"t\\u030c\",\"\\u1e6b\":\"t\\u0307\",\"\\xfa\":\"u\\u0301\",\"\\xf9\":\"u\\u0300\",\"\\xfc\":\"u\\u0308\",\"\\u01d8\":\"u\\u0308\\u0301\",\"\\u01dc\":\"u\\u0308\\u0300\",\"\\u01d6\":\"u\\u0308\\u0304\",\"\\u01da\":\"u\\u0308\\u030c\",\"\\u0169\":\"u\\u0303\",\"\\u1e79\":\"u\\u0303\\u0301\",\"\\u016b\":\"u\\u0304\",\"\\u1e7b\":\"u\\u0304\\u0308\",\"\\u016d\":\"u\\u0306\",\"\\u01d4\":\"u\\u030c\",\"\\xfb\":\"u\\u0302\",\"\\u016f\":\"u\\u030a\",\"\\u0171\":\"u\\u030b\",\"\\u1e7d\":\"v\\u0303\",\"\\u1e83\":\"w\\u0301\",\"\\u1e81\":\"w\\u0300\",\"\\u1e85\":\"w\\u0308\",\"\\u0175\":\"w\\u0302\",\"\\u1e87\":\"w\\u0307\",\"\\u1e98\":\"w\\u030a\",\"\\u1e8d\":\"x\\u0308\",\"\\u1e8b\":\"x\\u0307\",\"\\xfd\":\"y\\u0301\",\"\\u1ef3\":\"y\\u0300\",\"\\xff\":\"y\\u0308\",\"\\u1ef9\":\"y\\u0303\",\"\\u0233\":\"y\\u0304\",\"\\u0177\":\"y\\u0302\",\"\\u1e8f\":\"y\\u0307\",\"\\u1e99\":\"y\\u030a\",\"\\u017a\":\"z\\u0301\",\"\\u017e\":\"z\\u030c\",\"\\u1e91\":\"z\\u0302\",\"\\u017c\":\"z\\u0307\",\"\\xc1\":\"A\\u0301\",\"\\xc0\":\"A\\u0300\",\"\\xc4\":\"A\\u0308\",\"\\u01de\":\"A\\u0308\\u0304\",\"\\xc3\":\"A\\u0303\",\"\\u0100\":\"A\\u0304\",\"\\u0102\":\"A\\u0306\",\"\\u1eae\":\"A\\u0306\\u0301\",\"\\u1eb0\":\"A\\u0306\\u0300\",\"\\u1eb4\":\"A\\u0306\\u0303\",\"\\u01cd\":\"A\\u030c\",\"\\xc2\":\"A\\u0302\",\"\\u1ea4\":\"A\\u0302\\u0301\",\"\\u1ea6\":\"A\\u0302\\u0300\",\"\\u1eaa\":\"A\\u0302\\u0303\",\"\\u0226\":\"A\\u0307\",\"\\u01e0\":\"A\\u0307\\u0304\",\"\\xc5\":\"A\\u030a\",\"\\u01fa\":\"A\\u030a\\u0301\",\"\\u1e02\":\"B\\u0307\",\"\\u0106\":\"C\\u0301\",\"\\u010c\":\"C\\u030c\",\"\\u0108\":\"C\\u0302\",\"\\u010a\":\"C\\u0307\",\"\\u010e\":\"D\\u030c\",\"\\u1e0a\":\"D\\u0307\",\"\\xc9\":\"E\\u0301\",\"\\xc8\":\"E\\u0300\",\"\\xcb\":\"E\\u0308\",\"\\u1ebc\":\"E\\u0303\",\"\\u0112\":\"E\\u0304\",\"\\u1e16\":\"E\\u0304\\u0301\",\"\\u1e14\":\"E\\u0304\\u0300\",\"\\u0114\":\"E\\u0306\",\"\\u011a\":\"E\\u030c\",\"\\xca\":\"E\\u0302\",\"\\u1ebe\":\"E\\u0302\\u0301\",\"\\u1ec0\":\"E\\u0302\\u0300\",\"\\u1ec4\":\"E\\u0302\\u0303\",\"\\u0116\":\"E\\u0307\",\"\\u1e1e\":\"F\\u0307\",\"\\u01f4\":\"G\\u0301\",\"\\u1e20\":\"G\\u0304\",\"\\u011e\":\"G\\u0306\",\"\\u01e6\":\"G\\u030c\",\"\\u011c\":\"G\\u0302\",\"\\u0120\":\"G\\u0307\",\"\\u1e26\":\"H\\u0308\",\"\\u021e\":\"H\\u030c\",\"\\u0124\":\"H\\u0302\",\"\\u1e22\":\"H\\u0307\",\"\\xcd\":\"I\\u0301\",\"\\xcc\":\"I\\u0300\",\"\\xcf\":\"I\\u0308\",\"\\u1e2e\":\"I\\u0308\\u0301\",\"\\u0128\":\"I\\u0303\",\"\\u012a\":\"I\\u0304\",\"\\u012c\":\"I\\u0306\",\"\\u01cf\":\"I\\u030c\",\"\\xce\":\"I\\u0302\",\"\\u0130\":\"I\\u0307\",\"\\u0134\":\"J\\u0302\",\"\\u1e30\":\"K\\u0301\",\"\\u01e8\":\"K\\u030c\",\"\\u0139\":\"L\\u0301\",\"\\u013d\":\"L\\u030c\",\"\\u1e3e\":\"M\\u0301\",\"\\u1e40\":\"M\\u0307\",\"\\u0143\":\"N\\u0301\",\"\\u01f8\":\"N\\u0300\",\"\\xd1\":\"N\\u0303\",\"\\u0147\":\"N\\u030c\",\"\\u1e44\":\"N\\u0307\",\"\\xd3\":\"O\\u0301\",\"\\xd2\":\"O\\u0300\",\"\\xd6\":\"O\\u0308\",\"\\u022a\":\"O\\u0308\\u0304\",\"\\xd5\":\"O\\u0303\",\"\\u1e4c\":\"O\\u0303\\u0301\",\"\\u1e4e\":\"O\\u0303\\u0308\",\"\\u022c\":\"O\\u0303\\u0304\",\"\\u014c\":\"O\\u0304\",\"\\u1e52\":\"O\\u0304\\u0301\",\"\\u1e50\":\"O\\u0304\\u0300\",\"\\u014e\":\"O\\u0306\",\"\\u01d1\":\"O\\u030c\",\"\\xd4\":\"O\\u0302\",\"\\u1ed0\":\"O\\u0302\\u0301\",\"\\u1ed2\":\"O\\u0302\\u0300\",\"\\u1ed6\":\"O\\u0302\\u0303\",\"\\u022e\":\"O\\u0307\",\"\\u0230\":\"O\\u0307\\u0304\",\"\\u0150\":\"O\\u030b\",\"\\u1e54\":\"P\\u0301\",\"\\u1e56\":\"P\\u0307\",\"\\u0154\":\"R\\u0301\",\"\\u0158\":\"R\\u030c\",\"\\u1e58\":\"R\\u0307\",\"\\u015a\":\"S\\u0301\",\"\\u1e64\":\"S\\u0301\\u0307\",\"\\u0160\":\"S\\u030c\",\"\\u1e66\":\"S\\u030c\\u0307\",\"\\u015c\":\"S\\u0302\",\"\\u1e60\":\"S\\u0307\",\"\\u0164\":\"T\\u030c\",\"\\u1e6a\":\"T\\u0307\",\"\\xda\":\"U\\u0301\",\"\\xd9\":\"U\\u0300\",\"\\xdc\":\"U\\u0308\",\"\\u01d7\":\"U\\u0308\\u0301\",\"\\u01db\":\"U\\u0308\\u0300\",\"\\u01d5\":\"U\\u0308\\u0304\",\"\\u01d9\":\"U\\u0308\\u030c\",\"\\u0168\":\"U\\u0303\",\"\\u1e78\":\"U\\u0303\\u0301\",\"\\u016a\":\"U\\u0304\",\"\\u1e7a\":\"U\\u0304\\u0308\",\"\\u016c\":\"U\\u0306\",\"\\u01d3\":\"U\\u030c\",\"\\xdb\":\"U\\u0302\",\"\\u016e\":\"U\\u030a\",\"\\u0170\":\"U\\u030b\",\"\\u1e7c\":\"V\\u0303\",\"\\u1e82\":\"W\\u0301\",\"\\u1e80\":\"W\\u0300\",\"\\u1e84\":\"W\\u0308\",\"\\u0174\":\"W\\u0302\",\"\\u1e86\":\"W\\u0307\",\"\\u1e8c\":\"X\\u0308\",\"\\u1e8a\":\"X\\u0307\",\"\\xdd\":\"Y\\u0301\",\"\\u1ef2\":\"Y\\u0300\",\"\\u0178\":\"Y\\u0308\",\"\\u1ef8\":\"Y\\u0303\",\"\\u0232\":\"Y\\u0304\",\"\\u0176\":\"Y\\u0302\",\"\\u1e8e\":\"Y\\u0307\",\"\\u0179\":\"Z\\u0301\",\"\\u017d\":\"Z\\u030c\",\"\\u1e90\":\"Z\\u0302\",\"\\u017b\":\"Z\\u0307\",\"\\u03ac\":\"\\u03b1\\u0301\",\"\\u1f70\":\"\\u03b1\\u0300\",\"\\u1fb1\":\"\\u03b1\\u0304\",\"\\u1fb0\":\"\\u03b1\\u0306\",\"\\u03ad\":\"\\u03b5\\u0301\",\"\\u1f72\":\"\\u03b5\\u0300\",\"\\u03ae\":\"\\u03b7\\u0301\",\"\\u1f74\":\"\\u03b7\\u0300\",\"\\u03af\":\"\\u03b9\\u0301\",\"\\u1f76\":\"\\u03b9\\u0300\",\"\\u03ca\":\"\\u03b9\\u0308\",\"\\u0390\":\"\\u03b9\\u0308\\u0301\",\"\\u1fd2\":\"\\u03b9\\u0308\\u0300\",\"\\u1fd1\":\"\\u03b9\\u0304\",\"\\u1fd0\":\"\\u03b9\\u0306\",\"\\u03cc\":\"\\u03bf\\u0301\",\"\\u1f78\":\"\\u03bf\\u0300\",\"\\u03cd\":\"\\u03c5\\u0301\",\"\\u1f7a\":\"\\u03c5\\u0300\",\"\\u03cb\":\"\\u03c5\\u0308\",\"\\u03b0\":\"\\u03c5\\u0308\\u0301\",\"\\u1fe2\":\"\\u03c5\\u0308\\u0300\",\"\\u1fe1\":\"\\u03c5\\u0304\",\"\\u1fe0\":\"\\u03c5\\u0306\",\"\\u03ce\":\"\\u03c9\\u0301\",\"\\u1f7c\":\"\\u03c9\\u0300\",\"\\u038e\":\"\\u03a5\\u0301\",\"\\u1fea\":\"\\u03a5\\u0300\",\"\\u03ab\":\"\\u03a5\\u0308\",\"\\u1fe9\":\"\\u03a5\\u0304\",\"\\u1fe8\":\"\\u03a5\\u0306\",\"\\u038f\":\"\\u03a9\\u0301\",\"\\u1ffa\":\"\\u03a9\\u0300\"},ga=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode=\"math\",this.gullet=new da(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.nextToken.text!==t)throw new i(\"Expected '\"+t+\"', got '\"+this.nextToken.text+\"'\",this.nextToken);e&&this.consume()},e.consume=function(){this.nextToken=this.gullet.expandNextToken()},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set(\"\\\\color\",\"\\\\textcolor\"),this.consume();var t=this.parseExpression(!1);return this.expect(\"EOF\",!1),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){\"math\"===this.mode&&this.consumeSpaces();var n=this.nextToken;if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&Kr[n.text]&&Kr[n.text].infix)break;var o=this.parseAtom(r);if(!o)break;a.push(o)}return\"text\"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a<t.length;a++){var n=Pt(t[a],\"infix\");if(n){if(-1!==r)throw new i(\"only one infix operator per group\",n.token);r=a,e=n.replaceWith}}if(-1!==r&&e){var o,s,h=t.slice(0,r),l=t.slice(r+1);return o=1===h.length&&\"ordgroup\"===h[0].type?h[0]:{type:\"ordgroup\",mode:this.mode,body:h},s=1===l.length&&\"ordgroup\"===l[0].type?l[0]:{type:\"ordgroup\",mode:this.mode,body:l},[\"\\\\\\\\abovefrac\"===e?this.callFunction(e,[o,t[r],s],[]):this.callFunction(e,[o,s],[])]}return t},e.handleSupSubscript=function(e){var r=this.nextToken,a=r.text;this.consume(),this.consumeSpaces();var n=this.parseGroup(e,!1,t.SUPSUB_GREEDINESS);if(!n)throw new i(\"Expected group after '\"+a+\"'\",r);return n},e.handleUnsupportedCmd=function(){for(var t=this.nextToken.text,e=[],r=0;r<t.length;r++)e.push({type:\"textord\",mode:\"text\",text:t[r]});var a={type:\"text\",mode:this.mode,body:e},n={type:\"color\",mode:this.mode,color:this.settings.errorColor,body:[a]};return this.consume(),n},e.parseAtom=function(t){var e,r,a=this.parseGroup(\"atom\",!1,null,t);if(\"text\"===this.mode)return a;for(;;){this.consumeSpaces();var n=this.nextToken;if(\"\\\\limits\"===n.text||\"\\\\nolimits\"===n.text){var o=Pt(a,\"op\");if(!o)throw new i(\"Limit controls must follow a math operator\",n);var s=\"\\\\limits\"===n.text;o.limits=s,o.alwaysHandleSupSub=!0,this.consume()}else if(\"^\"===n.text){if(e)throw new i(\"Double superscript\",n);e=this.handleSupSubscript(\"superscript\")}else if(\"_\"===n.text){if(r)throw new i(\"Double subscript\",n);r=this.handleSupSubscript(\"subscript\")}else{if(\"'\"!==n.text)break;if(e)throw new i(\"Double superscript\",n);var h={type:\"textord\",mode:this.mode,text:\"\\\\prime\"},l=[h];for(this.consume();\"'\"===this.nextToken.text;)l.push(h),this.consume();\"^\"===this.nextToken.text&&l.push(this.handleSupSubscript(\"superscript\")),e={type:\"ordgroup\",mode:this.mode,body:l}}}return e||r?{type:\"supsub\",mode:this.mode,base:a,sup:e,sub:r}:a},e.parseFunction=function(t,e,r){var a=this.nextToken,n=a.text,o=Kr[n];if(!o)return null;if(null!=r&&o.greediness<=r)throw new i(\"Got function '\"+n+\"' with no arguments\"+(e?\" as \"+e:\"\"),a);if(\"text\"===this.mode&&!o.allowedInText)throw new i(\"Can't use function '\"+n+\"' in text mode\",a);if(\"math\"===this.mode&&!1===o.allowedInMath)throw new i(\"Can't use function '\"+n+\"' in math mode\",a);if(o.argTypes&&\"url\"===o.argTypes[0]&&this.gullet.lexer.setCatcode(\"%\",13),o.consumeMode){var s=this.mode;this.switchMode(o.consumeMode),this.consume(),this.switchMode(s)}else this.consume();var h=this.parseArguments(n,o),l=h.args,m=h.optArgs;return this.callFunction(n,l,m,a,t)},e.callFunction=function(t,e,r,a,n){var o={funcName:t,parser:this,token:a,breakOnTokenText:n},s=Kr[t];if(s&&s.handler)return s.handler(o,e,r);throw new i(\"No function handler for \"+t)},e.parseArguments=function(t,e){var r=e.numArgs+e.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var a=e.greediness,n=[],o=[],s=0;s<r;s++){var h=e.argTypes&&e.argTypes[s],l=s<e.numOptionalArgs;s>0&&!l&&this.consumeSpaces(),0!==s||l||\"math\"!==this.mode||this.consumeSpaces();var m=this.nextToken,c=this.parseGroupOfType(\"argument to '\"+t+\"'\",h,l,a);if(!c){if(l){o.push(null);continue}throw new i(\"Expected group after '\"+t+\"'\",m)}(l?o:n).push(c)}return{args:n,optArgs:o}},e.parseGroupOfType=function(t,e,r,a){switch(e){case\"color\":return this.parseColorGroup(r);case\"size\":return this.parseSizeGroup(r);case\"url\":return this.parseUrlGroup(r);case\"math\":case\"text\":return this.parseGroup(t,r,a,void 0,e);case\"raw\":if(r&&\"{\"===this.nextToken.text)return null;var n=this.parseStringGroup(\"raw\",r,!0);if(n)return{type:\"raw\",mode:\"text\",string:n.text};throw new i(\"Expected raw group\",this.nextToken);case\"original\":case null:case void 0:return this.parseGroup(t,r,a);default:throw new i(\"Unknown group type as \"+t,this.nextToken)}},e.consumeSpaces=function(){for(;\" \"===this.nextToken.text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?\"[\":\"{\",n=e?\"]\":\"}\",o=this.nextToken;if(o.text!==a){if(e)return null;if(r&&\"EOF\"!==o.text&&/[^{}[\\]]/.test(o.text))return this.gullet.lexer.setCatcode(\"%\",14),this.consume(),o}var s=this.mode;this.mode=\"text\",this.expect(a);for(var h=\"\",l=this.nextToken,m=0,c=l;r&&m>0||this.nextToken.text!==n;){switch(this.nextToken.text){case\"EOF\":throw new i(\"Unexpected end of input in \"+t,l.range(c,h));case a:m++;break;case n:m--}h+=(c=this.nextToken).text,this.consume()}return this.mode=s,this.gullet.lexer.setCatcode(\"%\",14),this.expect(n),l.range(c,h)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode=\"text\";for(var a=this.nextToken,n=a,o=\"\";\"EOF\"!==this.nextToken.text&&t.test(o+this.nextToken.text);)o+=(n=this.nextToken).text,this.consume();if(\"\"===o)throw new i(\"Invalid \"+e+\": '\"+a.text+\"'\",a);return this.mode=r,a.range(n,o)},e.parseColorGroup=function(t){var e=this.parseStringGroup(\"color\",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new i(\"Invalid color: '\"+e.text+\"'\",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a=\"#\"+a),{type:\"color-token\",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||\"{\"===this.nextToken.text?this.parseStringGroup(\"size\",t):this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/,\"size\")))return null;t||0!==e.text.length||(e.text=\"0pt\",r=!0);var a=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new i(\"Invalid size: '\"+e.text+\"'\",e);var n,o={number:+(a[1]+a[2]),unit:a[3]};if(\"string\"!=typeof(n=o)&&(n=n.unit),!(n in kt||n in St||\"ex\"===n))throw new i(\"Invalid unit: '\"+o.unit+\"'\",e);return{type:\"size\",mode:this.mode,value:o,isBlank:r}},e.parseUrlGroup=function(t){var e=this.parseStringGroup(\"url\",t,!0);if(!e)return null;var r=e.text.replace(/\\\\([#$%&~_^{}])/g,\"$1\"),a=/^\\s*([^\\\\\\/#]*?)(?::|�*58|�*3a)/i.exec(r);a=null!=a?a[1]:\"_relative\";var n=this.settings.allowedProtocols;if(!c.contains(n,\"*\")&&!c.contains(n,a))throw new i(\"Forbidden protocol '\"+a+\"'\",e);return{type:\"url\",mode:this.mode,url:r}},e.parseGroup=function(e,r,n,o,s){var h,l,m=this.mode,c=this.nextToken,u=c.text;if(s&&this.switchMode(s),r?\"[\"===u:\"{\"===u||\"\\\\begingroup\"===u){h=t.endOfGroup[u],this.gullet.beginGroup(),this.consume();var d=this.parseExpression(!1,h),p=this.nextToken;this.gullet.endGroup(),l={type:\"ordgroup\",mode:this.mode,loc:a.range(c,p),body:d,semisimple:\"\\\\begingroup\"===u||void 0}}else if(r)l=null;else if(null==(l=this.parseFunction(o,e,n)||this.parseSymbol())&&\"\\\\\"===u[0]&&!ua.hasOwnProperty(u)){if(this.settings.throwOnError)throw new i(\"Undefined control sequence: \"+u,c);l=this.handleUnsupportedCmd()}return s&&this.switchMode(m),h&&this.expect(h),l},e.formLigatures=function(t){for(var e=t.length-1,r=0;r<e;++r){var n=t[r],o=n.text;\"-\"===o&&\"-\"===t[r+1].text&&(r+1<e&&\"-\"===t[r+2].text?(t.splice(r,3,{type:\"textord\",mode:\"text\",loc:a.range(n,t[r+2]),text:\"---\"}),e-=2):(t.splice(r,2,{type:\"textord\",mode:\"text\",loc:a.range(n,t[r+1]),text:\"--\"}),e-=1)),\"'\"!==o&&\"`\"!==o||t[r+1].text!==o||(t.splice(r,2,{type:\"textord\",mode:\"text\",loc:a.range(n,t[r+1]),text:o+o}),e-=1)}},e.parseSymbol=function(){var t=this.nextToken,e=t.text;if(/^\\\\verb[^a-zA-Z]/.test(e)){this.consume();var r=e.slice(5),n=\"*\"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new i(\"\\\\verb assertion failed --\\n please report what input caused this bug\");return{type:\"verb\",mode:\"text\",body:r=r.slice(1,-1),star:n}}fa.hasOwnProperty(e[0])&&!_[this.mode][e[0]]&&(this.settings.strict&&\"math\"===this.mode&&this.settings.reportNonstrict(\"unicodeTextInMathMode\",'Accented Unicode text character \"'+e[0]+'\" used in math mode',t),e=fa[e[0]]+e.substr(1));var o,s=Qr.exec(e);if(s&&(\"i\"===(e=e.substring(0,s.index))?e=\"\\u0131\":\"j\"===e&&(e=\"\\u0237\")),_[this.mode][e]){this.settings.strict&&\"math\"===this.mode&&\"\\xc7\\xd0\\xde\\xe7\\xfe\".indexOf(e)>=0&&this.settings.reportNonstrict(\"unicodeTextInMathMode\",'Latin-1/Unicode text character \"'+e[0]+'\" used in math mode',t);var h,l=_[this.mode][e].group,m=a.range(t);if(G.hasOwnProperty(l)){var c=l;h={type:\"atom\",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};o=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(z(e.charCodeAt(0))?\"math\"===this.mode&&this.settings.reportNonstrict(\"unicodeTextInMathMode\",'Unicode text character \"'+e[0]+'\" used in math mode',t):this.settings.reportNonstrict(\"unknownSymbol\",'Unrecognized Unicode character \"'+e[0]+'\" ('+e.charCodeAt(0)+\")\",t)),o={type:\"textord\",mode:this.mode,loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u<s[0].length;u++){var d=s[0][u];if(!pa[d])throw new i(\"Unknown accent ' \"+d+\"'\",t);var p=pa[d][this.mode];if(!p)throw new i(\"Accent \"+d+\" unsupported in \"+this.mode+\" mode\",t);o={type:\"accent\",mode:this.mode,loc:a.range(t),label:p,isStretchy:!1,isShifty:!0,base:o}}return o},t}();ga.endOfExpression=[\"}\",\"\\\\endgroup\",\"\\\\end\",\"\\\\right\",\"&\"],ga.endOfGroup={\"[\":\"]\",\"{\":\"}\",\"\\\\begingroup\":\"\\\\endgroup\"},ga.SUPSUB_GREEDINESS=1;var xa=function(t,e){if(!(\"string\"==typeof t||t instanceof String))throw new TypeError(\"KaTeX can only parse string typed expression\");var r=new ga(t,e);delete r.gullet.macros.current[\"\\\\df@tag\"];var a=r.parse();if(r.gullet.macros.get(\"\\\\df@tag\")){if(!e.displayMode)throw new i(\"\\\\tag works only in display equations\");r.gullet.feed(\"\\\\df@tag\"),a=[{type:\"tag\",mode:\"text\",body:a,tag:r.parse()}]}return a},va=function(t,e,r){e.textContent=\"\";var a=ya(t,r).toNode();e.appendChild(a)};\"undefined\"!=typeof document&&\"CSS1Compat\"!==document.compatMode&&(\"undefined\"!=typeof console&&console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype.\"),va=function(){throw new i(\"KaTeX doesn't work in quirks mode.\")});var ba=function(t,e,r){if(r.throwOnError||!(t instanceof i))throw t;var a=Lt.makeSpan([\"katex-error\"],[new E(e)]);return a.setAttribute(\"title\",t.toString()),a.setAttribute(\"style\",\"color:\"+r.errorColor),a},ya=function(t,e){var r=new u(e);try{var a=xa(t,r);return Se(a,t,r)}catch(e){return ba(e,t,r)}},wa={version:\"0.10.2\",render:va,renderToString:function(t,e){return ya(t,e).toMarkup()},ParseError:i,__parse:function(t,e){var r=new u(e);return xa(t,r)},__renderToDomTree:ya,__renderToHTMLTree:function(t,e){var r=new u(e);try{return function(t,e,r){var a=me(t,we(r)),n=Lt.makeSpan([\"katex\"],[a]);return ke(n,r)}(xa(t,r),0,r)}catch(e){return ba(e,t,r)}},__setFontMetrics:function(t,e){P[t]=e},__defineSymbol:W,__defineMacro:oa,__domTree:{Span:N,Anchor:I,SymbolNode:E,SvgNode:R,PathNode:L,LineNode:H}};e.default=wa}]).default});\n\n})(!$tw.browser ? $tw.fakeDocument : window.document)\n",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/katex/katex.min.js",
"module-type": "library"
},
"$:/plugins/tiddlywiki/katex/mhchem.min.js": {
"text": "/* eslint-disable */\n/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/*************************************************************\n *\n * KaTeX mhchem.js\n *\n * This file implements a KaTeX version of mhchem version 3.3.0.\n * It is adapted from MathJax/extensions/TeX/mhchem.js\n * It differs from the MathJax version as follows:\n * 1. The interface is changed so that it can be called from KaTeX, not MathJax.\n * 2. \\rlap and \\llap are replaced with \\mathrlap and \\mathllap.\n * 3. Four lines of code are edited in order to use \\raisebox instead of \\raise.\n * 4. The reaction arrow code is simplified. All reaction arrows are rendered\n * using KaTeX extensible arrows instead of building non-extensible arrows.\n * 5. \\tripledash vertical alignment is slightly adjusted.\n *\n * This code, as other KaTeX code, is released under the MIT license.\n * \n * /*************************************************************\n *\n * MathJax/extensions/TeX/mhchem.js\n *\n * Implements the \\ce command for handling chemical formulas\n * from the mhchem LaTeX package.\n *\n * ---------------------------------------------------------------------\n *\n * Copyright (c) 2011-2015 The MathJax Consortium\n * Copyright (c) 2015-2018 Martin Hensel\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n//\n// Coding Style\n// - use '' for identifiers that can by minified/uglified\n// - use \"\" for strings that need to stay untouched\n\n// version: \"3.3.0\" for MathJax and KaTeX\n\n/****************************************\n*****************************************\n* TiddlyWiki: moved the katex-module definitions to wrapper.js\n*****************************************\n*****************************************/\n\n //\n // This is the main function for handing the \\ce and \\pu commands.\n // It takes the argument to \\ce or \\pu and returns the corresponding TeX string.\n //\n\n // TiddlyWiki: replaced `var chemParse =` with `module.exports =` ... no more modifications in this file\n module.exports = function (tokens, stateMachine) {\n // Recreate the argument string from KaTeX's array of tokens.\n var str = \"\";\n var expectedLoc = tokens[tokens.length - 1].loc.start\n for (var i = tokens.length - 1; i >= 0; i--) {\n if(tokens[i].loc.start > expectedLoc) {\n // context.consumeArgs has eaten a space.\n str += \" \";\n expectedLoc = tokens[i].loc.start;\n }\n str += tokens[i].text;\n expectedLoc += tokens[i].text.length;\n }\n var tex = texify.go(mhchemParser.go(str, stateMachine));\n return tex;\n };\n\n //\n // Core parser for mhchem syntax (recursive)\n //\n /** @type {MhchemParser} */\n var mhchemParser = {\n //\n // Parses mchem \\ce syntax\n //\n // Call like\n // go(\"H2O\");\n //\n go: function (input, stateMachine) {\n if (!input) { return []; }\n if (stateMachine === undefined) { stateMachine = 'ce'; }\n var state = '0';\n\n //\n // String buffers for parsing:\n //\n // buffer.a == amount\n // buffer.o == element\n // buffer.b == left-side superscript\n // buffer.p == left-side subscript\n // buffer.q == right-side subscript\n // buffer.d == right-side superscript\n //\n // buffer.r == arrow\n // buffer.rdt == arrow, script above, type\n // buffer.rd == arrow, script above, content\n // buffer.rqt == arrow, script below, type\n // buffer.rq == arrow, script below, content\n //\n // buffer.text_\n // buffer.rm\n // etc.\n //\n // buffer.parenthesisLevel == int, starting at 0\n // buffer.sb == bool, space before\n // buffer.beginsWithBond == bool\n //\n // These letters are also used as state names.\n //\n // Other states:\n // 0 == begin of main part (arrow/operator unlikely)\n // 1 == next entity\n // 2 == next entity (arrow/operator unlikely)\n // 3 == next atom\n // c == macro\n //\n /** @type {Buffer} */\n var buffer = {};\n buffer['parenthesisLevel'] = 0;\n\n input = input.replace(/\\n/g, \" \");\n input = input.replace(/[\\u2212\\u2013\\u2014\\u2010]/g, \"-\");\n input = input.replace(/[\\u2026]/g, \"...\");\n\n //\n // Looks through mhchemParser.transitions, to execute a matching action\n // (recursive)\n //\n var lastInput;\n var watchdog = 10;\n /** @type {ParserOutput[]} */\n var output = [];\n while (true) {\n if (lastInput !== input) {\n watchdog = 10;\n lastInput = input;\n } else {\n watchdog--;\n }\n //\n // Find actions in transition table\n //\n var machine = mhchemParser.stateMachines[stateMachine];\n var t = machine.transitions[state] || machine.transitions['*'];\n iterateTransitions:\n for (var i=0; i<t.length; i++) {\n var matches = mhchemParser.patterns.match_(t[i].pattern, input);\n if (matches) {\n //\n // Execute actions\n //\n var task = t[i].task;\n for (var iA=0; iA<task.action_.length; iA++) {\n var o;\n //\n // Find and execute action\n //\n if (machine.actions[task.action_[iA].type_]) {\n o = machine.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);\n } else if (mhchemParser.actions[task.action_[iA].type_]) {\n o = mhchemParser.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);\n } else {\n throw [\"MhchemBugA\", \"mhchem bug A. Please report. (\" + task.action_[iA].type_ + \")\"]; // Trying to use non-existing action\n }\n //\n // Add output\n //\n mhchemParser.concatArray(output, o);\n }\n //\n // Set next state,\n // Shorten input,\n // Continue with next character\n // (= apply only one transition per position)\n //\n state = task.nextState || state;\n if (input.length > 0) {\n if (!task.revisit) {\n input = matches.remainder;\n }\n if (!task.toContinue) {\n break iterateTransitions;\n }\n } else {\n return output;\n }\n }\n }\n //\n // Prevent infinite loop\n //\n if (watchdog <= 0) {\n throw [\"MhchemBugU\", \"mhchem bug U. Please report.\"]; // Unexpected character\n }\n }\n },\n concatArray: function (a, b) {\n if (b) {\n if (Array.isArray(b)) {\n for (var iB=0; iB<b.length; iB++) {\n a.push(b[iB]);\n }\n } else {\n a.push(b);\n }\n }\n },\n\n patterns: {\n //\n // Matching patterns\n // either regexps or function that return null or {match_:\"a\", remainder:\"bc\"}\n //\n patterns: {\n // property names must not look like integers (\"2\") for correct property traversal order, later on\n 'empty': /^$/,\n 'else': /^./,\n 'else2': /^./,\n 'space': /^\\s/,\n 'space A': /^\\s(?=[A-Z\\\\$])/,\n 'space$': /^\\s$/,\n 'a-z': /^[a-z]/,\n 'x': /^x/,\n 'x$': /^x$/,\n 'i$': /^i$/,\n 'letters': /^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\n '\\\\greek': /^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\n 'one lowercase latin letter $': /^(?:([a-z])(?:$|[^a-zA-Z]))$/,\n '$one lowercase latin letter$ $': /^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\n 'one lowercase greek letter $': /^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,\n 'digits': /^[0-9]+/,\n '-9.,9': /^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\n '-9.,9 no missing 0': /^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\n '(-)(9.,9)(e)(99)': function (input) {\n var m = input.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);\n if (m && m[0]) {\n return { match_: m.splice(1), remainder: input.substr(m[0].length) };\n }\n return null;\n },\n '(-)(9)^(-9)': function (input) {\n var m = input.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);\n if (m && m[0]) {\n return { match_: m.splice(1), remainder: input.substr(m[0].length) };\n }\n return null;\n },\n 'state of aggregation $': function (input) { // ... or crystal system\n var a = mhchemParser.patterns.findObserveGroups(input, \"\", /^\\([a-z]{1,3}(?=[\\),])/, \")\", \"\"); // (aq), (aq,$\\infty$), (aq, sat)\n if (a && a.remainder.match(/^($|[\\s,;\\)\\]\\}])/)) { return a; } // AND end of 'phrase'\n var m = input.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/); // OR crystal system ($o$) (\\ca$c$)\n if (m) {\n return { match_: m[0], remainder: input.substr(m[0].length) };\n }\n return null;\n },\n '_{(state of aggregation)}$': /^_\\{(\\([a-z]{1,3}\\))\\}/,\n '{[(': /^(?:\\\\\\{|\\[|\\()/,\n ')]}': /^(?:\\)|\\]|\\\\\\})/,\n ', ': /^[,;]\\s*/,\n ',': /^[,;]/,\n '.': /^[.]/,\n '. ': /^([.\\u22C5\\u00B7\\u2022])\\s*/,\n '...': /^\\.\\.\\.(?=$|[^.])/,\n '* ': /^([*])\\s*/,\n '^{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^{\", \"\", \"\", \"}\"); },\n '^($...$)': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", \"$\", \"$\", \"\"); },\n '^a': /^\\^([0-9]+|[^\\\\_])/,\n '^\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n '^\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n '^\\\\x': /^\\^(\\\\[a-zA-Z]+)\\s*/,\n '^(-1)': /^\\^(-?\\d+)/,\n '\\'': /^'/,\n '_{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_{\", \"\", \"\", \"}\"); },\n '_($...$)': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", \"$\", \"$\", \"\"); },\n '_9': /^_([+\\-]?[0-9]+|[^\\\\])/,\n '_\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n '_\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n '_\\\\x': /^_(\\\\[a-zA-Z]+)\\s*/,\n '^_': /^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\n '{}': /^\\{\\}/,\n '{...}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", \"{\", \"}\", \"\"); },\n '{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"{\", \"\", \"\", \"}\"); },\n '$...$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", \"$\", \"$\", \"\"); },\n '${(...)}$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"${\", \"\", \"\", \"}$\"); },\n '$(...)$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"$\", \"\", \"\", \"$\"); },\n '=<>': /^[=<>]/,\n '#': /^[#\\u2261]/,\n '+': /^\\+/,\n '-$': /^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/, // -space -, -; -] -/ -$ -state-of-aggregation\n '-9': /^-(?=[0-9])/,\n '- orbital overlap': /^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\n '-': /^-/,\n 'pm-operator': /^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,\n 'operator': /^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,\n 'arrowUpDown': /^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\n '\\\\bond{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\bond{\", \"\", \"\", \"}\"); },\n '->': /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,\n 'CMT': /^[CMT](?=\\[)/,\n '[(...)]': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"[\", \"\", \"\", \"]\"); },\n '1st-level escape': /^(&|\\\\\\\\|\\\\hline)\\s*/,\n '\\\\,': /^(?:\\\\[,\\ ;:])/, // \\\\x - but output no space before\n '\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n '\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n '\\\\ca': /^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\n '\\\\x': /^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,\n 'orbital': /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/, // only those with numbers in front, because the others will be formatted correctly anyway\n 'others': /^[\\/~|]/,\n '\\\\frac{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\frac{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\overset{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\overset{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\underset{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\underset{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\underbrace{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\underbrace{\", \"\", \"\", \"}_\", \"{\", \"\", \"\", \"}\"); },\n '\\\\color{(...)}0': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color{\", \"\", \"\", \"}\"); },\n '\\\\color{(...)}{(...)}1': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\color(...){(...)}2': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color\", \"\\\\\", \"\", /^(?=\\{)/, \"{\", \"\", \"\", \"}\"); },\n '\\\\ce{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\ce{\", \"\", \"\", \"}\"); },\n 'oxidation$': /^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\n 'd-oxidation$': /^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/, // 0 could be oxidation or charge\n 'roman numeral': /^[IVX]+/,\n '1/2$': /^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,\n 'amount': function (input) {\n var match;\n // e.g. 2, 0.5, 1/2, -2, n/2, +; $a$ could be added later in parsing\n match = input.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/);\n if (match) {\n return { match_: match[0], remainder: input.substr(match[0].length) };\n }\n var a = mhchemParser.patterns.findObserveGroups(input, \"\", \"$\", \"$\", \"\");\n if (a) { // e.g. $2n-1$, $-$\n match = a.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/);\n if (match) {\n return { match_: match[0], remainder: input.substr(match[0].length) };\n }\n }\n return null;\n },\n 'amount2': function (input) { return this['amount'](input); },\n '(KV letters),': /^(?:[A-Z][a-z]{0,2}|i)(?=,)/,\n 'formula$': function (input) {\n if (input.match(/^\\([a-z]+\\)$/)) { return null; } // state of aggregation = no formula\n var match = input.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);\n if (match) {\n return { match_: match[0], remainder: input.substr(match[0].length) };\n }\n return null;\n },\n 'uprightEntities': /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\n '/': /^\\s*(\\/)\\s*/,\n '//': /^\\s*(\\/\\/)\\s*/,\n '*': /^\\s*[*.]\\s*/\n },\n findObserveGroups: function (input, begExcl, begIncl, endIncl, endExcl, beg2Excl, beg2Incl, end2Incl, end2Excl, combine) {\n /** @type {{(input: string, pattern: string | RegExp): string | string[] | null;}} */\n var _match = function (input, pattern) {\n if (typeof pattern === \"string\") {\n if (input.indexOf(pattern) !== 0) { return null; }\n return pattern;\n } else {\n var match = input.match(pattern);\n if (!match) { return null; }\n return match[0];\n }\n };\n /** @type {{(input: string, i: number, endChars: string | RegExp): {endMatchBegin: number, endMatchEnd: number} | null;}} */\n var _findObserveGroups = function (input, i, endChars) {\n var braces = 0;\n while (i < input.length) {\n var a = input.charAt(i);\n var match = _match(input.substr(i), endChars);\n if (match !== null && braces === 0) {\n return { endMatchBegin: i, endMatchEnd: i + match.length };\n } else if (a === \"{\") {\n braces++;\n } else if (a === \"}\") {\n if (braces === 0) {\n throw [\"ExtraCloseMissingOpen\", \"Extra close brace or missing open brace\"];\n } else {\n braces--;\n }\n }\n i++;\n }\n if (braces > 0) {\n return null;\n }\n return null;\n };\n var match = _match(input, begExcl);\n if (match === null) { return null; }\n input = input.substr(match.length);\n match = _match(input, begIncl);\n if (match === null) { return null; }\n var e = _findObserveGroups(input, match.length, endIncl || endExcl);\n if (e === null) { return null; }\n var match1 = input.substring(0, (endIncl ? e.endMatchEnd : e.endMatchBegin));\n if (!(beg2Excl || beg2Incl)) {\n return {\n match_: match1,\n remainder: input.substr(e.endMatchEnd)\n };\n } else {\n var group2 = this.findObserveGroups(input.substr(e.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl);\n if (group2 === null) { return null; }\n /** @type {string[]} */\n var matchRet = [match1, group2.match_];\n return {\n match_: (combine ? matchRet.join(\"\") : matchRet),\n remainder: group2.remainder\n };\n }\n },\n\n //\n // Matching function\n // e.g. match(\"a\", input) will look for the regexp called \"a\" and see if it matches\n // returns null or {match_:\"a\", remainder:\"bc\"}\n //\n match_: function (m, input) {\n var pattern = mhchemParser.patterns.patterns[m];\n if (pattern === undefined) {\n throw [\"MhchemBugP\", \"mhchem bug P. Please report. (\" + m + \")\"]; // Trying to use non-existing pattern\n } else if (typeof pattern === \"function\") {\n return mhchemParser.patterns.patterns[m](input); // cannot use cached var pattern here, because some pattern functions need this===mhchemParser\n } else { // RegExp\n var match = input.match(pattern);\n if (match) {\n var mm;\n if (match[2]) {\n mm = [ match[1], match[2] ];\n } else if (match[1]) {\n mm = match[1];\n } else {\n mm = match[0];\n }\n return { match_: mm, remainder: input.substr(match[0].length) };\n }\n return null;\n }\n }\n },\n\n //\n // Generic state machine actions\n //\n actions: {\n 'a=': function (buffer, m) { buffer.a = (buffer.a || \"\") + m; },\n 'b=': function (buffer, m) { buffer.b = (buffer.b || \"\") + m; },\n 'p=': function (buffer, m) { buffer.p = (buffer.p || \"\") + m; },\n 'o=': function (buffer, m) { buffer.o = (buffer.o || \"\") + m; },\n 'q=': function (buffer, m) { buffer.q = (buffer.q || \"\") + m; },\n 'd=': function (buffer, m) { buffer.d = (buffer.d || \"\") + m; },\n 'rm=': function (buffer, m) { buffer.rm = (buffer.rm || \"\") + m; },\n 'text=': function (buffer, m) { buffer.text_ = (buffer.text_ || \"\") + m; },\n 'insert': function (buffer, m, a) { return { type_: a }; },\n 'insert+p1': function (buffer, m, a) { return { type_: a, p1: m }; },\n 'insert+p1+p2': function (buffer, m, a) { return { type_: a, p1: m[0], p2: m[1] }; },\n 'copy': function (buffer, m) { return m; },\n 'rm': function (buffer, m) { return { type_: 'rm', p1: m || \"\"}; },\n 'text': function (buffer, m) { return mhchemParser.go(m, 'text'); },\n '{text}': function (buffer, m) {\n var ret = [ \"{\" ];\n mhchemParser.concatArray(ret, mhchemParser.go(m, 'text'));\n ret.push(\"}\");\n return ret;\n },\n 'tex-math': function (buffer, m) { return mhchemParser.go(m, 'tex-math'); },\n 'tex-math tight': function (buffer, m) { return mhchemParser.go(m, 'tex-math tight'); },\n 'bond': function (buffer, m, k) { return { type_: 'bond', kind_: k || m }; },\n 'color0-output': function (buffer, m) { return { type_: 'color0', color: m[0] }; },\n 'ce': function (buffer, m) { return mhchemParser.go(m); },\n '1/2': function (buffer, m) {\n /** @type {ParserOutput[]} */\n var ret = [];\n if (m.match(/^[+\\-]/)) {\n ret.push(m.substr(0, 1));\n m = m.substr(1);\n }\n var n = m.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);\n n[1] = n[1].replace(/\\$/g, \"\");\n ret.push({ type_: 'frac', p1: n[1], p2: n[2] });\n if (n[3]) {\n n[3] = n[3].replace(/\\$/g, \"\");\n ret.push({ type_: 'tex-math', p1: n[3] });\n }\n return ret;\n },\n '9,9': function (buffer, m) { return mhchemParser.go(m, '9,9'); }\n },\n //\n // createTransitions\n // convert { 'letter': { 'state': { action_: 'output' } } } to { 'state' => [ { pattern: 'letter', task: { action_: [{type_: 'output'}] } } ] }\n // with expansion of 'a|b' to 'a' and 'b' (at 2 places)\n //\n createTransitions: function (o) {\n var pattern, state;\n /** @type {string[]} */\n var stateArray;\n var i;\n //\n // 1. Collect all states\n //\n /** @type {Transitions} */\n var transitions = {};\n for (pattern in o) {\n for (state in o[pattern]) {\n stateArray = state.split(\"|\");\n o[pattern][state].stateArray = stateArray;\n for (i=0; i<stateArray.length; i++) {\n transitions[stateArray[i]] = [];\n }\n }\n }\n //\n // 2. Fill states\n //\n for (pattern in o) {\n for (state in o[pattern]) {\n stateArray = o[pattern][state].stateArray || [];\n for (i=0; i<stateArray.length; i++) {\n //\n // 2a. Normalize actions into array: 'text=' ==> [{type_:'text='}]\n // (Note to myself: Resolving the function here would be problematic. It would need .bind (for *this*) and currying (for *option*).)\n //\n /** @type {any} */\n var p = o[pattern][state];\n if (p.action_) {\n p.action_ = [].concat(p.action_);\n for (var k=0; k<p.action_.length; k++) {\n if (typeof p.action_[k] === \"string\") {\n p.action_[k] = { type_: p.action_[k] };\n }\n }\n } else {\n p.action_ = [];\n }\n //\n // 2.b Multi-insert\n //\n var patternArray = pattern.split(\"|\");\n for (var j=0; j<patternArray.length; j++) {\n if (stateArray[i] === '*') { // insert into all\n for (var t in transitions) {\n transitions[t].push({ pattern: patternArray[j], task: p });\n }\n } else {\n transitions[stateArray[i]].push({ pattern: patternArray[j], task: p });\n }\n }\n }\n }\n }\n return transitions;\n },\n stateMachines: {}\n };\n\n //\n // Definition of state machines\n //\n mhchemParser.stateMachines = {\n //\n // \\ce state machines\n //\n //#region ce\n 'ce': { // main parser\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n 'else': {\n '0|1|2': { action_: 'beginsWithBond=false', revisit: true, toContinue: true } },\n 'oxidation$': {\n '0': { action_: 'oxidation-output' } },\n 'CMT': {\n 'r': { action_: 'rdt=', nextState: 'rt' },\n 'rd': { action_: 'rqt=', nextState: 'rdt' } },\n 'arrowUpDown': {\n '0|1|2|as': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '1' } },\n 'uprightEntities': {\n '0|1|2': { action_: [ 'o=', 'output' ], nextState: '1' } },\n 'orbital': {\n '0|1|2|3': { action_: 'o=', nextState: 'o' } },\n '->': {\n '0|1|2|3': { action_: 'r=', nextState: 'r' },\n 'a|as': { action_: [ 'output', 'r=' ], nextState: 'r' },\n '*': { action_: [ 'output', 'r=' ], nextState: 'r' } },\n '+': {\n 'o': { action_: 'd= kv', nextState: 'd' },\n 'd|D': { action_: 'd=', nextState: 'd' },\n 'q': { action_: 'd=', nextState: 'qd' },\n 'qd|qD': { action_: 'd=', nextState: 'qd' },\n 'dq': { action_: [ 'output', 'd=' ], nextState: 'd' },\n '3': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '0' } },\n 'amount': {\n '0|2': { action_: 'a=', nextState: 'a' } },\n 'pm-operator': {\n '0|1|2|a|as': { action_: [ 'sb=false', 'output', { type_: 'operator', option: '\\\\pm' } ], nextState: '0' } },\n 'operator': {\n '0|1|2|a|as': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '0' } },\n '-$': {\n 'o|q': { action_: [ 'charge or bond', 'output' ], nextState: 'qd' },\n 'd': { action_: 'd=', nextState: 'd' },\n 'D': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' },\n 'q': { action_: 'd=', nextState: 'qd' },\n 'qd': { action_: 'd=', nextState: 'qd' },\n 'qD|dq': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' } },\n '-9': {\n '3|o': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '3' } },\n '- orbital overlap': {\n 'o': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' },\n 'd': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' } },\n '-': {\n '0|1|2': { action_: [ { type_: 'output', option: 1 }, 'beginsWithBond=true', { type_: 'bond', option: \"-\" } ], nextState: '3' },\n '3': { action_: { type_: 'bond', option: \"-\" } },\n 'a': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' },\n 'as': { action_: [ { type_: 'output', option: 2 }, { type_: 'bond', option: \"-\" } ], nextState: '3' },\n 'b': { action_: 'b=' },\n 'o': { action_: { type_: '- after o/d', option: false }, nextState: '2' },\n 'q': { action_: { type_: '- after o/d', option: false }, nextState: '2' },\n 'd|qd|dq': { action_: { type_: '- after o/d', option: true }, nextState: '2' },\n 'D|qD|p': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' } },\n 'amount2': {\n '1|3': { action_: 'a=', nextState: 'a' } },\n 'letters': {\n '0|1|2|3|a|as|b|p|bp|o': { action_: 'o=', nextState: 'o' },\n 'q|dq': { action_: ['output', 'o='], nextState: 'o' },\n 'd|D|qd|qD': { action_: 'o after d', nextState: 'o' } },\n 'digits': {\n 'o': { action_: 'q=', nextState: 'q' },\n 'd|D': { action_: 'q=', nextState: 'dq' },\n 'q': { action_: [ 'output', 'o=' ], nextState: 'o' },\n 'a': { action_: 'o=', nextState: 'o' } },\n 'space A': {\n 'b|p|bp': {} },\n 'space': {\n 'a': { nextState: 'as' },\n '0': { action_: 'sb=false' },\n '1|2': { action_: 'sb=true' },\n 'r|rt|rd|rdt|rdq': { action_: 'output', nextState: '0' },\n '*': { action_: [ 'output', 'sb=true' ], nextState: '1'} },\n '1st-level escape': {\n '1|2': { action_: [ 'output', { type_: 'insert+p1', option: '1st-level escape' } ] },\n '*': { action_: [ 'output', { type_: 'insert+p1', option: '1st-level escape' } ], nextState: '0' } },\n '[(...)]': {\n 'r|rt': { action_: 'rd=', nextState: 'rd' },\n 'rd|rdt': { action_: 'rq=', nextState: 'rdq' } },\n '...': {\n 'o|d|D|dq|qd|qD': { action_: [ 'output', { type_: 'bond', option: \"...\" } ], nextState: '3' },\n '*': { action_: [ { type_: 'output', option: 1 }, { type_: 'insert', option: 'ellipsis' } ], nextState: '1' } },\n '. |* ': {\n '*': { action_: [ 'output', { type_: 'insert', option: 'addition compound' } ], nextState: '1' } },\n 'state of aggregation $': {\n '*': { action_: [ 'output', 'state of aggregation' ], nextState: '1' } },\n '{[(': {\n 'a|as|o': { action_: [ 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' },\n '0|1|2|3': { action_: [ 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' },\n '*': { action_: [ 'output', 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' } },\n ')]}': {\n '0|1|2|3|b|p|bp|o': { action_: [ 'o=', 'parenthesisLevel--' ], nextState: 'o' },\n 'a|as|d|D|q|qd|qD|dq': { action_: [ 'output', 'o=', 'parenthesisLevel--' ], nextState: 'o' } },\n ', ': {\n '*': { action_: [ 'output', 'comma' ], nextState: '0' } },\n '^_': { // ^ and _ without a sensible argument\n '*': { } },\n '^{(...)}|^($...$)': {\n '0|1|2|as': { action_: 'b=', nextState: 'b' },\n 'p': { action_: 'b=', nextState: 'bp' },\n '3|o': { action_: 'd= kv', nextState: 'D' },\n 'q': { action_: 'd=', nextState: 'qD' },\n 'd|D|qd|qD|dq': { action_: [ 'output', 'd=' ], nextState: 'D' } },\n '^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|\\'': {\n '0|1|2|as': { action_: 'b=', nextState: 'b' },\n 'p': { action_: 'b=', nextState: 'bp' },\n '3|o': { action_: 'd= kv', nextState: 'd' },\n 'q': { action_: 'd=', nextState: 'qd' },\n 'd|qd|D|qD': { action_: 'd=' },\n 'dq': { action_: [ 'output', 'd=' ], nextState: 'd' } },\n '_{(state of aggregation)}$': {\n 'd|D|q|qd|qD|dq': { action_: [ 'output', 'q=' ], nextState: 'q' } },\n '_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x': {\n '0|1|2|as': { action_: 'p=', nextState: 'p' },\n 'b': { action_: 'p=', nextState: 'bp' },\n '3|o': { action_: 'q=', nextState: 'q' },\n 'd|D': { action_: 'q=', nextState: 'dq' },\n 'q|qd|qD|dq': { action_: [ 'output', 'q=' ], nextState: 'q' } },\n '=<>': {\n '0|1|2|3|a|as|o|q|d|D|qd|qD|dq': { action_: [ { type_: 'output', option: 2 }, 'bond' ], nextState: '3' } },\n '#': {\n '0|1|2|3|a|as|o': { action_: [ { type_: 'output', option: 2 }, { type_: 'bond', option: \"#\" } ], nextState: '3' } },\n '{}': {\n '*': { action_: { type_: 'output', option: 1 }, nextState: '1' } },\n '{...}': {\n '0|1|2|3|a|as|b|p|bp': { action_: 'o=', nextState: 'o' },\n 'o|d|D|q|qd|qD|dq': { action_: [ 'output', 'o=' ], nextState: 'o' } },\n '$...$': {\n 'a': { action_: 'a=' }, // 2$n$\n '0|1|2|3|as|b|p|bp|o': { action_: 'o=', nextState: 'o' }, // not 'amount'\n 'as|o': { action_: 'o=' },\n 'q|d|D|qd|qD|dq': { action_: [ 'output', 'o=' ], nextState: 'o' } },\n '\\\\bond{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'bond' ], nextState: \"3\" } },\n '\\\\frac{(...)}': {\n '*': { action_: [ { type_: 'output', option: 1 }, 'frac-output' ], nextState: '3' } },\n '\\\\overset{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'overset-output' ], nextState: '3' } },\n '\\\\underset{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'underset-output' ], nextState: '3' } },\n '\\\\underbrace{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'underbrace-output' ], nextState: '3' } },\n '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'color-output' ], nextState: '3' } },\n '\\\\color{(...)}0': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'color0-output' ] } },\n '\\\\ce{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'ce' ], nextState: '3' } },\n '\\\\,': {\n '*': { action_: [ { type_: 'output', option: 1 }, 'copy' ], nextState: '1' } },\n '\\\\x{}{}|\\\\x{}|\\\\x': {\n '0|1|2|3|a|as|b|p|bp|o|c0': { action_: [ 'o=', 'output' ], nextState: '3' },\n '*': { action_: ['output', 'o=', 'output' ], nextState: '3' } },\n 'others': {\n '*': { action_: [ { type_: 'output', option: 1 }, 'copy' ], nextState: '3' } },\n 'else2': {\n 'a': { action_: 'a to o', nextState: 'o', revisit: true },\n 'as': { action_: [ 'output', 'sb=true' ], nextState: '1', revisit: true },\n 'r|rt|rd|rdt|rdq': { action_: [ 'output' ], nextState: '0', revisit: true },\n '*': { action_: [ 'output', 'copy' ], nextState: '3' } }\n }),\n actions: {\n 'o after d': function (buffer, m) {\n var ret;\n if ((buffer.d || \"\").match(/^[0-9]+$/)) {\n var tmp = buffer.d;\n buffer.d = undefined;\n ret = this['output'](buffer);\n buffer.b = tmp;\n } else {\n ret = this['output'](buffer);\n }\n mhchemParser.actions['o='](buffer, m);\n return ret;\n },\n 'd= kv': function (buffer, m) {\n buffer.d = m;\n buffer.dType = 'kv';\n },\n 'charge or bond': function (buffer, m) {\n if (buffer['beginsWithBond']) {\n /** @type {ParserOutput[]} */\n var ret = [];\n mhchemParser.concatArray(ret, this['output'](buffer));\n mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, \"-\"));\n return ret;\n } else {\n buffer.d = m;\n }\n },\n '- after o/d': function (buffer, m, isAfterD) {\n var c1 = mhchemParser.patterns.match_('orbital', buffer.o || \"\");\n var c2 = mhchemParser.patterns.match_('one lowercase greek letter $', buffer.o || \"\");\n var c3 = mhchemParser.patterns.match_('one lowercase latin letter $', buffer.o || \"\");\n var c4 = mhchemParser.patterns.match_('$one lowercase latin letter$ $', buffer.o || \"\");\n var hyphenFollows = m===\"-\" && ( c1 && c1.remainder===\"\" || c2 || c3 || c4 );\n if (hyphenFollows && !buffer.a && !buffer.b && !buffer.p && !buffer.d && !buffer.q && !c1 && c3) {\n buffer.o = '$' + buffer.o + '$';\n }\n /** @type {ParserOutput[]} */\n var ret = [];\n if (hyphenFollows) {\n mhchemParser.concatArray(ret, this['output'](buffer));\n ret.push({ type_: 'hyphen' });\n } else {\n c1 = mhchemParser.patterns.match_('digits', buffer.d || \"\");\n if (isAfterD && c1 && c1.remainder==='') {\n mhchemParser.concatArray(ret, mhchemParser.actions['d='](buffer, m));\n mhchemParser.concatArray(ret, this['output'](buffer));\n } else {\n mhchemParser.concatArray(ret, this['output'](buffer));\n mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, \"-\"));\n }\n }\n return ret;\n },\n 'a to o': function (buffer) {\n buffer.o = buffer.a;\n buffer.a = undefined;\n },\n 'sb=true': function (buffer) { buffer.sb = true; },\n 'sb=false': function (buffer) { buffer.sb = false; },\n 'beginsWithBond=true': function (buffer) { buffer['beginsWithBond'] = true; },\n 'beginsWithBond=false': function (buffer) { buffer['beginsWithBond'] = false; },\n 'parenthesisLevel++': function (buffer) { buffer['parenthesisLevel']++; },\n 'parenthesisLevel--': function (buffer) { buffer['parenthesisLevel']--; },\n 'state of aggregation': function (buffer, m) {\n return { type_: 'state of aggregation', p1: mhchemParser.go(m, 'o') };\n },\n 'comma': function (buffer, m) {\n var a = m.replace(/\\s*$/, '');\n var withSpace = (a !== m);\n if (withSpace && buffer['parenthesisLevel'] === 0) {\n return { type_: 'comma enumeration L', p1: a };\n } else {\n return { type_: 'comma enumeration M', p1: a };\n }\n },\n 'output': function (buffer, m, entityFollows) {\n // entityFollows:\n // undefined = if we have nothing else to output, also ignore the just read space (buffer.sb)\n // 1 = an entity follows, never omit the space if there was one just read before (can only apply to state 1)\n // 2 = 1 + the entity can have an amount, so output a\\, instead of converting it to o (can only apply to states a|as)\n /** @type {ParserOutput | ParserOutput[]} */\n var ret;\n if (!buffer.r) {\n ret = [];\n if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) {\n //ret = [];\n } else {\n if (buffer.sb) {\n ret.push({ type_: 'entitySkip' });\n }\n if (!buffer.o && !buffer.q && !buffer.d && !buffer.b && !buffer.p && entityFollows!==2) {\n buffer.o = buffer.a;\n buffer.a = undefined;\n } else if (!buffer.o && !buffer.q && !buffer.d && (buffer.b || buffer.p)) {\n buffer.o = buffer.a;\n buffer.d = buffer.b;\n buffer.q = buffer.p;\n buffer.a = buffer.b = buffer.p = undefined;\n } else {\n if (buffer.o && buffer.dType==='kv' && mhchemParser.patterns.match_('d-oxidation$', buffer.d || \"\")) {\n buffer.dType = 'oxidation';\n } else if (buffer.o && buffer.dType==='kv' && !buffer.q) {\n buffer.dType = undefined;\n }\n }\n ret.push({\n type_: 'chemfive',\n a: mhchemParser.go(buffer.a, 'a'),\n b: mhchemParser.go(buffer.b, 'bd'),\n p: mhchemParser.go(buffer.p, 'pq'),\n o: mhchemParser.go(buffer.o, 'o'),\n q: mhchemParser.go(buffer.q, 'pq'),\n d: mhchemParser.go(buffer.d, (buffer.dType === 'oxidation' ? 'oxidation' : 'bd')),\n dType: buffer.dType\n });\n }\n } else { // r\n /** @type {ParserOutput[]} */\n var rd;\n if (buffer.rdt === 'M') {\n rd = mhchemParser.go(buffer.rd, 'tex-math');\n } else if (buffer.rdt === 'T') {\n rd = [ { type_: 'text', p1: buffer.rd || \"\" } ];\n } else {\n rd = mhchemParser.go(buffer.rd);\n }\n /** @type {ParserOutput[]} */\n var rq;\n if (buffer.rqt === 'M') {\n rq = mhchemParser.go(buffer.rq, 'tex-math');\n } else if (buffer.rqt === 'T') {\n rq = [ { type_: 'text', p1: buffer.rq || \"\"} ];\n } else {\n rq = mhchemParser.go(buffer.rq);\n }\n ret = {\n type_: 'arrow',\n r: buffer.r,\n rd: rd,\n rq: rq\n };\n }\n for (var p in buffer) {\n if (p !== 'parenthesisLevel' && p !== 'beginsWithBond') {\n delete buffer[p];\n }\n }\n return ret;\n },\n 'oxidation-output': function (buffer, m) {\n var ret = [ \"{\" ];\n mhchemParser.concatArray(ret, mhchemParser.go(m, 'oxidation'));\n ret.push(\"}\");\n return ret;\n },\n 'frac-output': function (buffer, m) {\n return { type_: 'frac-ce', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'overset-output': function (buffer, m) {\n return { type_: 'overset', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'underset-output': function (buffer, m) {\n return { type_: 'underset', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'underbrace-output': function (buffer, m) {\n return { type_: 'underbrace', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'color-output': function (buffer, m) {\n return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1]) };\n },\n 'r=': function (buffer, m) { buffer.r = m; },\n 'rdt=': function (buffer, m) { buffer.rdt = m; },\n 'rd=': function (buffer, m) { buffer.rd = m; },\n 'rqt=': function (buffer, m) { buffer.rqt = m; },\n 'rq=': function (buffer, m) { buffer.rq = m; },\n 'operator': function (buffer, m, p1) { return { type_: 'operator', kind_: (p1 || m) }; }\n }\n },\n 'a': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n '1/2$': {\n '0': { action_: '1/2' } },\n 'else': {\n '0': { nextState: '1', revisit: true } },\n '$(...)$': {\n '*': { action_: 'tex-math tight', nextState: '1' } },\n ',': {\n '*': { action_: { type_: 'insert', option: 'commaDecimal' } } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {}\n },\n 'o': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n '1/2$': {\n '0': { action_: '1/2' } },\n 'else': {\n '0': { nextState: '1', revisit: true } },\n 'letters': {\n '*': { action_: 'rm' } },\n '\\\\ca': {\n '*': { action_: { type_: 'insert', option: 'circa' } } },\n '\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'copy' } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '{(...)}': {\n '*': { action_: '{text}' } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {}\n },\n 'text': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '{...}': {\n '*': { action_: 'text=' } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '\\\\greek': {\n '*': { action_: [ 'output', 'rm' ] } },\n '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: [ 'output', 'copy' ] } },\n 'else': {\n '*': { action_: 'text=' } }\n }),\n actions: {\n 'output': function (buffer) {\n if (buffer.text_) {\n /** @type {ParserOutput} */\n var ret = { type_: 'text', p1: buffer.text_ };\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n },\n 'pq': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n 'state of aggregation $': {\n '*': { action_: 'state of aggregation' } },\n 'i$': {\n '0': { nextState: '!f', revisit: true } },\n '(KV letters),': {\n '0': { action_: 'rm', nextState: '0' } },\n 'formula$': {\n '0': { nextState: 'f', revisit: true } },\n '1/2$': {\n '0': { action_: '1/2' } },\n 'else': {\n '0': { nextState: '!f', revisit: true } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '{(...)}': {\n '*': { action_: 'text' } },\n 'a-z': {\n 'f': { action_: 'tex-math' } },\n 'letters': {\n '*': { action_: 'rm' } },\n '-9.,9': {\n '*': { action_: '9,9' } },\n ',': {\n '*': { action_: { type_: 'insert+p1', option: 'comma enumeration S' } } },\n '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n '*': { action_: 'color-output' } },\n '\\\\color{(...)}0': {\n '*': { action_: 'color0-output' } },\n '\\\\ce{(...)}': {\n '*': { action_: 'ce' } },\n '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'copy' } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'state of aggregation': function (buffer, m) {\n return { type_: 'state of aggregation subscript', p1: mhchemParser.go(m, 'o') };\n },\n 'color-output': function (buffer, m) {\n return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1], 'pq') };\n }\n }\n },\n 'bd': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n 'x$': {\n '0': { nextState: '!f', revisit: true } },\n 'formula$': {\n '0': { nextState: 'f', revisit: true } },\n 'else': {\n '0': { nextState: '!f', revisit: true } },\n '-9.,9 no missing 0': {\n '*': { action_: '9,9' } },\n '.': {\n '*': { action_: { type_: 'insert', option: 'electron dot' } } },\n 'a-z': {\n 'f': { action_: 'tex-math' } },\n 'x': {\n '*': { action_: { type_: 'insert', option: 'KV x' } } },\n 'letters': {\n '*': { action_: 'rm' } },\n '\\'': {\n '*': { action_: { type_: 'insert', option: 'prime' } } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '{(...)}': {\n '*': { action_: 'text' } },\n '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n '*': { action_: 'color-output' } },\n '\\\\color{(...)}0': {\n '*': { action_: 'color0-output' } },\n '\\\\ce{(...)}': {\n '*': { action_: 'ce' } },\n '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'copy' } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'color-output': function (buffer, m) {\n return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1], 'bd') };\n }\n }\n },\n 'oxidation': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n 'roman numeral': {\n '*': { action_: 'roman-numeral' } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n 'else': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'roman-numeral': function (buffer, m) { return { type_: 'roman numeral', p1: m || \"\" }; }\n }\n },\n 'tex-math': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '\\\\ce{(...)}': {\n '*': { action_: [ 'output', 'ce' ] } },\n '{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'o=' } },\n 'else': {\n '*': { action_: 'o=' } }\n }),\n actions: {\n 'output': function (buffer) {\n if (buffer.o) {\n /** @type {ParserOutput} */\n var ret = { type_: 'tex-math', p1: buffer.o };\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n },\n 'tex-math tight': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '\\\\ce{(...)}': {\n '*': { action_: [ 'output', 'ce' ] } },\n '{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'o=' } },\n '-|+': {\n '*': { action_: 'tight operator' } },\n 'else': {\n '*': { action_: 'o=' } }\n }),\n actions: {\n 'tight operator': function (buffer, m) { buffer.o = (buffer.o || \"\") + \"{\"+m+\"}\"; },\n 'output': function (buffer) {\n if (buffer.o) {\n /** @type {ParserOutput} */\n var ret = { type_: 'tex-math', p1: buffer.o };\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n },\n '9,9': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n ',': {\n '*': { action_: 'comma' } },\n 'else': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'comma': function () { return { type_: 'commaDecimal' }; }\n }\n },\n //#endregion\n //\n // \\pu state machines\n //\n //#region pu\n 'pu': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n 'space$': {\n '*': { action_: [ 'output', 'space' ] } },\n '{[(|)]}': {\n '0|a': { action_: 'copy' } },\n '(-)(9)^(-9)': {\n '0': { action_: 'number^', nextState: 'a' } },\n '(-)(9.,9)(e)(99)': {\n '0': { action_: 'enumber', nextState: 'a' } },\n 'space': {\n '0|a': {} },\n 'pm-operator': {\n '0|a': { action_: { type_: 'operator', option: '\\\\pm' }, nextState: '0' } },\n 'operator': {\n '0|a': { action_: 'copy', nextState: '0' } },\n '//': {\n 'd': { action_: 'o=', nextState: '/' } },\n '/': {\n 'd': { action_: 'o=', nextState: '/' } },\n '{...}|else': {\n '0|d': { action_: 'd=', nextState: 'd' },\n 'a': { action_: [ 'space', 'd=' ], nextState: 'd' },\n '/|q': { action_: 'q=', nextState: 'q' } }\n }),\n actions: {\n 'enumber': function (buffer, m) {\n /** @type {ParserOutput[]} */\n var ret = [];\n if (m[0] === \"+-\" || m[0] === \"+/-\") {\n ret.push(\"\\\\pm \");\n } else if (m[0]) {\n ret.push(m[0]);\n }\n if (m[1]) {\n mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));\n if (m[2]) {\n if (m[2].match(/[,.]/)) {\n mhchemParser.concatArray(ret, mhchemParser.go(m[2], 'pu-9,9'));\n } else {\n ret.push(m[2]);\n }\n }\n m[3] = m[4] || m[3];\n if (m[3]) {\n m[3] = m[3].trim();\n if (m[3] === \"e\" || m[3].substr(0, 1) === \"*\") {\n ret.push({ type_: 'cdot' });\n } else {\n ret.push({ type_: 'times' });\n }\n }\n }\n if (m[3]) {\n ret.push(\"10^{\"+m[5]+\"}\");\n }\n return ret;\n },\n 'number^': function (buffer, m) {\n /** @type {ParserOutput[]} */\n var ret = [];\n if (m[0] === \"+-\" || m[0] === \"+/-\") {\n ret.push(\"\\\\pm \");\n } else if (m[0]) {\n ret.push(m[0]);\n }\n mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));\n ret.push(\"^{\"+m[2]+\"}\");\n return ret;\n },\n 'operator': function (buffer, m, p1) { return { type_: 'operator', kind_: (p1 || m) }; },\n 'space': function () { return { type_: 'pu-space-1' }; },\n 'output': function (buffer) {\n /** @type {ParserOutput | ParserOutput[]} */\n var ret;\n var md = mhchemParser.patterns.match_('{(...)}', buffer.d || \"\");\n if (md && md.remainder === '') { buffer.d = md.match_; }\n var mq = mhchemParser.patterns.match_('{(...)}', buffer.q || \"\");\n if (mq && mq.remainder === '') { buffer.q = mq.match_; }\n if (buffer.d) {\n buffer.d = buffer.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g, \"{}^{\\\\circ}C\");\n buffer.d = buffer.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g, \"{}^{\\\\circ}F\");\n }\n if (buffer.q) { // fraction\n buffer.q = buffer.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g, \"{}^{\\\\circ}C\");\n buffer.q = buffer.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g, \"{}^{\\\\circ}F\");\n var b5 = {\n d: mhchemParser.go(buffer.d, 'pu'),\n q: mhchemParser.go(buffer.q, 'pu')\n };\n if (buffer.o === '//') {\n ret = { type_: 'pu-frac', p1: b5.d, p2: b5.q };\n } else {\n ret = b5.d;\n if (b5.d.length > 1 || b5.q.length > 1) {\n ret.push({ type_: ' / ' });\n } else {\n ret.push({ type_: '/' });\n }\n mhchemParser.concatArray(ret, b5.q);\n }\n } else { // no fraction\n ret = mhchemParser.go(buffer.d, 'pu-2');\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n },\n 'pu-2': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '*': {\n '*': { action_: [ 'output', 'cdot' ], nextState: '0' } },\n '\\\\x': {\n '*': { action_: 'rm=' } },\n 'space': {\n '*': { action_: [ 'output', 'space' ], nextState: '0' } },\n '^{(...)}|^(-1)': {\n '1': { action_: '^(-1)' } },\n '-9.,9': {\n '0': { action_: 'rm=', nextState: '0' },\n '1': { action_: '^(-1)', nextState: '0' } },\n '{...}|else': {\n '*': { action_: 'rm=', nextState: '1' } }\n }),\n actions: {\n 'cdot': function () { return { type_: 'tight cdot' }; },\n '^(-1)': function (buffer, m) { buffer.rm += \"^{\"+m+\"}\"; },\n 'space': function () { return { type_: 'pu-space-2' }; },\n 'output': function (buffer) {\n /** @type {ParserOutput | ParserOutput[]} */\n var ret = [];\n if (buffer.rm) {\n var mrm = mhchemParser.patterns.match_('{(...)}', buffer.rm || \"\");\n if (mrm && mrm.remainder === '') {\n ret = mhchemParser.go(mrm.match_, 'pu');\n } else {\n ret = { type_: 'rm', p1: buffer.rm };\n }\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n },\n 'pu-9,9': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '0': { action_: 'output-0' },\n 'o': { action_: 'output-o' } },\n ',': {\n '0': { action_: [ 'output-0', 'comma' ], nextState: 'o' } },\n '.': {\n '0': { action_: [ 'output-0', 'copy' ], nextState: 'o' } },\n 'else': {\n '*': { action_: 'text=' } }\n }),\n actions: {\n 'comma': function () { return { type_: 'commaDecimal' }; },\n 'output-0': function (buffer) {\n /** @type {ParserOutput[]} */\n var ret = [];\n buffer.text_ = buffer.text_ || \"\";\n if (buffer.text_.length > 4) {\n var a = buffer.text_.length % 3;\n if (a === 0) { a = 3; }\n for (var i=buffer.text_.length-3; i>0; i-=3) {\n ret.push(buffer.text_.substr(i, 3));\n ret.push({ type_: '1000 separator' });\n }\n ret.push(buffer.text_.substr(0, a));\n ret.reverse();\n } else {\n ret.push(buffer.text_);\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n },\n 'output-o': function (buffer) {\n /** @type {ParserOutput[]} */\n var ret = [];\n buffer.text_ = buffer.text_ || \"\";\n if (buffer.text_.length > 4) {\n var a = buffer.text_.length - 3;\n for (var i=0; i<a; i+=3) {\n ret.push(buffer.text_.substr(i, 3));\n ret.push({ type_: '1000 separator' });\n }\n ret.push(buffer.text_.substr(i));\n } else {\n ret.push(buffer.text_);\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n //#endregion\n };\n\n //\n // texify: Take MhchemParser output and convert it to TeX\n //\n /** @type {Texify} */\n var texify = {\n go: function (input, isInner) { // (recursive, max 4 levels)\n if (!input) { return \"\"; }\n var res = \"\";\n var cee = false;\n for (var i=0; i < input.length; i++) {\n var inputi = input[i];\n if (typeof inputi === \"string\") {\n res += inputi;\n } else {\n res += texify._go2(inputi);\n if (inputi.type_ === '1st-level escape') { cee = true; }\n }\n }\n if (!isInner && !cee && res) {\n res = \"{\" + res + \"}\";\n }\n return res;\n },\n _goInner: function (input) {\n if (!input) { return input; }\n return texify.go(input, true);\n },\n _go2: function (buf) {\n /** @type {undefined | string} */\n var res;\n switch (buf.type_) {\n case 'chemfive':\n res = \"\";\n var b5 = {\n a: texify._goInner(buf.a),\n b: texify._goInner(buf.b),\n p: texify._goInner(buf.p),\n o: texify._goInner(buf.o),\n q: texify._goInner(buf.q),\n d: texify._goInner(buf.d)\n };\n //\n // a\n //\n if (b5.a) {\n if (b5.a.match(/^[+\\-]/)) { b5.a = \"{\"+b5.a+\"}\"; }\n res += b5.a + \"\\\\,\";\n }\n //\n // b and p\n //\n if (b5.b || b5.p) {\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\\\\hphantom{\"+(b5.b||\"\")+\"}}_{\\\\hphantom{\"+(b5.p||\"\")+\"}}\";\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\\\\smash[t]{\\\\vphantom{2}}\\\\mathllap{\"+(b5.b||\"\")+\"}}\";\n res += \"_{\\\\vphantom{2}\\\\mathllap{\\\\smash[t]{\"+(b5.p||\"\")+\"}}}\";\n }\n //\n // o\n //\n if (b5.o) {\n if (b5.o.match(/^[+\\-]/)) { b5.o = \"{\"+b5.o+\"}\"; }\n res += b5.o;\n }\n //\n // q and d\n //\n if (buf.dType === 'kv') {\n if (b5.d || b5.q) {\n res += \"{\\\\vphantom{X}}\";\n }\n if (b5.d) {\n res += \"^{\"+b5.d+\"}\";\n }\n if (b5.q) {\n res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n }\n } else if (buf.dType === 'oxidation') {\n if (b5.d) {\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\"+b5.d+\"}\";\n }\n if (b5.q) {\n res += \"{\\\\vphantom{X}}\";\n res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n }\n } else {\n if (b5.q) {\n res += \"{\\\\vphantom{X}}\";\n res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n }\n if (b5.d) {\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\"+b5.d+\"}\";\n }\n }\n break;\n case 'rm':\n res = \"\\\\mathrm{\"+buf.p1+\"}\";\n break;\n case 'text':\n if (buf.p1.match(/[\\^_]/)) {\n buf.p1 = buf.p1.replace(\" \", \"~\").replace(\"-\", \"\\\\text{-}\");\n res = \"\\\\mathrm{\"+buf.p1+\"}\";\n } else {\n res = \"\\\\text{\"+buf.p1+\"}\";\n }\n break;\n case 'roman numeral':\n res = \"\\\\mathrm{\"+buf.p1+\"}\";\n break;\n case 'state of aggregation':\n res = \"\\\\mskip2mu \"+texify._goInner(buf.p1);\n break;\n case 'state of aggregation subscript':\n res = \"\\\\mskip1mu \"+texify._goInner(buf.p1);\n break;\n case 'bond':\n res = texify._getBond(buf.kind_);\n if (!res) {\n throw [\"MhchemErrorBond\", \"mhchem Error. Unknown bond type (\" + buf.kind_ + \")\"];\n }\n break;\n case 'frac':\n var c = \"\\\\frac{\" + buf.p1 + \"}{\" + buf.p2 + \"}\";\n res = \"\\\\mathchoice{\\\\textstyle\"+c+\"}{\"+c+\"}{\"+c+\"}{\"+c+\"}\";\n break;\n case 'pu-frac':\n var d = \"\\\\frac{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n res = \"\\\\mathchoice{\\\\textstyle\"+d+\"}{\"+d+\"}{\"+d+\"}{\"+d+\"}\";\n break;\n case 'tex-math':\n res = buf.p1 + \" \";\n break;\n case 'frac-ce':\n res = \"\\\\frac{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'overset':\n res = \"\\\\overset{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'underset':\n res = \"\\\\underset{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'underbrace':\n res = \"\\\\underbrace{\" + texify._goInner(buf.p1) + \"}_{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'color':\n res = \"{\\\\color{\" + buf.color1 + \"}{\" + texify._goInner(buf.color2) + \"}}\";\n break;\n case 'color0':\n res = \"\\\\color{\" + buf.color + \"}\";\n break;\n case 'arrow':\n var b6 = {\n rd: texify._goInner(buf.rd),\n rq: texify._goInner(buf.rq)\n };\n var arrow = \"\\\\x\" + texify._getArrow(buf.r);\n if (b6.rq) { arrow += \"[{\" + b6.rq + \"}]\"; }\n if (b6.rd) {\n arrow += \"{\" + b6.rd + \"}\";\n } else {\n arrow += \"{}\";\n }\n res = arrow;\n break;\n case 'operator':\n res = texify._getOperator(buf.kind_);\n break;\n case '1st-level escape':\n res = buf.p1+\" \"; // &, \\\\\\\\, \\\\hlin\n break;\n case 'space':\n res = \" \";\n break;\n case 'entitySkip':\n res = \"~\";\n break;\n case 'pu-space-1':\n res = \"~\";\n break;\n case 'pu-space-2':\n res = \"\\\\mkern3mu \";\n break;\n case '1000 separator':\n res = \"\\\\mkern2mu \";\n break;\n case 'commaDecimal':\n res = \"{,}\";\n break;\n case 'comma enumeration L':\n res = \"{\"+buf.p1+\"}\\\\mkern6mu \";\n break;\n case 'comma enumeration M':\n res = \"{\"+buf.p1+\"}\\\\mkern3mu \";\n break;\n case 'comma enumeration S':\n res = \"{\"+buf.p1+\"}\\\\mkern1mu \";\n break;\n case 'hyphen':\n res = \"\\\\text{-}\";\n break;\n case 'addition compound':\n res = \"\\\\,{\\\\cdot}\\\\,\";\n break;\n case 'electron dot':\n res = \"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";\n break;\n case 'KV x':\n res = \"{\\\\times}\";\n break;\n case 'prime':\n res = \"\\\\prime \";\n break;\n case 'cdot':\n res = \"\\\\cdot \";\n break;\n case 'tight cdot':\n res = \"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";\n break;\n case 'times':\n res = \"\\\\times \";\n break;\n case 'circa':\n res = \"{\\\\sim}\";\n break;\n case '^':\n res = \"uparrow\";\n break;\n case 'v':\n res = \"downarrow\";\n break;\n case 'ellipsis':\n res = \"\\\\ldots \";\n break;\n case '/':\n res = \"/\";\n break;\n case ' / ':\n res = \"\\\\,/\\\\,\";\n break;\n default:\n assertNever(buf);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"]; // Missing texify rule or unknown MhchemParser output\n }\n assertString(res);\n return res;\n },\n _getArrow: function (a) {\n switch (a) {\n case \"->\": return \"rightarrow\";\n case \"\\u2192\": return \"rightarrow\";\n case \"\\u27F6\": return \"rightarrow\";\n case \"<-\": return \"leftarrow\";\n case \"<->\": return \"leftrightarrow\";\n case \"<-->\": return \"rightleftarrows\";\n case \"<=>\": return \"rightleftharpoons\";\n case \"\\u21CC\": return \"rightleftharpoons\";\n case \"<=>>\": return \"rightequilibrium\";\n case \"<<=>\": return \"leftequilibrium\";\n default:\n assertNever(a);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n }\n },\n _getBond: function (a) {\n switch (a) {\n case \"-\": return \"{-}\";\n case \"1\": return \"{-}\";\n case \"=\": return \"{=}\";\n case \"2\": return \"{=}\";\n case \"#\": return \"{\\\\equiv}\";\n case \"3\": return \"{\\\\equiv}\";\n case \"~\": return \"{\\\\tripledash}\";\n case \"~-\": return \"{\\\\mathrlap{\\\\raisebox{-.1em}{$-$}}\\\\raisebox{.1em}{$\\\\tripledash$}}\";\n case \"~=\": return \"{\\\\mathrlap{\\\\raisebox{-.2em}{$-$}}\\\\mathrlap{\\\\raisebox{.2em}{$\\\\tripledash$}}-}\";\n case \"~--\": return \"{\\\\mathrlap{\\\\raisebox{-.2em}{$-$}}\\\\mathrlap{\\\\raisebox{.2em}{$\\\\tripledash$}}-}\";\n case \"-~-\": return \"{\\\\mathrlap{\\\\raisebox{-.2em}{$-$}}\\\\mathrlap{\\\\raisebox{.2em}{$-$}}\\\\tripledash}\";\n case \"...\": return \"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";\n case \"....\": return \"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";\n case \"->\": return \"{\\\\rightarrow}\";\n case \"<-\": return \"{\\\\leftarrow}\";\n case \"<\": return \"{<}\";\n case \">\": return \"{>}\";\n default:\n assertNever(a);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n }\n },\n _getOperator: function (a) {\n switch (a) {\n case \"+\": return \" {}+{} \";\n case \"-\": return \" {}-{} \";\n case \"=\": return \" {}={} \";\n case \"<\": return \" {}<{} \";\n case \">\": return \" {}>{} \";\n case \"<<\": return \" {}\\\\ll{} \";\n case \">>\": return \" {}\\\\gg{} \";\n case \"\\\\pm\": return \" {}\\\\pm{} \";\n case \"\\\\approx\": return \" {}\\\\approx{} \";\n case \"$\\\\approx$\": return \" {}\\\\approx{} \";\n case \"v\": return \" \\\\downarrow{} \";\n case \"(v)\": return \" \\\\downarrow{} \";\n case \"^\": return \" \\\\uparrow{} \";\n case \"(^)\": return \" \\\\uparrow{} \";\n default:\n assertNever(a);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n }\n }\n };\n\n //\n // Helpers for code anaylsis\n // Will show type error at calling position\n //\n /** @param {number} a */\n function assertNever(a) {}\n /** @param {string} a */\n function assertString(a) {}\n",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/katex/mhchem.min.js",
"module-type": "library"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff": {
"text": "d09GRgABAAAAAC2wAA4AAAAAS3QAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAjgAAAAFQAAABgRrFhEWNtYXAAACPUAAAAgwAAAWL22LJqY3Z0IAAAKmQAAAAaAAAAKgDTCp1mcGdtAAAkWAAABYsAAAuX2BTb8Gdhc3AAAC2oAAAACAAAAAgAAAAQZ2x5ZgAAAUQAACDJAAAzNHN/ZYFoZWFkAAAijAAAADYAAAA2FbN1UGhoZWEAACNgAAAAHwAAACQI0wONaG10eAAAIsQAAACZAAAAsHLTBXhsb2NhAAAiMAAAAFoAAABaEr4FKG1heHAAACIQAAAAIAAAACABSQw6bmFtZQAAKoAAAALBAAAHFP1QmCtwb3N0AAAtRAAAAGMAAACa0lYi83ByZXAAACnkAAAAfQAAAIqOiODGeNqVewVg29iy9pmDIsuSLNuyDInZDscYjtOmwaZJadtsyryUl+3yZWbmxwyX+T5mZmaGn5l5+0tWnGbhklXyOTOu9c3MN6AThFENIfRrOIoIEkj6MqeA8Nhg3ayb5bqZr33kRq2Go//v39Tg857syL3/gA34LWSgQVToZAtpTDCsIUCYAL6OCEE7CCEdHU9VWgblziDNlZqNVrtVr9fisXgsapNSPic4FzaP2v5Kre3tNhulZqkE3/G/n9w86yTscfnhseL3JafHHE0GwJjp36UzjAFkc+9Vd54wOOhHJ2+9CnKOo2aH6Ki54ub0sTE9566Yo3QoixCgLYTg38NvoyYa7FTCgKD7NeEuQohhxK5SwJhcQIQY5PjZ5tOFXJtzdzDSaLQarVqrXfe+l/+Vo9HgT5vnc6Wc/0ez2fBvp9nIc5HjPJ8vlbaAgsDOa1c1YVA8M0MVoccef2AvrguVzEyDUiSGIxUVAm/gghNKocQV+vM/h3mEmxrGmsmjFH/0I4QAUBkhQHWEMPNwXkQf/HIBMIW19c+Fts53sghxytEdRDGmtxAgjoBfJz5GFxBjBjueXP+c7QnmAkG69zUkO/lDQpzi3ZeT2t7uhOdmhqrZvqSbcIqG4LFBK1fyQeiZlIvuxYXwcPOsGWwEy/lcueQL+8u+ncue+aNdrQ83snr5bTPanbFyNOG08oTW4vHv0VVJECViUhn6MOb0N3+LCMro4zdGw9mt/oEhwDJUcm4qMgnaSKHdlzcNWwfsqCqAnjAFZpL4dsYJxkQxY5Qem+0PZwszMVlgHLJdH9uxe8M45HnGJjrRWY8B43mgBK8hJLhAfA8RRhnxMAEkEIjriCNGOLveBfIcohTvIEzx5ubG0uL8bLNeLWf7SrbkwRLxsQig8SDo3qTgQsT3/+U7T9nb9fe894L7G/VagIqPi7fpgxQEhPf+8+PlxTLV76xtPBLT+jPTWvhsxRnq3104+3oVBkqFobQmKJHLzWMRKR5KGKMlKkDuz2lVU8oODMNzkbF8pZIzw82j48OJ9PhA1aU0OpMbXawXqutHuFoYGc4NRCX/xiIz8fZ6n6kyzGyLY8yMiXhltIIQRv335nAG/hhNojnU6cxOA8UmAMVrBDDFdzkgGQQSVxQJUwo7DAAMOD41hdDU3NSsp1bPNkrZqWxL5cnBeOkggLwbDvBAXXroek0v4Dy48vnuv4LI8zijbXIR/3OFymxs/C1vppxgCicpIZTq3CXe21KZKgr13K1MVBGyHixcTRz7wNruL1ApIuscvwl7QvGYBO/yuYow+su/hNkY89aZY4Uw3AP8qbOAAE16/sE8/9hA1ztXNABJB47nQfAyMErXZEASuosEp1z4kcM4ZbveEmAJriOMuMD8OmKEsHOIMbKDCCObgNZX52Ym26PD2f5kImKqMtqADYXbg1DzfKEXKvnoPu0Etx14y4EbBe5yEEaCd0UCOFvBHvyGjrGz9pgRKVoERO3IdLs2++HHd2ZHyvkjWMswTGRaGovxhhHWrNGzZUkOxxlmACyyfGbzhA6/7YYxc9d0TJ9hmYR7ZeHmE9NjM9mKNOc5lYwJkUgCQtn02StOcVJlKvnUhbMYCE+mKMJozMsPOv4QGkBHUatTV4AzWEMUAaKwhwhClKDrCBDj4EUU534seQrHJ4vRcrmSF56HQCnv3ZyPiNinkqgdoBPwiLfSizNRKvuCQSLxPSiInVIJPmxTWx1aNGMEcLw+cGV6arE5srQy8fjCytvNkni8MFOQokUnFhriVHEaRMNpM0QFCHxSoQP9Q3fCOJOen7q1ccONFdb/5j3nb2ng3swUisnyH0SwHBq6daRgaWWghq4nnlir+LzS8fxmBP4KTaGpTnscCE4BEOzfPb2LCAZMPAgAHkcIY3QOIeTfPMKbE62RoVLeda4xHh2M2PGadyvxWo89fCDuk0f3BvN5Lg7ItdzoMe731aUcgw+/GYcwPnlyQqGAWSHuFBiw88nZHH3kPUySGWW2T64FTBQjyhj8hiAYA05ZmF68tP6GymxNstPpmIh/8J1DS0UgdNIhDDOJ/ksqEU4Q2bfxh1EZtdEaGukMLjbyGj1cB1C4XwhMTkysTa4NDWQSOf/+ivahlFAKCCCgvHqtR4yeOWPEI8CeaePeLqm1mgFPlsrlnL8Rw/rbHq0OL2+YyWVKo04moyUGJ3SKLX5pd0uSGjPPHp24YLE+Y2bZ4KUnZleryopRVRThDh3/6auPKeb2QiXXKBMayg7XJsasaJ/AcGb51BjHJH0JpPEGHg6p6ajaX9F4/vlrw6OilJDKcpxxd2h2ZhZ1/X0EezGDxtBx9MMdddbCnCmAAXv5WummYfDh9fI18nnC4wcBntoVxDnZCYoPL2GnPcm8L0kA730t0U71JVIcEeDEJx6Ez/medaGrtuXl7SigI53GeCWfiIdUztAYjEke48S7JVkX6i5ntNrN3AtSddcY3lYvcUW6ZCMCc2Rwvd7qkVDpP65te6GUi5emSo5NgLnlSPLSTH9KDS1UxupEo/2JjerE905S5pSiBmEEALtu0k6o/QpQkv+D+YVMsZguxrRCYm3TEPkQn+lfbpeGykctG7g9e+4j/+5UEt+GiK4pOWVtXSllVEXtX1SG5pNOGWFUvve75K/xf0CL6BT63o6SA0K3QCa+AcoerHVEqEyJvMcBS0zCbA8xITGxi2QkYVm6hkABBOgyolTsICF04cE82dNCXMIS9+DGvu7uIV3+8rrbnSSg1aX52cn22MjgQF86aoc0WUKLsKj2sPfh88DdJ/N2ux6AfpABbSveo/qA/L3Lt005X+5aAVrTuOkFfqncFPw9lfmEGZLDjJYdhgdvfuAZlqbKXBqrRKaE4WjY1IRMnaGEagynj+Wyk7rs8Pe/X1YvzpTAsZLrD6oUIHxqfHrYnTc1iEVSoL7+x/9I0hQ5WuVAgJHU657/2eXNeEiLg6S46UifDnnjRgE0/dmqAyMSu/hmqcDC7vt8Hqx4/PCP+Oc9z/1Yx24BZhNlTPEyIPpAv59+9i0zijCjDNOuK1PkgSoRSSZ7AAixHQ6MhdaRJJEdAYTovvM3X6yBgCE4UEQAL6e33TGuXLq4c/rkQHmwmspZipdjih67+MW8b4tevdXtSoLLWw8sk/Oj4iAkPFPM4S5VeebpVXb3mbiXnzzL4emHtqQBESum9Oxr86HRE8nG1VSqHomXiyltxK3ECYlV3fiY9nbZMuMqpoI88mojUslMA3unKj/JccNOPfQWKbZaS2OIDjXV+Yk3/OKxY9wKl3ShDrhKMluIFr+w9+j5PiOFLcneuPOJTzpa1EplxCIRFrkO1KONMIZwprOzwWn10fV5N3ZGh2RIEBKODpGCbyv73r/F5/DPojk03ZkYrWJC/XSNCabET9eY+CgzjHzXB8w8sDH24AXQ4Xhl0B1uG37XVDxUw/T43KPzgEP8Ld6rVfbBDvgkagdejqvJSHXqyjVhPfQ0Ca+++99ioDxEM+ECZwXVOuJKVAHZFbh8fW7FwAujndnx8Z+MqPGR4qwMb3g0Yz9z+2ejAMIaiUQia3o8S2hImKMJHi4sn3uFHXlkstKsIYxshMhT+DOohhbRF9c/53heqLoqBoSBcLyWDN6x4N12IJDZb4p8CgAEGF3vErKguMfeOU+qgLxthu4gYJx1hbt4vUi2U/laYj7Hrwug1KB+12Ui1JltN1ANjcfeVk1L3BmsB/Q8j30Qc4G78p6Ldq9al7npgTmgUfSK53LURzugm0fCRJnop/J2CEqnLU5paMrVaByHqoOt7VfCoptYxlAfbu994s+VbTzw/P9lJpacqzL7iaePJzShchEtSdj++79S5Yhlh7idZ9giytDgQGJYArD+fPPkpdVdDeCtn7UAxL/6Oxuv188PI0DFe/8RP+H52gPoZOdEEgAPAyVTwDhZQxgBwn6FCBSIH+AcKN9FPkhd1gWfdQG6RUVoPaDacrHsvVJTEk8NRu5nrn0WjdsH2BzUy1G7y7r7HtlLad7KPnjRnk6vKvmzvvzM8NsXuQTOfNRRZMByp8JVRzXc8mTCiUZODMSoPO6GMxtDWQkemKw2M3Ykk0mmG+87oeaG009Q92kKNyLDhc7c6IIAkGVTi4Sk/ITAOuujtgenU055X8zikpWXGaa10jCVh8fclK1Y2DTSjQ0VRN+2aTxyhiBA5r1/IN/n+fAWKOufMzzX08sAZBo400BCZC3ZWxD7C9uBWBlhYBDkP+CI8esUALpe5wGKkLSDJEmXfId2PfHhA3EukOB3EPP+ZOLqV1UqeUqDL1YiFAATuN7TPqzSGfv60pKEzu3rIGlz24sK+/jq0SML85MTjfF8nxOzI5bMo4Pthme9DPWsvp9S87xHRT2+7vGQb9pB7NfV2cBH/LbLd4QDFjdPFfzSCgtI5hlOV08X6cf08bgS0szy1Anyv/9vRI9i6UifJStXBs8DiZQgqoNsLKct9uNKvdD3SIMZMb2ZkwuJCQxA/E9idHjnS18w9KgiqZbr5AgAxUaI8NgII4wyQbXNR7hiGW7FiH/LxOgSB6wWu7Og2r334u/GP+sh8ZMdHYGM4gC4CRyIl0llD/YBJCOM5Duoy2TdKQ4Ffp0BRYSSywghsSOBECHkG8r0DRVo4L1vRKUz/mJpRglld3pK6KU6nqH0k5vZSinnDhTLBYWnB6Exgnu0v1/5dCPOW3hRBvWW9w3ZPrCib8YgsgNqO+A8HDZy8eip8ZWkfHY1l55LqavZZEru35o6tqGWl49EhWJF2o5mT85lebbABh8bubhLws9du3VXVaQH0o5kD0WnnbiVFoBrusVxdmw333/8hlm8lB7BJns49ehbhuoaqIRwORyJpDCVCctu6272qUtJ69oPNCc5JOx+Mzo0EktbeiQbI0Fm/T3yBS9O9yC0/rkRD/NYGlS4BUidB4FHgbJJ4JStJV9uQ6LMj9uUpzaOVECgoj0NuvD7bEgFo3sKYBkEw+IGohJwyi8TAAjB8WTw/zUIgAp3kYrUu74uuvtympx3Z1p8p/sRm8nO9FdVQxLlVOIvUJd66sjX9szeB+jRh69e3j67uXHsSKM2MlQpptyopQgPiL0Qtwcj9+upgKSFsOv1rjscMHPUW2ntr/jO0RsUNYOSjIu8uN8BN/ZLinyvsu4WGT7pd6cIfMALxU89iuPDyQgw4YjHdskxN7SSdNTB1XC4qoQ5M4+6MTK19Vw2HFcUEK7Akm6fvqL1J0NMM0bKUWJkk/HJyfB0QU66mOoChlqtpLEKP2vJsc1bEji2myivXEiB+ieVaNWiqTv/euv0QAWwiOfsfH2KSpqlJ7BGLt9OEAZQvNTpV00ta/DqyZMrGGQ5Mq5iAC20cJyqeDBVTQ4iBPf+GUL4X3tetIxe3VF881eAULwWcHRZAoQp7s5v/YptVwDGsIPAczkOhLCd3qC3+GJJBJ4sAnz9sNx2J+53jNOT4yPlYj7rOqaMlmFZPrBakCW9wq5Wr+/zqdifRYh4/VAG5eIghdbrASEH5fWEg0W4uHL8VRAtDE2lvqhLoVZ66ZipRJNDR+Tbt+ShuotDVyZjg7/4j1SLJwvWwsTUYGlYHjx/Rh7JWPBfTCrF7PFMloAiiZCdE5BKtR79/JYCcpVYRCodUykAppoRTarixM++b1ZTohVZ+DHZvPce8nEPzVW021HSgMGnMLwWBFoOYeCA+V633PPrXsQQu9JNeNt+wgO/gHux0EHOQox1cxW74KttbXeU6kBislIt+jOttn2I9QI4Ath6RBZcB6gevg6YsRszv0bPzzpmrV+pQOeCUp+ZzLajXJhH3DhLLZ99aKyN3/gGXdJqCV2NiXylPGBac684tzmR3fCY0Bitx1/LYrQ2zcML9sfYP7uqiHBy3lTiOZNZWxNLfTrtwmplJQwg+i5e/NR83yMzA3p60naTqfAwQtjv78gRLx/l0DW03XlgtR9zOAUEFUGQBGBB1yRAnHBE9mQgghOxizgPBsPd2g3vUOhO/Qp5QBceXF5amB2s5q8VrjkxRUI5yCkv5oleF8zv92ZNwYPRaYCPd92fJfV6aZsLjxVapXKAqV/+9Tpr/7oWH5PfItu2wgSOpY5mVHWpPyWWh5LMHcSfSJLI+y64XI/1lQbXVIyl1Mp7z89gixUjqYmMauFwRCs8MVAU1thxJ2xG8q4u1JqMM14Pxo8SmVDJunbzbV86ZceHsSn0T37m9mU9FH/+zVEhz5zCLBxtzf3grBSNcDe7tVVTIGRMVIkSVjim2lK+L6xk6u++klZCGrdzVjenVL3O+j94yK+hH+zoWcBkBijHgCSyFgyRWogABuJnat9Ld7sJmu4iyoD6dbQETPLr6G6H7DUbMkZI91P8xDekKCGQUKDfU93uJACtLC0emZ5sNevj1VJ/xomhNVjzbRgPjHVwBTk8Foz5eK82L+V74yUh6r6B4r1U0HP+vODzMapkdNWO6+Gx4433LRNCsEoGxrl8thgjSVeEND2yUHHjPDPxqs1yiG+XYth457Kcnzzz7KgRGjJNIayYahd2WuMf3Jnf4gBj1UQo0TJIhLr9Wih59YduDGtgawDulEGkyQsahCJYSvrIl+79Llv1kL+FFjsLO2sYQR0IPQWMkDWEgEJAreBTK2FAmN+78Cdw4PKM6ez49asz+UTfiCW469erQZfSQ8aHJXDOHlhdAHCvRfbf6mSfD+6XSk1+n267V3lfpOTHw1CMSfFCSEnOdKIUpGM5XaZzq1kKd8rv+JUpTKQoD6cE1bBbTSQxJRK2J4ZjsYgc4XmhxOBfL6kdvRqSJcatsf7RIcYLS0tHvRKoKVG7dFLEKHD7I9/9Ay6Nj8jGf/yhYwAP5F/zCxOAccGMdJ7/67XWQFqLgUUlQWVsp+JcYD03Pv3Kj1P6t3NyQ+uXARNnbvWx95ixt3zn9+QkSJuSn/f+5b3fpSfJCjqLbnbUYxLmJAEU+VRd9Nw8jThBiN9BGBGOiU++QBG9ggC6LJ3x9wlHey8vsN0Jnz2zsT47PThQzCey/hPNdoByzxYZEt83x31uDmrVPO+5arkRzOVfDH2ux9WjuWpYMbPTFsjh6T4hcUzx1E7FdXWAyeVydnirWnEKFg8dG1exlus0NQAQS3mVcr01MH+WkuzC9LKq57Jpx9LUd+Y0584Xf8IJRfOYsxD9zK+fGx4xAcjf/9Ur64t9RjG/JBNWVVnq0d/9/SEADDgxRkjk6NYzf6UY3/fJj9gkaqeTs5aGAM17HH63yyTtTiMMgGaBAV5DCANGsIeAYWC7Pk133ZdcQN1Z2tJiX7VayXGeGAR/hCZeNDHr0fX92D2o6fe39uXtXi/ubTXx358+YYcMMxFV1eF6AuS+8Q9uWE7GWD8zUHzbuaefyVjnnzO5kfzYQ1mbKyYVIjQ1Pzgtgxx5+nzKvf1O+PADe4oSzwzb6gCJMJIZOn4zRKjxyh87s/6GoRmsf8vZTH+rdfnjDZNgSdLTfZnpEzeoTkt9G5eY/ZmnEMJexf7T5IRXHdTROnpHx4oChiXgeD7gWOrPLeN+1XVQAvQ4EgFFuwIQepwddMe+Gw59DUlEAMg5T7KbFwlsdsf1RxfazeHBbMq2ZIHqUJd6JGpFWvmXHfi0awdPmrvUEPABeJwatbvywhfrzes/ETeei2MonXrJ4KdSyTzzVHNOcn/lycWGJpl1yVyEH+88HsIAoQLX+guvaxVCgPWjFitDHIrWy0x/zP7ygpO88F43nKi/WouV8GP9FCSNPfO2KLewNNzX5mZYDCBAz97bJW/3/O8K+qeOtglIWqwVCKF4/5hDU/aWQOp6IpWAephRInXJlUukOxiSuoMh9jiSpO5DxFB3ClH2lKcRkmQJyXtIBkmG3W/qIzoLL9EWEohdJHwS20XfwGf4ze+VS+VyqVoc3ikbfvNbPJzODj3xih0ubg4qk0Nj//v00iuHDp0P2O+VYvF6DU+48czW4lg6aixtJ+pve3jXTZIwrThnbheHL+68mqzcOuIygqXVvBaG6MNj01Iur6y9ant0qJqlcistZe49tynDk5dmW83jCj65KJp/YxmxlCMoDl1db06/8tyiyYHbr7t8cm17Y7VBommJSO44lmROTrRdBUAqp2QFTC5FyhIG9ZmTD4vQ5Wfd5J0ZQ1/cZEFX/B/IH/tdMfpEJ+IAhnN1LKQjQNnhEGsjDBJgaQ9JAiQffAbCx5kCOwgj+f4kiiu9Oqb5jWgiIgdFe0+v+9Dm9s3Llx44u7ayMD87XeqLR4OWVb0fgc18zqf/l5261upBAu/ZTfTyR3COKFjtGfMlBg0GlPlo78N/MqU+G2FgsDMR+cWBSortxNKJS/mCIeHQwMTVkND64rTSL0lD5ZEhB/Pk1HvmonIxGc1VTSMsG1HimZc7r+6zmpNPxwBHN/JmeNE0eQJUiCogReSXBLJiWWkzHVWnxo9WuWLNjPB1FfeVTCwZ8bEJEiomj245MVlgU3DbN7Zo9xVGLYsS++d+40IqVvZtnfDmvb/vxfiD6OmOUgNCMQDqRXgBEYooucPBNwnsds/V9B4udM8e6d3GNRBDe19TbrsTAbR1YmZqfLRSMnT0IDwo/BaiFg9w7x0Q6EEdXM2DBqPHn71ZsWeM++cKAqu+8BlP6zddrIRdQbAoTp6eGs7paqT/kaViQcVCPz5x/tKV8qhQlrIpGmL2+EhinBvhsBsbfbaSvrB1+w1l5cFWWS+eiUPO0LWIQUVI545TMtWMY2cSg8V4Ol327BKOVY+nhu1Iw4nERrBJLRYPcRbSJCPnxiKGbgyMlQZn9ipNCI+k6256NSl1a9WfJF/Ev4cW0d2OHgHAGBAZBYp6XUKGAyKUdEtW+ngXTAaEwDYCCJHuuTAM+O4LpXyBs8jvhT1ZIBtdzGemR4bzacvUZP8Bpzg8KGi3+r3f7YMRDs/lRd77M+fnqPvNnC86h7sa+V5kzcaJfWv6aHgbrm/LmT6uOLg6fQxTApizSKI/fH28jp28IqyjOQfLORuMZGicsdA/kxgQpZ2JwO+YXN6Yz+sYgEc4tpL5cQkAfvE3pa2lmBQvkohkrizi+cfqvy2HQprB5UhF4X7l+d/v/UtCPIY6jX4leLSjd4CiYcB0FBgma8nDCxyT3pyuigQg8DhDAkQB+WSDgeJdErQA/oE6DoFXB5+bIwAC7iKBxF1fB931NOjdF0h2Sl9ViF9AnOvr+wHQHd2c3Dy6MD1ZHy/knJgi0Gk4LR9upHs0dPDgzV/0DXVoR9jxXu9xUNUdeh7Se3YXTtjZ3XFszabl/rYuu7ZjlE781BRNqGp4JRnPCmukGGbCqSSSEXv2SP4IYe4/fMqNz9uR0WpYGGF7FFesUCwzzKBdXnZWXtPM9bVcK974Z3vyXDIZL5vxlXDz9R+anTdULQpWKGpnsjBhx5rX/rPWd2Fktv3YhdGoZSuJgGm+SLhnswba/MqwjikGz9MTHsYuQoAB+W0tBUx3fU/uTUk7NoHgQCj2UPWUPGjpQ9sddWggm/FPOjIe64LnQxfwQHwfg5LH3r1TrYcyddMnD1wu1RIzOSl6sr4UlQCsD5+u6oQ0co5fxEuTi/L4vdsnLGFRat9y8EbEHpMwm3/g5+cu1vS9h+tFLpJ5kk/PWOrWTKbwq3/ywIjaGtw+NQTSkhncK/2Kd6+X0ZmvLGvBvXajOokYwoh17xUd3CtGqDvDj/r/ZP4wF7PDd6tfvHDm1ERrfCzp5rh//qhxcApBROdwYPJuQ+MnODsWAHEYh+CZ9wEMgu8nOc9PsDjIk03DXyklNirj1UsmxURo/OkrA2KtoIEKQqEXsxSHn27pgkDejctWThutYXV880cWNYVTherTZQ76d/7xqCKxCJg3kwVJw5eddmrur1sj7ohOJF28+9sWCVgQbxIBEI4pf/HPXG699XYqKilOPy44TjuM16cMY+Pqd3xlVVDMB3/jl1+XeP5//VNd0KLO178P+o5aiu9REwjIOzyU76LXdtSVAUxRGwjF+1APvjTWD7f+QdfPYX/4msMvjWFC73rCxOPY+5PXvd0L23MzrUZtLNsnc3QX7vrhC/ueVqt3kfeBbh2ksW7sHtQcUW8z1qs4DlWPvUNTvQM8gXz+0AOyVnk/K/rkDHKsM1iallTNsdMq6KvbJu8PMUKkjWJ6MGrmFj+WAYuncrLIZR3s1NfVYkGUI6okYwrATzyV4xJ1DDs7JCJyshiN9G/8vs5BcC5bqivLJTxmOlN6CKjlzpI3URiYNAS1KciS7Ixn3UTKSU2cMxn+JAxUaSwSdcZVwFrJHj3psbQ6tpgRVJYIk+SwnVVx3olnEm7nKcEwXViNFkyV274NC/cukLRnwzPoyY5+ChAYwNAqcNbLg31YYAQMkP9QlAPzC3pEOb1yQBG5gCKw2I8d7sUOp5SfQ5zTC77sVrdvW+jMTDVqxUI6KRg6A2ekA96t1+7XEPXa/dq9N8/tlYz+deiAcK9e8XNjQCreJfiqEzvxoGM3qunEcEQGXAw9NKJO5BQ1EyVKvSNjffhte++41NbCzRWVlm2dqel0ViJug6XiHOQFO12sKSU8aBnxNRYaSjcvfvfpnFQK7z7VJ6dLjp6cUmBuVI6XRr/9u99w9YhO5kZskZvz+NgCnqFWmLGIAegN1UxeCJ9d0QhC5KyH8mNwPmi/wiEAdHUAM7oIQiJrweOog2Wtt3ywwvdXtvdPXDQQdAv1PSQxwSSxFwKqccwkyq7rgBDeIcFcQgh5R1WwLBtyr/ervVjXE9WDYxuHPuXFmv73a391TaQxqp319Dm8jPrX0tSAM89bPFX0Uk3/cXaeooduX7549szpUyePH12YnWjURkfKuZTrRDQFPUYfC/sUUMp369H7Kdln48OthYjXavV9VzoYmQZHhusveLIm9g9Te1evTssfTGjqdf893n3dWjxhUqWdNS2HmLNXHk+kfy5RiBokljxzM0aoyrJyCIt6RmAx7LCz701Pxf8wX4kJZacvTtRWdmkrNF/9d+lWStMSWij/gTcmRkdNJpVscWQhMdcy8RyT7eSAKsDgUru2oTKKTa3v0uUYABcaluw8UKAbe3EAgvPpVNtgamUzMaNjX1I1dHfvW2IgQlwxkhQ7MxMRhJH3gv+Kbuz/HAsLfo5lvFmPZr3fN2Dohv/alxt6Obm6Lxe8EAJfzpPy5fgXAUEg4+/9f/0HvxQAAAAAAQAAACwAcwADAAAAAAACAB4ALgB3AAAAhAuXAAAAAAAAABYAFgAWABYAawDKAXgCEAKIAyYDpAQYBJ4FXwYoBv4HdQg0CNcJ0AqrC84MdQ0YDdUOkg9KD/oQhBE6EjYTLBPoFIcVYRXXFooXbBgfGWQZZBl4GYwZmgAAAAEAAAABAADo04uzXw889QALA+gAAAAA2LKY+wAAAADYspj7/+X/LQVJA0gAAQAIAAIAAAAAAAB42i3KAQbCcBzF8e9+vwKB+MOAUGsls5YosC4Q3SBSukIIJBAQoCNUF+gOHSEiRAiQYrB+GD7eezwyEgBvDGQgKZGZmJ6JTc0Miz4qMtYDTXkTygKna5xMaWhEVU4kerO9yZ9aoa9LQnW0yjMCPeYv3ZFqG6dnVnq33wVftgRyzb/ywC/t8bXLQH7UNSEiA+9jOsAc/i+oIKQAAAB42mNgZGBg9vivyxDFmvT/6b+LrJ5AEVSgAwCZbAZoAHjaY2Bi2se0h4GVgYGpC0gzMPRAaMYHDIaMTAxAwMEAAQ0MDO8FGN68ZYCCgDTXFAYFBoX3/5kV/lswRDF7MFxWYGDoj2MGyTKtAxIKDIwAQkIRW3jaY2BgYIZiGQZGBhCIAfIYwXwWBgcgzcPAwcAEZCswWDJEMSx4////fwYGIM+AwRHI+wvkPv5/5f/Z/x0COkB9KICRDYhhbCYgAcSoCkBWowIWVjZ2Dk4ubh5eqAAfv4CgkLCIqJi4hKSUtIysnLyCopKyiqqaOgN9gQZZugCEMxXcAHjarFXlmutGDB2HluEyuCDfudlu47EvM9tx0suL32cX7aXf5fYZ/DRyyv/6aD1yskylhWhGo5GOjqQJK0OsluMoIXr5u5qcf8mNxY9jvmnzbJJuUL4cc6WZ/TGshtXqql6xHYdVwirU7Z6yVJgGHluGKd3wuGJojfjPOa7NfNybtUbDaDVa+CR2tGPnMfHcXOzw08Qmviuru0lCRd8oW+NZqAY74qtyfhWWcBYTQOQZ8ehcnEJDcjYqq9uyup3aaZIkNltukmhWc/F6knhcNQQ/tWYGQPVwLua6DrihA8BP2Eo9rhkNXLRW1FcCkpN+cPnEebTK1ZYDfUg55fBdXK03kdZ8nM7Z2UIS6wSnTxdjHNmS1CCyx3XDQ6HbU5U+NQ1sdaBBsQ4yrqxssLUK/1xveTxkSECOhau/19QKiQd+miZikrZLkMOmNzSmwihoOVtkj5jd5I/2vViuhh4ZpxTlOqO1AVPKFjaZbIDcRMnVps7a/RBjh1zny7ilcOugS+OmTKg3NlqNYsfWTtJyPJ4wRaUS8VrW9njSwJCIx8MXch0LHSQ8IbsF7Caw83gKbqZLSggMrCIuT4Yp5SnxJEjzeNq8XIqL2lo7ucwT6/pHj0+Yl/Pxy8W+0nagP1XqT5pCTYXLcTE1hfplAU+50qRo3aAYl48JfLB1VhPymIsLIQ/ZBnlOZdiWo3Ftc233z3EF/6UmQSZd4O9Cu7tUhxSwUOqUBlshq8c9y7LKWp0yqlCVaCnmKR1QxGM64FEETgNKEf6X6WlLTaogyNPiZMPl71z7Emg6jdxOuR6fMYUl8ix4FnnOFFWR501RE3nBFHWRF03REGmbYkjkO6YYFvmuKUZEfmjIZ+szj1vl4iuP3XLxtcfvGcUT7r/A+D4wvgffBIwiHWAUeQkYRWpgFHkZGEU2gVHkDDCK/AAYRc4Co0hj6GHZap5B2OmUQoEQSjkg2Ui/+YY9lz1M0hVD1KVDKqGzu1qesSMt0EoeX90qj3WWr7SKunUmiq8mZYLXSmYOPb5u6FaJ9wbsrGh/EEwYgh+sV2d/VvLTfqzvFtetM8joJvIH4IPxsgqzux7fMv65hx7fPs4UTbgK8zsoiTrbJJ+6Mryg8nmed3UX0x6vIH+2MNG3LevMacS/a4AKA4K/0oRHQnc99zXRwxy+7m0fk9/3wTUdiBVxKvP+dD7+qUJVsn+qzFQvJoG8gcMhBqy01h1MH6q5By2Bjf5jXwnTNc3VMFubi7HJbKxTeYP23sk0IfSM7qCGGhE6yAuijJLSQUG0RNE4SSG5joaq7/MKj5JRswSBz7n+K7cdCyW/LxwQNPWZAQf6Iah5IGrkqgOcdXRXgkm1Hoq+TGDAqFqKfXqoHRuaTSWcbVPeaGL3fOe3b79QB3XwoDJa2vjRAEG4WZpUvp73prhZysdGky+sdfAwP0z8wrdOYwCfbKnndqqf7rY+0OaZ4bvugU4Dw/fcHIGlWYB2vw3K4rMP03Crw8DuVgtqtLqv7w7ctfFo4A3/F63Y/b+6T+BndwFL4wnZUW8nGWCMhIzN/DuSv6MHBOi7u1PuIuUz/eHsKZnDUz7fxCx+dIj+uSmUdfoU38L6heE7EC+FtQi8UicHikHYV0bakV9i+dr08M5g8QYLSxZvTc8qNX/1WNdmDgNAFISPoY+LBA0ccywzs2VmLkvQoHdWkM3z9ycWOxL6SwbzJ5HFEDkMkccQBcyXRBFDlDBEGUNUMD8SVQxRwxB1DNHA/Es0MUQLQ7QxRAfzLdHFED0M0ccQruU9p4d5wPDepYZaH1IjvZ5kfMoYW95LqicM1VNK9YxSOre815QuGEqXlNIVpXRteW8p3TCUbrWgOy3o3gofb66Sj6dv03twvesn55S8U+wzK3FNYwB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNjEwMmiBGJu5WRg5ICxBJjCL3WkXMwNQmhPI5nDaxeAAYTMzuGxUYewIjNjg0BGxkTnFZaMaiLeLo4GBkcWhIzkkAqQkEgg287Iw8mjtYPzfuoGldyMTUB9rigsAaBEkowAAAHjaY8AEE4AwlSGVaf//90yiDAwwGgBduAd3AAB42kzMAQYCQRSH8e+9N7sKO3ZgMYAQCBB0gUCwN0joAJ2jU6wA6BYBQqfoGJE/Bvj58AGTZQwAmEE2CrPsJC5ysOUqJybucsfAIvdNH+zAU85U+8pj8y//f2BpDSzusrHxh+ys/CUHJ3/LiV1UuaPGUe6bPvgtznJm333ksfmXX2tktd1IDINhXc9T6G5p4sBymZn5rseduBm3Q8d26O33j8qQ5WPSaD79kuWR/mJZDZ3tpIHfJu+41Wh8r7UazQYvGW87BR8m1hSJiXm9SFT0HG5+GsHfeDPVBc8num3y4aY+MmfnizqzHaer1CYLZdZeKYuwUrqO4ZZq8AS/gGoj6nXviXHelgU3VEN9GlNu/Gq9/Haq3++rXIf0Sg8U8s+8+6073AZew6VvPDfBcdS3IeUD443rmTaPrsU7OjcvL6Si6Ci1/gY5LC9DXzvDcGQ2MYVHcLdoG8chNXy4vsW7lSlu4K0bIOa7izdVU0HsIZZ1T9tMX2SGpR7NK/P7rMNElIZQTdTrPnG2Cl55m40Kr++ubI3/Q4tUUkVDcmSpQykFYnpLCb3D2aIGxneqidXEYloiQ17YAl+HIC08BU5DMTzrYiuKfqncpE/3yt/g2wSjRXUelKY2FHPEb8I+gn1G59DUlImeg1UhwoJdQKYM/ArOgoKcDoyRTErqnsD6tVLtXutP2BNwTrpSSv0NUrI+/WF349/vr+hMUV+Gopw0Behf4RyQur3/DL37j+/wNOP1LaWfMI8zxxSBtFIX0wEIL33qkQHP96/FtEMa0ea3XkhRhHEkX/6JyiGsS1h90E7UhBCNRHrobzN3YbelFpbqjESv0xbOXWQC+0R564lCTPzixZukZEllr+Zl0tTDsvBruqBMfA/90ZJxnvbFDjRBEfwBo4Jdx/CUyBtWFGAryZ7dd7xOu4jf+puYH31VY+YAAAB42mzBRQHDQAAAsBwpGMNzzMxTV+GtgSYiUFcu2uwQRElHV0/fwNDI2MTUzNzC0sraxtbO3sHRydnF1c3dw9PL28fXzz/EkEIOpRl7aV6mgYGjAYh2dXNzgdKuUNoNAEGtETIAAAEAAf//AA8=",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff": {
"text": "d09GRgABAAAAAFc0AA4AAAAAmYwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAABLkAAAAFIAAABgRrBZp2NtYXAAAEvkAAAA3QAAAcrTnKJPY3Z0IAAAUtwAAAA9AAAAaB+SBSpmcGdtAABMxAAABYwAAAuX2xTb8Gdhc3AAAFcsAAAACAAAAAgAAAAQZ2x5ZgAAAUQAAEfJAAB+AhXZPFpoZWFkAABJ/AAAADYAAAA2FTN06GhoZWEAAEtwAAAAHwAAACQH3gM0aG10eAAASjQAAAE5AAABlAVzDjNsb2NhAABJMAAAAMwAAADMWil4Sm1heHAAAEkQAAAAIAAAACABhwxObmFtZQAAUxwAAALQAAAHF/nLmVdwb3N0AABV7AAAAUAAAAHbvYckjHByZXAAAFJQAAAAiQAAAJWB93OaeNqEWgVYW1nQnZmr78U9JGgcQigkhFCjVIAuUPcNVboubdfld3d3d3d3d3d3d3eh/303Rrvd/Yu/mZfve+fMzD1zUiCoA8BPUAIYKNDfKjkCzVYbkUak3Ijk6592u16nxP/+dR2/0eTWANga/Tgchwtwc+MbZk5fXh4BDRK13Aai6Q0lGEOENncIoAibWRMnTS/1kh6IV2HzyvIQwrkzB/a35ueq5bFMOh7REo7jUVfFq41cc761sNCotxZa9WjU+7VRTyVjsVQjmVBS5nOlfE7mvSyTlDTB5nyp3JxQMp4yeYm4kqrspeAMNZs5pVL1Zulw3OE6lM1FBf74TzIVTDhxB2sz1aqfcx2JXisWbsVSjqMw5Rv2hfA+FPN7wtpxhJqIr2eO4M9yV+D5C089raORqCJOEpu4l2nuYzs/vPPD6BfhuEMUiUUdRPGsoL0tzoi78ahgiISvjB7NIX7QByPuA2AGA2AX6OugAYfhLNxbdjUC1pA4rXfwnQAJikt1UyAAtgGxsKEd4pzaDImKZDAeAzRRibDdS96VUSWDcgrgxGNrxw7uW1yABsxVJyvltbyrktXWQjQ6nyuXygZDg2Iy2cUtJ1U+Z1Ds/i2VzOd7SThfLucNyI0F7082b+42f6p4o9VaMBe+CFdXLgvFuFT8T39sduhDQ7W3mWYkNZOni8nI+Ic87vzNn/m4F5+jkwdu3RodO3/e1y745veL55+dmMDbT/jnj7psSWIao0TM5eEkI0SRebYwemmMkDA4OzJVzB85JZH7OtG/WIzgG2+YWOTKxM6frMQRP/RDkZACG4sRAITW/b9nl+j7YR2+f+MbygbZoAnCKiINI+NsPWsvyMGFK520InhsIL8LHo/sRSCCtkSA6Q1gTLRBiJrYzHbYmnw42aYRyTZIWXrghkfllh6RWxGbV64su4uTyYPVUlipbBXriTh59V8qlUuthaYhwCtzJS1PibghzWsGS8ZCfUBgzqTZjmo1PGIteYeTy8ScREITIc1mp5zMZ25NZSPDHLPBZGvLma4utkNCTzHFUh9/c7p5+zOL+enF3/3U+LTaqs7UGNH3B/jOfSYISXAnGjzVzDh4fepI6d6Uih7LJQLFaGqrFRLENXfOvN+Qf+XQ3vOX2q98vIOh+dwEIgDZLvgk0wUlOACXOz0wjsR6PZDmg9oXkhijNnRLPwloggxhexCwFR8GqO+pVaEEhQOtvOn9h0vdQDAobql2VXfJK2hGcQ9C+/FQUf/m7znPvl8AMfyTnzK25/t/t1fJH7+xos+fXl2bfzK53oomG5mgz324hPUzN53xhPq83xgS2K/czz12zIe48xc7f0Hk5v2JhVszrXlAi8pe+gp4Cr52ORZxCHAOSexF6dxAV/MuOAdBAIGgu0DcfL4IjpLKkXdBaiX1i8BBOVxtMw/CKxZCH2rtPg6uW3QNgvv/n/uRIQiDb++F+ndXXQNz9Knb166eP9uYLJXqi6X0Eb8aqbbmo635fM4rNg+7CQOyLb9OsVp0ZcJOD/PpTe5UnLy4yfcSbFyqHvxL3FBlX0JJNdFjqfHFH4nTNebTxDSdDqaYTKYEJza9oK5d2VdsRFIZl7uxiMuPMJGMBphM++qTvqrvsctjZ+cqVSZIuW5Ssr3Dw+T87+d3SZw7glRAIuETI4xx8+N3haNlYiixuEcj/lYIUTll04bC5Tv/xrR0pS8bHlEcq19TJe7MVW6JABOoJaoPPXSI8y7HXTYnDZs34VOXfZbNx9HRvRJfeJgFqTz473qoywfpc1Frpw2OU3QMffPvdmOPt94r9G+rOl573Lx25WyzUikWJg1rvv+PtQ4rKq5UZ+jb9rFTqJdhEvJl82eIGrvPXhN+FGPLfcboeOraWRwbzc+EpyPcjUe4c5i4DpsYU3F/vTSmQpzjvn3M5wg1N/rK1NPxiHhPsoK5yHpQIGdvvIEyeDyiSCq5899CkdbhbDSrBL6ZPRwOMRJurHMsh3osLd7/B3bRnBJX4eOX3RlUvIxS9UiqgVSgJNx1ERxEDbgNSvG2QM7tmC9ugNasDYzVmOHmvfLtqK/28yvMkJJFOHNq47HDh5qN2nR+YigVCjgSruJln4rbqa/sORzvDvMZ6k31wVBPWawHB4Sl05KTk8qeDknbV60O0+a3lLmwwPIph3Gez8+jUHK/wyUJfvSDPuqrA4jp+9+WnHFON0StxkgOzgt2LjP5/GdXKhFx9+aFsi/kX1oSnk6qj9+ptDFu5BFnxH6GxLAmYdIX37inDzhf/zsB9Ne5OeVxcHBILlL8zZL/2tnTd4rJi2f3hBbrA80Ene7hzJwQb8GHLIcXKnHNAV956twq1312SsDAVcy9KTkxADQwe+0SDPgcrpRu+1Hroja0FEzAy7HHRu+mB9Kq2rCRAYC34I2Xn7998/rW45feqJc/IlcvX8mH1MjDZ4kHocFcdvhRZnYZLdSNL5mG8OKNQQKjeG+mvaNLWrF58wrsXRN2H0Sxxr2RWzOaOIm5uZGRT/mUkREb4szxJZ4tl27HUt3gytp0jbte601lnivf7ncQHv6UT8HDj4w9dHQRRU2XcaRXX0PzaS8HtehftsdXrxX7HWUCxHd23hGwnI4C0EHDaR165zwNznkpyORfAc6LvHPOE1rCBoEqNywFAaAOs5dypdcN8EN9ZuwUa/SA7+M+mE05pbpJn2UgvcZdV/J445XRZ9NxRxCfn19Zu2breTr7W0PFkCtFoweJ1O44EVHYFGjvyXvViihd3wgnQJi6//f0beb59sGNb8sliBF2n3MMCBgQu8sRQLQlClHw9J599BrarambYWImiQRs9+IV7D71PmiulDPlsvfUWLeP5RWfVLI7t3sgeDGpuo2/EG2aAtsFD32p9DHhG64dOIThxw/UFqbGT0VwKi+DY/mx5GxgMj8UorcOHAwafBILb4xdo69zlfAn1L/8F9ZXg34ntl9EKw1NhezwrMvU6FBZ4Z8SKseC1Ote9tcGiQ+Au8vhJx8n0HVE2FgiQtbFZNR1FAMw/ecjrQ3/nDFEaovekjPsBWwSatgehLt6LwlgXv7tV19+8fkr+eYba+U39lcCaqSDTAcRZdpIctWVx6mkCnK7QiploOrMzRaTIZLq3dvzPfteJrDUOQ57Y/W3pE8KlNG5UR4h3PkPvHSJnJrPr4VARkLJ6OXC9UxRCfOPy2hJfuDQSDOVxkd367u1fr6AHy9HQ5JLLnQ5s5k9aDmKB1Eojd+N3/QNyLSKsQCXRIhMKHPsCYZOJFG8fh3f2Z3v0vof/3GEw8yVsbDeNZfpxw2z++H55VBCE2ANGW+iYD1ix4EDA87u7mpuJYkxcQWEKApD7WgvxTY5R9geJFSFITcEAPth71CxXn4mr1XmUfP34fnalSmexpfSSsdHTtDXR1/KpDWh4IcOrawVVqMfs6SdeFgLwutklOEf+Pi7j0NG3e5PfV1CMSUE32EPaT7+wwadF+G15UjVu3sLkdb2E4N+4Y8IJGJtjowZbael9Ucc5WNdAyVrIiYFGW0/GLX2yYgB6+alCyc3Vg8tNhtzldJQMhTUEl7EZ/1GNNRt4S4Y0Rbz+n6AWMPgEk14hRptdaTDI08n0x8PVn8zDh3NMc+YJEp0U5W0qSdHBRe+sfnoyoqp4A7E7/9+LrKb6dS5Pd/MRPCNtyhg0a4PzqRw4on169FekcsP3bnJ/IlIkBYX8OjhY0nJOVeB8Ol9pjbjigTGMcr6REjG/ve/eS735jHkTGhkwQEv3cJW1C3rJMUZ/u+XMr/yI5Zxgu38+85/Ciklx3hEP6AzbsALy+HFCBE7gUiXiAaEZSUnjzFhGdPoMaL6fteQQGYSLF+DWN/rOn/2+LFDB5oz5cJQIujTEm7glvsOogY8GXhHqVH3yCvnyrn+oLLDvEdSXipP71XJ3EflclzKxIMTrEdMI7bSL/33uTwewA/6IGTXMOiOp/1Mmn9Mh8+MnoxmPZmu3OQR8RkkQq7fr/iXnT5zeOlYtDOWJuKnRh7NBv7RH+H7aw8foeIpIkLskSDwf7+YaaVx9KM/hu7/N5eDsQNA0DT+zB6jvOMwCY91kE4CkZ0Y1mqBNjeJNQPyIFAaBCrgDQoETzf7HIhjXBhchd0qB6PAKoHY/MNy2Hzg5Y/8LAycX/r+11/75LhKL3zic9985vjs9dyBiYmTx1eXzk9n/SryYR8Qkx915/ztJ9rFkaNrX33xKP7XxvmpwqGX3zx84kp13wee2Jzq+Rmn7FQ8Ac92/Ix55Iz6I1EBMUXbcpenZ2VNu6d3RgFNUCFs93IHCVb3RAGOHj50APbDvteb1cm884D2sau16XHz0X1mlfd0gYo/vJ31ctHburvbXWed68xJl3Mu2W//SYTUyoXpIx868eSNrAxxPj0rpMO7B1TSJs3hf6gzJ6rDJy6m66lEJBCO9YYmd1kw7BAhQ3Q3jxzefykt8M7Q/mCQBHciUckQKcL9Xg7NIn7FPRT+4fTRViodigEztbFka2Ma1qENn77sP7aXtCoECfs+6ZyDXKPmeBeki0pLtQ1CUNva0qB1R1t1ygUAJk0Zvdc9pf49lcE9toc3N8A41hvtzfbywbk9MA3T05VSxafS1aIVYT3x1TQ/H1F8hhJbcsyrwU4JplKWgv7+Zj4wZ66bxC4VzRL9gHb9bnz/6ZMhju7Uno/47F21evRnZTjuj531y8zp9dsn1idjDcXUQkFGknJmWKn1yqQfd/40PRvQubFxF9EfdbXKjUy0L6RqOdIPVvUvn3XTDsuH8BdOXdpY//ITzctT0h2vaaRAKygaT2zf0ztfOZwIaI4uZ8gZq9maN/17z9T8LXgdvng56dV8FoU7jkycQpJbqEh0uaoDE1IweRdcEMwV286gD3yapFRtUKrobci24GteR8z2b0KT7iJs9+4e3FLt31LxeiQLcO/FZ56EW3CjfX7z+MqRfYuze8rFVt7/COc71R8PSnV+700HE7bs9Njt+1TWEnkPtYjzpVKVun33CCPxp34+v1UvssiZXM0vffGxaCIT4JFRxSSLJoVIjdfCxe8PhUr+6L4juLRLFD5d2o51z0taqjZq+aUxFeF8dUM1JnJR38Ouo/DPFmeT/vW5ZJBzGZ2oyA9SoyMkC0mXk1QiXJzxSf5cZP+BwFxEIXL690eIQvzbsXH5fqPL4QghqmRqZQoQDpkd56dMZ27DRyynriKKIAIeQM6mJ4g4X68grXXXc4XWk2J3gXFk/EVA7Ow+pj85t11XM0L/PRJL/cQKGXoTCFvtM6f2tmb3jA67GrbxpvaMkpz1PDoz3rZRbwr2WtMyYn41BLZankPePwh6vNoP27tdXyXZqi80exozn6dnfQ5tri6c8lFLfKw7d0gl3r4cGL+4P5AdV1EhyKcU8uwonxWc8ydOF4pLYRxxhw+t+TYzrorNrT4dnXJXy5zhYVLJBRJOCH9K+WRaHDm2OCtD82GaoPClfZmRCy8FaVjGMjLAOXKSd19SUoTS7uF94fHjIljJKCcY5un19OhQeq2x4qKvILCBGOC/wTUgJAEYpy+Gc/CZy+4UEm8iI29qThpSJgQyQmJ4V2K3c4w6t7JFY0fRdFfWfiJwk8o4bT+Y9p4ZVv6Yd6EQjh05uN/0YGE4E/Zk6jk84fTf6TNI23eQYnlp2zDIe3akiU2Md3tMetd6TnI+z6zlmBxsc/J4xhFybQ0dJx9e2bM3U8tkR0mQ8rlJSeVYXEg8ise4O04YyHEHSSczqbWplVBBO/hhUnRWM0dlP6w+934RaxDmCx99BKMofWOjF0SIC9ScyVdaLeV1Cf2K4wriDgUbw7kJR+/8/cFPzOUZE72Ni2yf/AN7wUzHLbjx7SezQYZ9MyCjRGeV9RgoeBVuIOsJnbREsnFOuN0PWamT8sTkxrGl/ebwn8jEfRq2cMvpS54lms+/64LUOXc8uJektQNKJjf3SG3ZkZbmNzz+2icTNupmCvVX0OHbyVRXzc+3GHv/H1wUPBiLRoMOEinmG83Jh1WlnDginqaxT3zCCd+8Hoq6P/tj79ypfvH34pHQjS+LRhfW1o/vKzNCJKUflpN85yl+5V4AAWHJoPuaQXcDtpZ9JYcIlmyRd2WkkpwRQVugZgCFjZ4/G7cXbJQBbfds2BSHlWNmqkx1LFgpYINveMhiD5pUZ+FROSVBSdUB2owNlh84Tx66XlnaoWPGiz3lm6UezPRR4fXMajAhFOPCidYTgrOdW4wHMxmmKTjmX6hUrAqP1548X5roOgRTpXI8vrH56TiTlkJIrujrCNECGNOKs//9HMYVCo0nvvoItnpQ9Vd+ZH9458U7d34frR8QZwIQDt7/e/7t1lm9tuzeReApROhBN+RoKUwa8LbPVcybDoRdjyplr3QTkMM2Ydedilvn9NU7L5x/fd/K0+lqpexXIwOPSirJqK+T2LyS/T9KjDV7zvTD7p0B0RSlGQblcnPgXg9ybPd7OXGTU+opW5vAv8x6XOl5H/vB75PoKG8KsH0f/dGCtBNOMB9SuVwocseRMjy1PXQjlXYY5+V0ZCg7u+8ZKQsF+/ZDIXktf6Pz3wOSvsmh7IccOeruzXAudD75WHZ/zxkjxXZ+dufnJEpGjOMPst//PUGSIVcKm9jk1iyURNTxyIn/4i+zza2vnJ6hwTsS9j8QkPrZX5a/8txzIsKDA8+lBMC+0zD2YfDScrScJKTXAgT4zBYxDX0/bbdDVth4wF2zLviwCdgcINx+IFzVXT/tw+AD33rjzgsfPrnw1FTihUrZ89MaXn13vDKPilK53OViiffnjG2PnMob7C0X5QFbvdFiCfV4tfp3l9+weytpLdgzXMVT9caurUU1Q1KgTLZj8h8dQcsHajXuMjQfnLHI7FOZp9IRzoVvH/FSEU9XKroc0p6TW0pfOBfJCMfRPt9iySfZL25udkQVD8VulIrb8TTnvrFxvI70RL2+R2jld7gupy+ejUif9dMC9O9ugH/shxB3pZ+5XDAkIrsL47lzeGZyku32gu2vWjJOv4L0pV/e9yOiGI0JRPylp+cbxJAFOzsQAkIFgD1v2G3DE8vhs4cIxDQi5JNEAwfCG1mec+xo8qxj787BW+JD3lWbgQK2+zHrkkYAoA0XJ5tPF5rPrJZdNby7LXd7n+oR7o9h8lHN6VEZjzbMxUHfmVPE2J+PK2stHwnHP/IzMxmsTQuDmBTBxBOb27GoNdbqc5HCqWOGQe31Xu3Z7LPpBBNuVo+/iOHI4vgbwZG09X9OLizT1zna6y/0Jz71y555BjuLZYqxnsGz9nHf8aWMO53mCmsnqWjnvyKRg/kP4mFr8dj+OQbAigbhVXh12a0gI4aiP/GKwAiIwV2JIAjEi9DXRSCEXVKK3vTLvyOPgxU9vayqNwljCPv3zs4U88MZV8MqrigV7yBOniU5Xm6WPHmzxCx4Xd0jZe8YMR9d3ZOQiCm7iyyJOn1NJHiByNn5552/JaZRqcx4NTH1k8kPWT2haqUzRe5G40IeJa88BUrUiozV9e+Hzo5cbI8hR86Ug1VDzs6/Ms45Mj1GWg/nZ5Izv5n6OEQZrtwJSMEd+n0ukZBrGkG+88c7f4zcvdnmfq6QAUHp/n/QdfwRaBgs32/ZTSPjdQTrc4xaLLlk0vN1icobIKUFZs+GQsZgS2iyUia7XAFCifR/vb0FnBtH0jfc1d3TPaQRDYiZtStppdUyyMtgZjtOnMROziHH4eSY6WFmZmZmOviY8WVm5vdJ8k2PRlqZLncfBS11jX6r6uL6Vy27M6J/GKkX9Rxbn+93WpViOhkJaQrqQU/4ZkdEPeM8en7U9vADHb9pfZdoV1nUT8E58xO92fm/duGGGr6x3eocK1HMrLiTzpYoRKyYCiDJYckiXClt67x4LLT+gr2kh7uxoGnm0+2i6mTlC2fypf0X46G8hGkwaSsf+HqLBdOtEiMWx1Sm6ecDOGl14H1dKTxTOH5+JZ/iNnu/QNa5nAT8m6iJBi4KzIgAYBkIZIFOFNJ9TfaCRK9r3BYyKdBIPiPHJJWHkHgSubTQni4Vko6hoyY0+Zh5Xle4UikUKl5/aMRM06UQfxgXzwTT/OrZqHj2V848hsncDAU5oOoy6DKm9rF9I0IyWWV6+vyTNHzsQnOzPa3zUALDYCpvhTTDlC+esCKh/+3PAYZlW4kQGiQf+CBQ8/Ipx3x8+wJcWa9p4cHzphzdzlv13PwJYSHf/Q/wNvwZmkYLg34DKIYDoXoE0zujJll1GEdLw28NSChgNKxwNA3TbKIs6KOAOBvVaopHlcEjVwXk5hudSz8SqrBan1NMm4VYNitjUq9smJUQf+xjg6Cc1vflS5ePH74ZAF5OGMH8VNqu24wXU8tPpZOn1oLE1rm+h3ytuene9So6jb5tYMcAEwMAa8ChCFRaAURHlZIGkjjlEhUa5F2ne/ec+7ohg/iOTPHV6H7iykOJvVq0QBq4FZHpWiWfNiMKR6uwqk6oksscp/tgmSBDrfoalMr+3mfmcwxi8ftl5FsgHEqo7KtTr8c/FqM3btwlMW//Og2mC9nEe+lYw5ObP0cNtIg6g+mgjBGBAyQhgiRywy8tCEOF0KjTulWpnqjlmeg4jeVhAkknVKbrJUz2GJzBWXlU2htWfX7u0Q9vevLx44++rAJm8vZ/J4Q1QFZOgd5e/aEKUQE1sjP1mk2hdqWy/uFzI2k5eZyFo3Ym8TMhgF5Hp/PZKtFm/6t4MpneNAAg6Ah/Nnh3Ht/Bf4CuoC8MjAXANAyAMSBFWA7VlaI2ohKW6C0k6mzKLSRJnnhMHXIYJZ7et5avIVmekUc5/8zwMXxHPAcKuvPeDz78mcpDnhF1AePyxUZ1IVap1OejKk83HZM7PQ/7hfu+K/TBEWOgi8vvMWLMTV25H7xYvVHKVbR8Z+qXYYUB+1JB1sJBKcLyqZUVog27fmsQNU6vaGlWa7Xz8WycS0yVLFkCYAy+jg3zrsNdsLN6drHYUKLtQdvV//PlNJBS5H3Z3/l+8EtlGGN+/dgZDnwqV+imYrk4F2qdDDZKhRIQPwfD8KFfaX/ErUHiqVqhKxr96N05nHLlchmdRe8M9N0YZrw1hSWvtq27FzGFKJLE/Xms81Xac6h+/UXYeHINETLjprVD3zstnkFUuvPVPiRuvIMwcMD8zujh93zuq3qkOfnIlWEh6HB/sDbTbtSKedsMBtAyLHuFoJEX99XKsXu+6zEw97NE/zIt5gpJdygkBc6qfgFPPOyjYQ3yty/cIOFvfIYQgjWyUJGGHj1WKOh6tLvz+pt5o1WMZ0hUWemVLBkCGujT14vpWDkRlLW6Sp1eKZuP4ZAsXzplRp/6rAKQkYRnl25+9tPt1ky6UQomCp1MIpaAUtQinWmQIi+kMqFgSK7/RJ01nPg+G+R6CIHn4T/uWv3L6EODSAgAMyCQA046QKURmLM2MuETvp5zT4F8lzby9feTVh5CemWg1ev9qcZ+PSS78b4tWByNPtjTe6XqyWK35wjviZ7G1+AV4cbA47emcrt791v3ghyWqLJwvBy9gbVWiEDANjNBiYeYRXgkul3WlXKmH1wx43PNoknWsCInLB3SkLnLyPNP5rcjYSI3qXUlElp6vRmRuAbRTDvEMJXDheoSw8FEN1r6gflErJwtSP+e2QijmGvzX3S5HkC7LrL4QgsoCXuIPkQJJ9QVW84IZ7flUQfiCHjdFgKMH1HAKzcHDUDH1hbmphqlfDJu7AZ3FY4CEFDHFedRyEnGkajouPsBvWCYnxd5LLTuDUvFm4Bj6XJcZfHs7MXuFoYnQNKVFMsaPrc081S/u4vhyXvets7ibtZONThOx3Ltt7/QmZJV/DZEdCPEUh3BoFCit+u9+5dgqsHJdxF+99+8OwdfcnmkoU30ud9aWZ4hTALf9LSQKO8wrxZPydNIFHSHQHVJ8lounqzhazJgPCOyz/bEAxKht9/jCVHGD+gLc61mpZSIRcP6ZmCzVFC43QSh5b6Z91g64p0PYxoK3wR7+0d9GssXSTjWzsWz7byT+4fNxVYhlotIWA41LfIEIXJgph7SOQ8yk3Icb2wkEq9beKaLg89vRvCtTCcdT89k/vLv1crZXspOOUy2Fzh8PBQMhHTSM2MhCVM1UB0ktEMWCv7Fl6S5XY34er7hcvM59HNHet4FKl0Hxkd6Po+opEhUcd0klxR+G3EmuVI4ofW+22z7VlT1g7z3erLysCc9dOnTTz169eyZ4/vzc9PNajlu6Sp6Dp7T/Jjv4VbBMr1Yx7+B4lDcZ4+GDuxR+0xItQ+9OYoKBb0PQvUqzzes/IMMRWeGpHobhXq1WDpDYtmpPCNqMp3eMuvA5HqkY5tKmChy0aRiHEEvLIdD8vxJack0wHRkR06a91sN6Y//mGCItFei9kz1ppyKFeqMERw0VqIFAC4ZKbsQ6ClpEj4h7lNWsudjfK7NcrwRls9eCuSE5U66NqTm3uiMwIQ0gKIcYJrNEAJ4XG1DmALFcGecdrhXCDCC9iYfQFCZIBCVGUBCA0IBmaEZaIskBUZx9oOS10q/f/9tQVRE05FoRFP8aJqY5Xy9u6Xij93DcPybbtzMjFTOqgzjZmW/kmsUWDiI6SQLEQgbSv6ZG5+8Iixo1vTa+Ijhg7Hn5wxcEdQULL6QRPFY+FRZJ34G9vyzjz926cLh/sb68mJ7uiIaQEFdRa/AK4GR+M3ND02m3+Ppu+XyUVt8rNrOZC/Wz+0nmTP2TKOP8t2VX7Wc9FffZOXK0QgOl2LefAtgp5kpTWULYVmaatvF23kJlMZMvvAJB/NAxVSSXUOSPYOrmBd6y6V4sBRUmu16JYVXqNW1crkC4LEXs+SEJX/v/r4cTl+PCBeFCSNnyrFwqMikis5WVUmph7QLmp1MzN+YjRj9hkdGk93DgpOPlB9bLTndTLJF/43aSVjKJz9L1UjK92yd4a3gX3Jv5QI6NTg+uhUJH4xrKaJGKt2WQVwKhXElgCvYv5ITh8dc0NhMu1z0L+MCXFC/isvw++Vf9RUE8Vfk9uycnX+/9ZV5nEvzbPYr8ZRPa5J0esjMfvghzHSa6oc+6DIPYVR1uTdwuWehOpoZtMTEFxwgSuERDF7sSshk+aAQdwKqIiMLLDbikMcGL071g6Kqr6qTA1nv3Hj18rGb8aissMffUqxPPpJ/8+pzDUcHbLR54rAZj4blq5deuDCISnD5QiZ//tUI+/TZl1ZPsFBUbyiwVj6ziVwf/Q/fXcNn3J9313Wm1wfXaoBpEAg+CwrpA1NWAYF0gAhWMFHuCNc6nDJw71xRvIGymt/WVcEDsgC6cO74wdLibLdZd5UxbkZkCe3CMeELuFfCXcaiLOkHMUdO1h+eclWyNwF3Ycy8p4YPQ01jJudjiBUxFaaFY8tKNKgR6mf9PDLM+jd1pTQIre9fuEHNK6duLJagnEx5gIdg6DARX4Mv59PTZdXJZqylYNCrC/xpJBxR/nn5xFLbMMhkCeA5Q5QALp4JZF7fXU3BdxwBAbGVHtYDPtCVwt3ciXNePWYNV1zedtGW0CUNRIOYszYgXk1gSugBYmwoGG0RY/tN2EMJfEBWnbr8XFuZm51uVjKOHTJUGXWhO1GW9DRnyDjzHnzlGDAy5w0NcK+AMqlY/dm/4hbQItvnX57rBGpTnGnbu2POnEgl94ygAPclapGIMv3JRHsnH46Y65nVMF2VRRntfZunCwFVU1UXEvn37oJEmnz/AKgJr5b3CidOFNazpvRvFN/iw79xObKCtgcbOQDS4RiDZ1skwNIdJCGQ0G02ti3VQz7SlX6vUSsVMkkzrKloBVbksUUZG4T7hUn8dyKlH8cWgvYbrVyhQiDMeCLqS0u4tCpppW1D6a62V6YqsWwiYBt6wDbj6XIFO3LCUj/7nSGm54hx4IlEsHJVh6TF60tT1flUrBjTOWWSplW+4ztJW/j4Rfcb/xW3priJXhyoJcBkQxhTv35SRJhIZPi9kfT0RJERIXrNQxuJsZIJKuJy54FkbrFjsLY4X69k07aZZ9xqzgv1EI5JDPQUK97398zsET98dvijneLg7kT4exKLc9npdCEt2xo0upnpF2v8eFSup62UJcdZ/ESYqsHuZnouM/9NH6horVI8QxcCYbsRdhQJKNHmK83WHuiNUDjbjFtJS8YMWooaUHVFjxaXWlMXlqJ2qZtJ1AWvrHf/I3wCfwLtooPBrg6ANyj2UiqCycuIg4gG7khetYcCxuNCgC8g6ytz/emm6K1HwwpDu7A7UpT+/HgCzSv3jEJOPy+diCgNPITsTGamTBz98dJhodhqU1V4v7leJCLZLScToQrG18Q0B6a9Hi4UAMtGpRyL+OG/VGwtOrzbDn7+84DpsNO3v682k7ayGywpyrCPJ0T/6z9DlGDEIMVEMSgSgHhrMSz73vibXI25jL5+EOwRzKSTADgHBIjfDKkhJmGJiUE9kDDcPnLGVQ9ETK5R8IPFqXtIFRBEo/ypfTe5V8o9e3pvZ3XJdTzlTMoM6yq6DJfVUauJcf7QMLI6LqoIufN99t3m/ugS+PBTZt3cCztWrhSJ4HBAjwQnKrdKfj1E5PKUGv9UgslKXSMQSHQCfqaqmnt1XZ7ZM7qs323yXWzB7ycs/p17u65LD5hLRxXchEl4RsEXwhktmis/nzQlpuG5upfs00znGMedRqjy4RVta0ZmkJBHEVEK/gIdQ1d/owqUjHLYDKIEEYqG3QEJfJUcAcmSDyBoTxJcGSjVfqLWHteB58ZOfqSD47LIw7k4dpf/bKuyUQxQouRjnM3mizXFOr1YbP0y8K7gVrqlj9P9893elit/6su7u+e6AZmxcCRg6IHC7Hw9Xbv+bXnrc5bc/ITHHLJY9pjD0529fjlSuVpuID92Fzx5HP3irwdBgv0hS1KIeFbqDqOeAHKQJLjmAzjcYqDh9ZsIkxiRvCklL6C/ny5x32e176F5748RBcHQuTOuAC/PuMiwYj0ic2eY/juTEcaIk+LvauV+LzIZkM7fK7kTvSr/4vAHZ7M0Mq/MPJMuP9VLtkrPd/JY6mkEU+a0bD8MjTRP6vp6yTHiWvREI0so7mMR66eSmG7lEpGgY1Gi5mKcwYuZBWLvpmt/Z87oJWMzuQU10vhU0gxRppg7XjhqlC6FccnJhirrhYXKwWwe1JT6P8pueK++9EzIjO4mQtmpC0GDRcIBQxXTCK5EX3KtylPo0cHVmgjfvNqVA+gAGN53KSjyFgio7j+3kcqR6lUE3H9uSyAkmHgGWAPG5GsKyHJNPn790QvnThxWnXqtXK7ZeQ+aMypU3c1Px/vfpF8ep0+TDJ0M/Kvjjxhx3nb9m5+dZntTW2EqUdMinMYvNQtl5YSjNmZOpZRWyXXimhUL6SxvkFlMe9VCPeTTGrGbg3Mdublcj3XUeNujxEnVLsqCEp4vLdYNikU+oJ9pRCBYVBtrkUS1Jxy9ohAdBxv8vw1Eg6VYqjUkDCS6m02lF04vpMzpIRlTy46gGmrNHD50+X4J/Q8DVQMMhzCcM1X9IjkF0WzkSJb5LQQwHAZpD8uuihccukfsGmJsho0q8jOTzyEu33nvBwf9+56RpKpfOHj4c1c8n3Dy+O72YK3fm2rkMlYkoKNLcEn1e58PtlITNR7GzdENz0b8N/FE6dcnG+Gj++4BxI5fIXzmbhsW5K1DXenuBLsSzBWypn4AQn1uUvupQWfqqYwyXYxls3rCZo2NsCxJOb6+EQvWP36XTWM1/byOe7Vg7SOLWMEbTigEUMWduBl450V16WLUmA2ZhZm0ky4SrB52UoBJSNxjwdWfpHuPj7obFFQCKloHro7QCQtIRUJh7iDCMSdYTJ9JGET8RrFEb8sgQn1F84yahwJh4Id6a+NHZU64LIqd4hNu3/MJ6CEf4I1tXbpw5uTuzuaxXmeq6XbjE6a4okfhmj5y2377ig/9zQQMfXwNR2kmnzSOPpDEn8wfK7M9igDgLyOBlJlv3TxXkXXZyulz9bkpGSgNJyinxmEnmYwqdqkSo3IsGTQC1IhJRIu12jfPlmV59voCG1Kqido81aO6XZuKqbJiSUyGP6eq7MZG06cGRZkQ4AAhG1MiScH28ZCCJSdGIaqaKjAJs2Cp0zq5XuQaBkooD+RSVRUIiydkOaNSf25UcXcmrLtRle7tTFhoYubF5Y7noTCSEHZdC8H+eoSQ51u8jDfMRm2tzIgOgaDEgG7cRfUVCRxPn7T+Z3p5pxLbkFnqvRdcFIsCNWtOZHkP3YSQG29CoK0VeXMFPgeverldJPZ68z13HZgtZa5FgcLbfwXunXZDGC0jRD6Lv4hslEE7vxEDgkao4wgAQhFR5sBXKGAcFnHQvW86IvYJIJROIhtZ+ZrE7GZPtDGQ2MjU9cUqYplcilbF2ERv9hjDBKeJHABZZxmZYvYF9Z0nvmv9+LWf+nt/nzFK8Y8RmYJMWfTt25gzgIv//WOv/HdAEUFz7gTJcfyHyEFT6Izby9YPVl2KhWm/E1oWnVAFJEqodAtxRCVOnxwNgoUOZWAs6tVtvBpHfAxdn/afIXe+qoe+FnrTrav7axt2tzfWV5b6PTFgkkroCnLA0djY2o4HCUZzljAGCUyMmfDZ+eKogDZc48Asb6uS74a9M3j6G34MtPOD13/e6el/0jYe3b72xjykrpwbLK9M9fPha2fP7y1vx6M/SVycgRIJkUCTxnL01i3/VR1LspELf+ojGeXSDy0+o4P9LdOdp3938URMh398/rFMenn7U9v9c4906m/eOP7DOKiFOFDtl9UwCQCo3gv2k5QTBGgKISK78nXcxQ5ry4BJScHoCHeNCIkc3g2+DgsOP+jAQUPk9c7W4ly7ls/4yOvj9LjicjFf8Lg1xLPPDdM+NAyqPQmcVLXJge5et09mvWhFtChcIo/1kdBBfDNgetBrLV6MSJTAh7Gi2UFNxbC75yNCr5WeHI9mN2OhdmKl8VEAqRH3odc+8NrkmAqzcRsUAlwmb38DhvuQ1xh+DBpPbP13AAT70GtE0BpC5Ab+MZePF9FH4fODRBEQjlNEAC23sUTPAJdfvo41VfJTmUUCXsx3S3FPVDf40EHVNPVpJOwfRjeQhGQuyU8yA1PqCqqmBa6hQCAcGAX1Sw/6AFnVbn9VnyBUcJmAH3Z+7R/ha+TKvR+h3vkaPuP/weNOQGQbVwbZ1vRbb7x4+6kbV6+4UdLWYH1xfnZm+mLrYm1+uRJkMZF99PtF0V4cAgkKrDCy95OjKOI9SWBgzWGxoms7QsDcdyvzs8IJjBy115/hvve2TMtxhXHel+Oj6bF8zs8VCZGl6H/6GwahigrEg2tyU2J9LDHoQpeqBaBqKEyVdypZ8sM/QignFcZMi7CGRIH+8I+AQkk0QmRcw1T+RRoW/kUB+o//U4xyLSJxGnEfnidEfufL73yZatEgg78pzxCZAOHBHA5gmUhUIb9EhxMuv0BliqV4mKugRSim+vlzlDEalYByE7sksvTDLunfwzIPtA3AQIAA3QxR90iVfpeKspimXD5p+xPW2PXpj6CPDwzPp5/fbRcoJSOvnmT4yJsrXCKiyuqFJ3QkQHEEgkisA7mX4GFnDvWQRo9cfnNzs//m5lxsQ2UPWHrkeGGX778fvqRFPPZeRBNensRG+6Xgc/fvdhgduKtYHnJ6j/f3FwyMvP79O1dK8LBDERVvI0Q+7eKft9D3DoxVQLQLWGpOlKpKRzulAIlSFULewpXQOPMIjyFDhXtpKUISRTcmKd+TyCFejLV5bHmpVq3tMk8DR6N4xaIzvBbu+Amnr0cTKiNC5PkWHl2i7wnIDOjGxkHo+SfPncGM/8RPv/QT7f3WdIIrrvjrGB7BrgL88Tt/RDUG09erv0Ju3eSi7vaJAMRBikU1+BOWlKaThSSBz32WqRJ/4wPAtanmZohhptN/QQjFkiaz/E76Y9LP/oSaxxKRVPrXicYRoBxCpODORl5B3zkIJhMYEwUoXhLRxcGwdJKTwQOu3uIgQgoAhEKHIknwVl+EpRGT8z4dvfNQwveicSTBYt2u1y7tVaqNjuJKf3RUaLbuTuPbuD83ziwMf8nD5Nocv7bSW8PzYqSpMqoeDDEu/wMLOOGrSY0X2peeOZ3XNUmNWpQA5uuZ6Mm5mIqLxcU1b3x8JvPvUg2DUMrI+hqUyqAAsw5aLUZValucRm7gPwRqPlttBgIbveuDWLagMQyEqiqNSM7tXp1982fhaIgcgGmSJsbI2Td+O55uZ2MHmq1RDJKhzZ1CBKURwn/Tlf3H0Evo064FitRTGMFiDxOCLh9iSnwdmNhF5DLRH72fNEGTC4kmTx904BufKELoMXTt0um9rZl2rRC3ODObImMQ/uKo7tLzej4PH95j3HQyeFTtCmJm8YfZoOhkjCmwdO4Hic8tcgML5+PXMf9lXDbOvxBi1ZO/EaEYY4gvLfojytb8R/IvJWLeopm19ZAS6V/e4WBYcxc/awQCsLQ0tFbtzBtTL9sRz1qt/xjgQKyXCDInn81gAqs/4VJgltUM0ZEebOkYjLXHFcDKUjNktqcvmxjgKQz37ZvZKQBmqcWKpCUyU8VFDbqzQO6fS/524IGkqbdamazK4N8AwAebSw6AvLku22FaQ/4UrO3e+5vuFGxQ1Ad6JmboCeBsdOEFCj5s2jVzo/Vhthfx8yuI8zAfXX0OETpcyPIwuvcgcbgQh+Az77t+9dzZqcpbK/2wwhLN6KxfZvPVzbs0vyUi3h7Lwkgbi5z7Gf+k+orrFmLxldRWxDaj8vVyVFaDZHlFqnO9XJ3pLi36Sx+shY/m7sQNiSkS+/DMTHK7pIcUPVaWV5YlhdGEbkdTP3AnoBu+Mrcz/yxVHykzNlRCcFG9UEwF4AtFjacIdi88nZhLT/cCX/wSjJdC4KH6cvyFL6qZk/H5nNNRsXuqBznW7I3HXtFgdobCA3Rc69cBGLH61ZXIrrjlRxEir7sW933om3/z5mMYjVsAWQ5exH1rNJ0TO8QgunLsrrgi55FJBN15GN17kAwVPfLk4xfP7u8uzDbrpbwVzcvMa/PNj1oG/dm7r8yHy/tJ4MS6ywmk+Rr20StCKixz4tC1Fv6GCct0ftSarWhqoiLzen0lUnn0re86t5kIxlJbS7FYdjEo1yQadhhp2BbF0s3TcUmi9m4tUydweuMjH1N0yofvAqaSEg4pErxBgWcS/ZNFxwnuDFaKeri61rvUn8nlylsriTSWyHmCFQbSY9PTQuapxHHk8IM7C7dbTFte+tlvjH1/fHk2QsVJkCSnomcUSpVqmvkojC+59bk+OoFOD05kAphI3RpmBB/kgMH+uN/sr34YsTw5bClSjr0cHNDmscX51lS1ZJkKR33oy2xyjMFzcXOTqDRvxUNvmCGOStdeM4xNmsxhY7aFq9XKf77+WrHxLU+dfiGmKZaieRA0Lb2gYUlnKQlH9RTIS40oW89Qfe7J63ZpvRUMBIPhq9dvqphSAFW+fHFwbO/CzmrWokrPKnp4M56/eBA0D4skqBsSSeTAmGdysQCfsFuRWG51M3luV8ZSqdEwjF1EUMpFKnzIRfpX0Xl0HV0bXDnNMWfXQOYDkGTTAxIjGUlUlsQ087A0HBKYBa+UFRX1Yo+BpqhHWtjl3PVHH7l48vj25ny/WU/Fw0FUhYrKjkqQgnfjNEa0XYtDzxQZyqrjN/TxZBnDFfRqwZPPES7WccQJn/WcE3fp4L8+c10KraiB9Pe8GrHXelpcz4WBq7pJGP4hKf7ssVLizNbmej9JNjDemD+cijqBIDCCWWMlVys64cxaraJSVbOeK7IoDutacRr/wfZuLHR8lpnNtZe+MYCzcrzzoS3MMeEUfyC0/1rMeGF5qXdcfuc/qkq4v9aI9rpLuXRIIQa1rWiKaTKJJ87+MgEqqo/Su9P4GRcTsI7ePPzlgmsetAxQ6JYwQfgg6b3C/qsrQ4KEBIgSisgdH0rkiSohaQ8CeHSI8fgqfAIfAri04N5CQheF6jXmfg0B8Zvc2Sxuw98W49fpg9iv9foTXJPgo2JJ51yi0Te2EpZ60M6GKKbOGS5FuKErF1ZVkJKhYMA0QoYT47YUqD99paJxEgYk+kXa2qMyDp3qboQwVWd/iBJJkULf8Z0JY++ZgRV1wubilW3TOLcSCc3mtIg6QlUB/p+9ecDWoKkAARCgEfwyAgIv+7uafJ1dmCvkkgkxvyf52tr3hGciFBoKnytv/ldy7MllHiPM/+R+0//42Kt00OpvMDbVjuR1IN8tJepTGVKglp0yCA/My1XWqMbDq+XaN8y24mY03QZMa5FcNCU/ckFefTVfC2n65cX5kiHjPFYyiUqcZGkgxoLJebnCyofLO7vds3bi843pWOyJ9v4ZYkZy8zcQRqV3/zn8Tfiv3e9+Cv2oG1mCTA1Q5CWQFGUC+zs3GlZTgUsCvCtGJ2SFyjeQgiSueKo7aeaQX5j8v/OgiYbz+KdOHu6jHbSzWKkXy62KxpKjdUV+dDF/V+PP9N4egU663YlGqtD+4VaVYWOiOuuN5rsq/SOyEVj5xh+LQUeRFKzmT35iux+HQtQIOdnsJwpcAiK1V+vTijHNd+RsqkzVrdWp9qwuvxkOTdVLHwxoqnnpjqRvdFQ1Eg8rleJ+KRS1C1pQ7arhiISjkXQo4CgiAsjWNO4YJBLWX8YSQRh13J6d4tYiT6Ar6OzgVAIwZCNYwlNA2AHBiNCDNGDhU5DEsMsrhghiROSgEQ+95EXqloByXb50+tTmMQFjitnoBJwQ3kTqepnO5GKY/khGxdyR92ePQ4Xhgpkhj44AO2N3Pe8yOFrxlkcUhYuBnUgAdDm2tMc/As5nuitEUW01BCBLBDQ9cS3obOUyYXXmghk5wb5JTkd0jkEbtHOXZBpVuRn/uWBGx4RCzAl9lx4ydFmJWHTmW7LKT32mW04s2qauskKWASYtKxwjeliuvLnam7mWI1M4YIVsNRLlrQ1bk7gaAq7hL3nL9umwEzqNL7se+gBtDNYLgGHRm5VGGBBgdOcIAZb0eGgKlEpa8jzyfL9ezaatiK6iAzgYe+T7ByMmBW8yLjLwpGWbxO76mDAc9eZyJyGE02P8rjtvQiCYCcwxc8ZJLy3hCWyuDxDTldFsrg8aHIFzqXXFCZG112b/mtpM2dI/+bvaJPaWiAlU3HA7FTFUQXNodjAjIBCUSDfGnYLRBI5v62Y7zXq5mE4GFBSDGD+KTkQjZTJ0n1xOx1ypgrFT7YuCE/ufzz7SrG6eukYMutrawNrh/P710H+TThaWomaYhv8k986/SKZz2cxUjD/+BKTlVx699cHn9s9qUJn/gGU+/Xtr50MYL1W7y5Xaqr6KP/zOtzfms+nrVxIY+OsIxGwqfNy97ypqDmqIeDnMnaFFwRhdGxvvTNoR0wNVqEqTX+YewMW9icmP9PYixZwix6pOllXrhjJ32fB7/Lp12KrKnelA5/pHSoFiwlbj3/NMzjaWG7rXsddj1cWA5s9XiJ/wKvr5YeKmVUqYwAmQmOeVxSs8fHVlSNBDlMiEymKlvSQzEU6SsXOW5fEfJQld8wBZprcc7gFPeYig6PAhdO8z/oLHc4d7A3estjdTyKUSmoKuwlWVTYCqRxyyzGFH9y7o43BuDXMx/OaPUzx8mqJa9QrMT1q5aduWKzE7ZxhamFtTm9WpaiLdLsVSgNN2Q0+GKcacfEHgblPR4fhEcTEcdqey2Ex6R4E6CJVQfvPSJTMVtwMLswS4KgUKfdNOxbOdtCNHjbxiBigotwJdJatGt/1xiXNxPt/hRVqMqBQo/Dh0kDeh/a/x1+PfRB30lvdLNH6jDgjgIOn+nwCMfrNGZDS0EjokFE+27OyjE0SIeUhheHr/wbgJFwRUyjtWQEcd6Pgy6YpkqTfnJV3+lIQnjGiMoSx6Zwbl7LpVsCgUAa8tMDNDZND1kPMBh4JGNSJx0u/pCYne6j013YjwQCDTcejfw5/7mF7FmAWVIC1Ib/8Yt4ksCuVE1uR/Onur3QxSPkQhTOOfdSV2x50fMRAQJgEiBgAalR5yiGGCmdgHjXHSwxWja745BUiDBy5llFCXBAkKRGn0fjIx6Vebq1Tr1WpetKnLHiCn4A9AeCNT9+OhxuCOh65JgF9Y35sq6xC2mTkTSwP5pOQJWzoNdGeqYTG8C07byh3eY423dbm0EWjNKWTvUqCZcQxsG2YqYSuvvc7N6G45qmFIkHbCCr7zt2L3LElIWZ4tegc/7vKtg24NVBsQxIEifOALj1dYIRgDRA/vqcwJb+QdY5g4vf9gVJn7rYWpmVpZYvHmvHBPFR84sYa7I6/O5yd19WhhUaXRAlKyJNHZJko4lAvsBc2pVvCR/UfylDsNO0NS57/z30uBGFeC5Bd+mxKZm2FKCAagQenXf4OVdy+/EtaLKVvR33f+O6eBirDEeXce/hH+otgbjD6B3hi8WncwBhsU/CLIyjIQ+Y0gVrWTIKnsAHEJSRy5koEUGSs3kIwIlcVAO9JUqj2BVPdYlW56gY4OCHm5oMWOA/roh9968/VXX37puWefvnmwt7WxON/tVMvoNtwOeCGPX4H3yrrjCFFYnzXZD30EI3rjvXjD0McyxTsiSh8GkUU/nfaj94kR0iHGL2o7XRHAExFRChtY5AUO+6ZC/qvITliS7NOGXDZbb2KvsUSpxKhMRIBEOQDWa9fyjpPPOWE5XuLJuUw580a/hanoVaeCJGTE8N/AHZB7JcXeX1IiGo/W9rnRgUgwdiloybmCJHPGviukSHhbKawEa+Er65pSnavVHqmHJRuToKRJMpUoYF1l4RqnpGXnGFXCSvJcrapKljkIAUiRVF3TrZChwkmwFlWpsqjgJI2FuIH/CwqMvPNPJQkIwHtOnySPpk/M+6ZP2P//0yeAHPfn/VH4fbTrxToUEFB0hwkh9iZlo4d4XIlZW+7PiMg57miywHZ7sbOfxPo9UXZvZCdm+EUmW7gn8/PX1lqm9wK+nCpoeoB2ZoAbTHNU7KpVys5TbOzHg/taL6nZNuHquXPwf/xCX7aTNt3bwTCjzcqd1crCyg7DFFILscblOjOCdsrSFB7/zLESBZrUACRZMu4oADSQsEscQFfyzx6GQ5kmwp4Ff8StBGRQT8RFIreAg9Fa2OTdVZU0Pl6v12t5YU7Ak++jAkqBG9j/3q7dlcYBrfiG/u0B3jpRU7bPXhxsnF4qMQBsxqjZcTJPsAo0y6nteiRMqkaidVA0oxH47iao53fPfa5UjlPAF6/JzaQtw6cjt4KJ7HJqQfkBzIzEZvHcTkHcY/7d74Ivu99jCf3SCAfs/w4qJmGKCCXXEcbDb4VHkIHCiAZRl0i6zUCgfe+lTLznp301H3TFb5MsocW5fqeVTcecSIgLERoDrv1W7RiYOpT2uw2MYPHIuvQgoan0iWO42B603D3jpzIRO8iipsXDKy9EZEWPkF+WGidmox2Fh3SuGk5fNnRFauewuduYu5nqKbYWMuJ6UMYLjUg0Eolq5BJO9WbO65zaIcJE5aPoashPuBqSQ22h0UlvKw0BPx3wXM2ERk81ysWYHZJRDnITGu2BqrpCp0czHpb/Jz8p8L323N+6+Iwc+9zTEM3VZ+Mfr8t2xVjrUwKnz9YaM/2FUPLM+aqals+cTKUf//hQphsRjlmc2a+fPguZYrTeOdHdP23dHmr3v8ZPuj97E+2O2uteIRffIeBPb0eFZMfFJT7kzHTv7reKu9VqR8h9dKKZWLSEzI+U3eubF450/Yvwu7/D8hUtdeYGWDZh9YSTBrhGe/ZMx/L1GX4PMM9PhyWM4eu+hdnZpKVQCQIK1qyR4vpYd3zNxbofR+uDFWPoLDA+GEFox3Db5D3J2cZgpuUaLDscdF8d96RNLLifRMnek6zeizeftLyC4q7KPuw98mwAsNTVHrT7oJSbDTZkfF2eam06OKA4Mc66xahZUkPW/OWqPDcQba5QdYiIvX/hQbD2fD0UOdXafFylAV0NBAw1mFkIxJbi7b3Gy9OWt1m9hv/I2y9yEr1vYKRBogBYWgKCiR9NJT2OAHi36a/ANseVyyxCaLJgeS+FG33v7w3c5Qjt6XIhHPIken5YLJlsdYyjAMd/z/aGdjwrb4kzX0pgYj27n/z+9pxEN6/rmGfmDYotgWJpJONK+oWAnk5cegVHt7aBm997I1GNg6JLjbSTgi/0m5VDp6zLgWJs90U78H0/hCF0ckmx08lXhcNmmtI4OJY1Q20D5852fyoA9NJhOnH2E1EGBHYOIJFP2DL8eKXZyraWOxywMjeVEH39d+fxL7j8PId++7dO9ouEYfAD+eo9w7doXB3xZ29ljJAl0hyvXNy8l5zSqA+xuP+RQfsrU8vg0o2HhCzuL9w92NsYrCxNT2VSjuUK+Dk4p3gGx9ve4V3R2IAyXrxr+qxnzvn35PdM7BGKWNBMwJCrnnYsJYz/hDHDsULRimgBR2IsGlODlRNvNdMJE7JzmdcIN1SD0o9+LFVrJzlLByRKrLhMlU5WzX6sVkpLZy5msoE/zWjGvwFZSfDri3NWxAoGCWDNcBa6JXdTD4bMbOYlYBDQVC5/4MMf3zqM0opOsK6lmzJemn8+eupiMqv6OP6/4uahT3hxC3hji3dGHd7hdJrHZvNwGBFfOHfyxNZGo1qdLXHmiGzAr1RNqP6k4ouWesSrxTuOhwWau9sOTBY//LW74/k2r637xu49I8/rBceYpngjwfAPgyQHYxL5QVDq1ROdvO7ZhrrlRCOVhHl1ZW9ddmIgxUzCLQdIqvOpby3/fjgwMfrsjZq8mgrxYzYH/AEiS0x6W8AlopWTrbLhWQs90EgH9djyYHvpffnqo9dB5PVw8QrFWtG3qb/m2tRDwcFd0X9FNSBiFBRhwAjuSB4P2XgizSTH41PlerYW4izZRF54ysfhjc8cwQFxwkYyVPX+d3dvdMRkuzvvlVrhUiOT4WamkMw6lq0awBrp3k4lHUid68RSp+ssGukvzG3rLBBbDKmykg+uRuW5yzWZqCq0s3Z6ECCqYeim46QinKSS4Uy+P1+vvpo9diUkL8hRrbg6EysHc9OPnIxINBcOnl6MmY12jKbmEg7CHi++2e2+Pe1mZYcDt8qDMYcDxAEDF9AmCt7v32NeTByaVGRKR8X4V15+9tZj1w72lhdnWrVKIiaPW22G5EEMecfjyags//Byqd/WHBtVv0o4lrzJyptVnfVL+b4C4+cNm4CXUBEMkQBg83SrfjDzzFQGOzG4u7BKzHKuMbOtYicOOBjMl7PJqhWTte3mnK4vljLOzvS8DvDUfLvigLLX0LChw8uqLOmYE4oxxkTe/3ytkK1l5uI6vf4Eniy8jhZPhIKP3eSaWQwEIZs6vXcNCHWKU3vZfHbOUBtLt9tLlJM/vdDJNjVpsWSuDxBBPVe/f8PV70W0hy6hK7+5t4oZjCDuKSR6nxL47ZChuoeFy7KEU3vgseMfu5WUixfidj0ey3OW8ON4yxtDPdp8wIvcoEcNlOJIfOfW8RolxLUGRxJfHJb2/MZJD/4bYpmUExpkaeX66hZo569/N40RhTJKvHqo7Sh/lMFS/Hc/TDNUY0xSr/LW6VgtROKZpZMEJ55otOLBxTTgX8diwDm4nHyJNzuXgtLjO6fkRwPlqKmCOMFXrwQ/o8SMoHnzTQavRprxWOCdv/rOD2Fay3QuB+ONeIYBNTd3LzfiYp8cFtke+RM3Hpx1ebo32DaAiTV5CiZYEZMuDBN2m6sS8RejRj1gixc9CAn3fjvG/sZgcd79gJ7LlUZdE6mQbU2u4B8tffZ5NxkSjneeFqWJpfz9/N1QeT+iIE9jbj4zSKe3KmGNAexccRLTuaktyZpuR8f5IDwLt1i+kX/nl6emp2Zydpy8/R9xL0rq+WKpfWAQzQpLskThhJoKOc6Zj1lqPz6DOeBHLBavHl5/Ug5Ej1JELBfSlVdm1/N2eXre0Qne2dCNXCFsXezpEpHsCMLo8N01L2NcRWfRJ4feXt0Bxh0ALMrUoxdk3DsuIq/cLvaQc+4xNnk4MiZegc8C75cGe0v2bwn/Rb4SrRDhark6VXi6VvNmVsyR+o8bqL4rqlQ8dPPdaw3HW/b8uZYx30c1avLdcihY0beeTtsmp7KQZiBYojJJpLO1zXMGiznByrneiXBN2Tlz6cJHrna1c7XiUiValeGYyGJxgPG+NKcmZJlikFksFsiJ2FYfVsdIvGQUll54YepWt6CAdmHv9UsXutp6sdKLfWqWW9tudivPpOpiCsGdR/9TV14XUHswVQSC4cBfRndjombvo/lMOF52yldaYcb8YV7htB17FM6MlXjUlxkCcfgEnKpgsV98nag4PxeVJZ2SZqTSe/T9Yalbef8+1II9WaZ2p6e6U43XHsPRhPTHytc/ASyrS7QmUZsZO1tmyDi7MbMiAZONmAKAA3smA+CRpAw4LnTQ/Yt8Et30fyu7NPyt7DP9npV3/72Jf/+m+GtIB1MPousJuuFfLomgc6kEHfs1QDCkEWf/F9ByJRsAAAAAAQAAAGUAhwADAAAAAAACAB4ALgB3AAAAiQuXAAAAAAAAABYAFgAWABYAvwF0AkICzQO0BIcFUwY9Bq0HMggfCK4JhwpECqoLUgwkDR8N8A6zD2IQABDZEcgSeRMeE8MUWRS5FXUV4RbBF7QYbxkBGagakRsRG9wcexzTHYEeCh6DHxkfoyBlIO8hziKKI24kTiROJO4lRSYeJr4oOCj5Ka0qdytzLGYtPi3WLo0vJi+lMGQxDzGaMgcyWDMqM7E0TTTKNbo2EjaSNvY3ozgBOGU48TmZOm47DzuVPF49CT2rPmE+yz7fPvM/AQABAAAAAQAAPznKRl8PPPUACwPoAAAAANiymQMAAAAA2LKZA//p/ygEwwLVAAMACAACAAAAAAAAeNodjwPMFVAcxX/3/F+csu2672XbrnnZHBsyxmbFKdvG3JDtmtUQ5vz57Nt2dPEHZQwESHPAnlhDKVaSYwDD4qK1D1k3rFsYHp/IqZoO2kKfeE7WL3Jhs+/uGlMYovfWNQyJ9WTdYZx20SI6Wc8ytjCFMXGLHjpFr6jDZG2zb0BJiV5aad+HPhrOeHUGHaaUDtIqfa7+pcX2i2lbqE8rPTVm0FMLqr+pg/80dm7KiHSM5rpgP4xWMc66n6y51kwXykB7yXGPUbGKodGDYsxgbHiX2MQUHaOTqmmvZ551A0v03/UP0M7/66ihfWO6pQr6a77rDaRXOkwPeT7/66UHdNEEevi+Ze1cF62r6ZLO01lX6aoGzlv87wdD9IpO+mP/yrhtPGFQvMbvmZW+eKbdkIrAaqgBdqBFdgAAAHjaY2BkYGC6+l+DIYql7P/L/wYsh4EiqCAVAKgYBxgAeNpjYGJiZtrDwMrAwNQFpBkYeiA04wMGQ0YmBiTQwMDwXoDhzVsYPyDNNYVBkUHh/X9mhf8WDFFMVxluKDAw9McxA3UfZloBVKLAwAgADxkR6AAAeNpMyrURAkAUBNBllqEJNKIP2iCjDWogwt01pAASnAxvgBwnW+ZwOfn6APD9HbDcI9AHn5UDVjTv2QvPvbLdox9BFBllkhnmWWSFdbY44YxrHnjZGWOAu/MhcHeRP1djk+27Wz3d9Q43pmc6Jqm6KiqpoLyyyiitiEK6rfNP/p8cgVSgK4gEjGxADGMzAQkmdAUgLxIALKxs7BycXNw8vHz8AoJCwiKiYuISklLSMrIQeTl5BUUlZRVVNXUNTS1tHV09fQNDI2MTUzNzBopAMBA7IwtYkGUMACWfQi0AAAB42qxV5ZrjyA4th5phGHxBnpr07ZuUPcxsx8nwNH6fa9Fu+r28+wx+GjnL//bR9shJc/dyQ1SlUklHR1KFlSFWq0lsiV79pKYXX3Fj+b2Eb7o8b9MtylcTrjSzn0fVqFpf12uu57GyrCLd6StHRWnos2OY0i2fK4Y2iH9Z4Nrce/15ZzyK1+Ol9xNPe26eEC8sJB4/tS7xXVndtZaKgVG2wfNQDXfEV+X8KizhLCGAyDPi8YUkhYbkbFxWt2V1O3VTa63LTttazWoh2bTW56oh+Kk1MwCqRwsJ13XIDR0CvmUn9blmNHDRRlFfC0lOBsHlkytpvM7Vlgd9RDnl8F1crTeR1mKSLrjZkk20xenT5QRHLpLajuxz3fBI1O6ryoCaBrY61MRKhxlX1rbYWUd8rrd8HjEkICei9Z9qao3EAz9NrZiknRLkqOmPTKgoDlveDtljZj/546UX4NDQI+OU4lxntDFkSrnCJpMLkNsoudrUWWcQYuKY63wZtxRuHXVp0pQJ9SfGq3HiudqzLc/nKVNUKjFvZB2fpw0MiXgyeinXsdCh5SnZLWE3hZ3PM3AzW1JCYGAdcXk6SilPiadBms+z5tVKUtQ2OvYyT23qb3w+YV4tJq+WB0rXg/5UqT9pCjUTrSbFzEzEThbyTFuaFK0bFpPyMYUPds5qQh4LSSHkIdswz6kM2/I0rm2v3cE5ruC/1Fhk0gP+HrT7S3VMAQulTmmwFbF63Hccp6zVKaMKVYlXEp7RIcU8oUMe1+i3kFKE/3521lHTKgzztDjZaPOXbfcSaDqN3E61fT5jCkfkWfAs8pwpqiLPm6Im8oIp6iIvmqIh0jXFiMh/mWJU5L9NMSby/4YCdj70uVUuPvW5XS4+8/k/RvFU+y9g/C8w/ge+CRhFesAo8hIwitTAKPIyMIpsAqPIOWAU+T9gFDkPjCKNoYdlq/kGYWdTijS2kZQDko30W2DYb7OPSbpiiHp0TCV0dlfLM/abFmgln6/ulMc5y1daRd05EydXbZngtZKZY4+vG7pV4r0BOyc+HAQThuBH69XZ75T8dB7ru8V15wwyuon8qXcMXlZRdtfnWyY499Dn279nyk60DvM7KIk626SAeqy0dPaLPO/pns4oWUP+7GCibzvOmdOIf9cAFQYEf6UJj0XtzTzQRA9z+Lq3e0zBwAfXdChWxKnM+9PF5NsKVcn9tjJXvWhDeQNHI8p1aa27mD5U8wBaAhuDx74SpRuaq1G2sZBgk7lYp/IGHbyTaULoOd1FDTUidJEXRBklpaOCaImicZJCch0NVT/kFR4lo2YJAp8Lg1duNxZKfl84IGjqc0MO9ENQ80DUyFWHOOvqngSTaj0UfZnAkFG1kgT0UHsuNNtKONulvNHE7sXeb99BoY7q4GFltLTxoyGCaLs0qXw9H0xxu5SPjaZAWOviYX5ogyJwTmMAn+yoF/aqn+63PtLmmeG77SOdhobvtXMElmYB2sM2KEvAAUyjnQ4DuzstqNHqgb47dNfBo4E3/C+0Yu+f6j6Bn90FLI0nZE+9PTvEGAsZ2/l3JX9PDwnQd/en3EPKZwbD2Vcyh6cCvolZfH6M/oUplHP6FN/C+qXhOxCvhLUYvFI3B4pfe6wH5AgCIICiMe6RYjoXiO21zVnbxxpccPuPiq+r/pj+Zv+F29H8U0bE1veMIqo4BDGxDw9AXHEIEjQfiiQNSNGANA3I0LwosjQgRwPyNKBA86Yo0oASDSjTgArNp6JKA2o0oE4DGjSviiYNaNGANg0wxLwNT3OHwXxUdV09qXqcGYZnHfpi3oX1gMGth8itR8hNx2Leh+mEwU2nyE1nyE3nYj6E6YLBTZfITVfITdfiXJ4cBT9Pr9fmhWEeX8V3wTflZg9Fdk1meNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDbrSzMxaIFYW5U4+DiYOCBsHTYJNjCbw2k3xwHmAwxMDJxAHpfTbgYHIATzmBlcNqowdgRGbHDoiNjInOKyUQ3E28XRwMDI4tCRHBIBUhIJBFtVOAQ4mHi0djD+b93A0ruRCaiTNcUFAAZ5J2gAAAB42mPABZqB0ITBhGkfAwPTccY9/3/8N2MSBbL3/38P5B8B8nWBfIS6dUC5nYyHgeJ2MHVA/hGYPgBQyhzJAAAAeNpMzCEIwlAUheH/3rs3cLKxwRy4bjGKvdhsy2ITe+/N3kUw2jHagz3Ze7IZPOGd9HHCDwzWYPw3gWxUTLIz5yAHK85ywYKLnKi5ymX217bhITeM9pHbrN9R2ZfAihlw85CN3u+yM/hTDvb+lgvWsZQTY+zkMvtrP8VRbtiml9xm/Y4+/Vqlqu3WYSC4z/6KfbvkKHC5zBgot289qq3GCtg+lkIfft/vWC4zHdNqMjuzkH/LSTrJdDuy/Dn4wrVK5W+pVqlWeEUZ3Y55P9AqDpTPm3EgvLvk6o+c/Ie3IxnzYiBD1Z9sywN1ctqQNlpKeiFvWtnTwVoS27UkayuuiQpP8TWplLMK0oPgkcqMTmKuiIr48Uix/oPV8ueZ0Wgk+tDryLGA+9yXF3VwkdgFJAukSPa9kbYR7ymjsqEKOW+Km7KvbrQjPO8g0qb4bT85tyOZKQaAVlRskDWIQ5WxjRTvb9a5laq4INcLgs+XHVdFVUDsOpflUOqePOspdoVIXlvcZWmnvMjadKpcNkGmU2uE0b284nJrrf74L9cjpmVKKKUJZaSpTRFZYvpMAX3Bt0YVXH+p5KIqHqYVUmQcN8ZpH0wNJMZXkQ9k08WCvGeVq/TjSvkPsG1wpFNdBEtSCMU+8rcRHyA+oVNqILbgLUG7Bwb8cJaINXLWgMZk3TeDp3JOwtU9RfygUulK66bSy5lHYGX5RJw3w0u458crJ+u/Yra5zgyN3CWof1FfB98xzkXvc/D5uB3cduxesOQtzk1nnzwwtauLaS/vy81pSAp8vtoUU5MkstUj2xHQ8YBG0DK38vYRnSMagZm5/IJRbEWBZS68BohD585OU7nsTarj26I0595Srt9SwNzv7bhKwj2usgd9GVUN8Wjgks7wBnZjItI5LtJuHgObIg+4xZUiLuMyUMPWcLaIhXPvXc24TC3k19+S89C/+D84W2PheNpswdUBgWEAAMDzW0W3T9eb7m6PJjE4C7gTAd+P4J83YiJxCUkpaRlZOXkFRSVlFVVBTV1DU0tbR1dP38DQyNjE1MzcwtLK2sbWzt7B0cnZxdXN3cPT60cQXBtACAABALu8u7srtjAFBS1jkujoRqOnb2BoZGxiGrWZuYWllbWNrZ29Q5SOTs5Rubi6uXt4enn7+Pr5S6QyuaKteRqSLYihaFVHy/mef9ueRtW5bWv1L3rBNc5hYwWHhxeH5I6XJSffRg+cPvNSKJ78Q/IO5AvSkrOfpoeirtC7AfTeA+FFYzgWtpqkvlPpYuBMhzK82QRyycENxFBbM+dNw2kRZldjsgCrS5CdndqZmvZuzxHxCg18ZGNc2diV0n7rkrrUKad+6BG2iSPqI0eexsntXp85fXN7ex31TdS3OxJ4YqkAAQAB//8ADw==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-BoldItalic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff": {
"text": "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",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/katex-logo": {
"title": "$:/plugins/tiddlywiki/katex/katex-logo",
"text": "$$\\KaTeX$$\n"
},
"$:/plugins/tiddlywiki/katex/latex-parser.js": {
"title": "$:/plugins/tiddlywiki/katex/latex-parser.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/latex-parser.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for LaTeX. For example:\n\n```\n\t$$latex-goes-here$$\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except latex-parser \n\\rules only latex-parser \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"latex-parser\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$(?!\\$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = /\\$\\$/mg;\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext,\n\t\tdisplayMode;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tdisplayMode = text.indexOf('\\n') != -1;\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tdisplayMode = false;\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"latex\",\n\t\tattributes: {\n\t\t\ttext: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: text\n\t\t\t},\n\t\t\tdisplayMode: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: displayMode ? \"true\" : \"false\"\n\t\t\t}\n\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/plugins/tiddlywiki/katex/readme": {
"title": "$:/plugins/tiddlywiki/katex/readme",
"text": "This is a TiddlyWiki plugin for mathematical and chemical typesetting based on [ext[KaTeX from Khan Academy|http://khan.github.io/KaTeX/]] (v0.10.2) and [ext[mhchem|https://github.com/mhchem/MathJax-mhchem]] through a [ext[Katex extension|https://github.com/KaTeX/KaTeX/tree/master/contrib/mhchem]].\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/katex]]\n"
},
"$:/plugins/tiddlywiki/katex/snippets/logo": {
"title": "$:/plugins/tiddlywiki/katex/snippets/logo",
"tags": "$:/tags/KaTeX/Snippet",
"text": "$$\\KaTeX$$\n"
},
"$:/plugins/tiddlywiki/katex/styles": {
"title": "$:/plugins/tiddlywiki/katex/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/* KaTeX styles */\n\n{{$:/plugins/tiddlywiki/katex/katex.min.css}}\n\n/* Force text-rendering (see https://github.com/Jermolene/TiddlyWiki5/issues/2500) */\n\n.katex {\n text-rendering: auto;\n}\n\n/* Avoid TW5's max-width: 100% */\n\n.katex svg {\n max-width: initial;\n}\n\n/* Override font URLs */\n\n@font-face {\n\tfont-family: KaTeX_AMS;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Math;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Script;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size1;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size2;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size3;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size4;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Typewriter;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n"
},
"$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown": {
"title": "$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$view tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$transclude tiddler=<<snippetTitle>> mode=\"inline\"/>\n\n</$view>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/KaTeX/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/KaTeX/Snippet\"\n\ttext=\"\"\"$$snippet$$\"\"\"\n\tcaption=\"description shown in dropdown\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n\n[ext[KaTeX functions catalogue|https://khan.github.io/KaTeX/function-support.html]]\n\n[ext[Chemical equations reference|https://mhchem.github.io/MathJax-mhchem/]]\n"
},
"$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex": {
"title": "$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/plugins/tiddlywiki/katex/katex-logo",
"caption": "katex",
"description": "create and insert preconfigured KaTeX snippets",
"condition": "[<targetTiddler>!is[image]]",
"dropdown": "$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown",
"text": ""
},
"$:/plugins/tiddlywiki/katex/usage": {
"title": "$:/plugins/tiddlywiki/katex/usage",
"text": "!! Reference:\n\n# Mathematical typesetting: [ext[https://katex.org/docs/supported.html]]\n# Chemical typesetting: [ext[https://mhchem.github.io/MathJax-mhchem/]]\n\n<hr>\n\nThe usual way to include ~LaTeX is to use `$$`. For example:\n\n```\n$$\\displaystyle f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi$$\n```\n\nSingle line equations will render in inline mode. If there are newlines between the `$$` delimiters, the equations will be rendered in display mode.\n\nThe underlying widget can also be used directly, giving more flexibility:\n\n```\n<$latex text=\"f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi\" displayMode=\"true\"></$latex>\n```\n\nThe KaTeX widget is provided under the name `<$latex>` and is also available under the alias `<$katex>`. It's better to use the generic `<$latex>` name unless you are running multiple ~LaTeX plugins and wish to specifically target KaTeX.\n"
},
"$:/plugins/tiddlywiki/katex/wrapper.js": {
"title": "$:/plugins/tiddlywiki/katex/wrapper.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `katex.min.js` that provides a `<$latex>` widget. It is also available under the alias `<$katex>`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar katex = require(\"$:/plugins/tiddlywiki/katex/katex.min.js\"),\n chemParse = require(\"$:/plugins/tiddlywiki/katex/mhchem.min.js\"),\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n// Add \\ce, \\pu, and \\tripledash to the KaTeX macros.\nkatex.__defineMacro(\"\\\\ce\", function(context) {\n return chemParse(context.consumeArgs(1)[0], \"ce\")\n});\nkatex.__defineMacro(\"\\\\pu\", function(context) {\n return chemParse(context.consumeArgs(1)[0], \"pu\");\n});\n// Needed for \\bond for the ~ forms\n// Raise by 2.56mu, not 2mu. We're raising a hyphen-minus, U+002D, not \n// a mathematical minus, U+2212. So we need that extra 0.56.\nkatex.__defineMacro(\"\\\\tripledash\", \"{\\\\vphantom{-}\\\\raisebox{2.56mu}{$\\\\mkern2mu\"\n+ \"\\\\tiny\\\\text{-}\\\\mkern1mu\\\\text{-}\\\\mkern1mu\\\\text{-}\\\\mkern2mu$}}\");\n\nvar KaTeXWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKaTeXWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKaTeXWidget.prototype.render = function(parent,nextSibling) {\n\t// Housekeeping\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Get the source text\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\tvar displayMode = this.getAttribute(\"displayMode\",this.parseTreeNode.displayMode || \"false\") === \"true\";\n\t// Render it into a span\n\tvar span = this.document.createElement(\"span\"),\n\t\toptions = {throwOnError: false, displayMode: displayMode};\n\ttry {\n\t\tif(!this.document.isTiddlyWikiFakeDom) {\n\t\t\tkatex.render(text,span,options);\n\t\t} else {\n\t\t\tspan.innerHTML = katex.renderToString(text,options);\n\t\t}\n\t} catch(ex) {\n\t\tspan.className = \"tc-error\";\n\t\tspan.textContent = ex;\n\t}\n\t// Insert it into the DOM\n\tparent.insertBefore(span,nextSibling);\n\tthis.domNodes.push(span);\n};\n\n/*\nCompute the internal state of the widget\n*/\nKaTeXWidget.prototype.execute = function() {\n\t// Nothing to do for a katex widget\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKaTeXWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.latex = KaTeXWidget;\nexports.katex = KaTeXWidget;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "widget"
}
}
}
d09GRgABAAAAAJ0IAA8AAAABFwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAACc7AAAABwAAAAcacggM09TLzIAAAHQAAAAUgAAAGBGfloKY21hcAAAA+QAAAJ8AAAEatjSPZFjdnQgAAAMiAAAACEAAAAuB8UHn2ZwZ20AAAZgAAAFpwAAC5fYFNvwZ2FzcAAAnOQAAAAIAAAACAAAABBnbHlmAAAOvAAAhtQAAO1wDUUO3mhlYWQAAAFYAAAAMgAAADYMVNlDaGhlYQAAAYwAAAAhAAAAJARHCBNobXR4AAACJAAAAb0AAAQc/Rwk1GxvY2EAAAysAAACEAAAAhCJzcTubWF4cAAAAbAAAAAgAAAAIAJLAohuYW1lAACVkAAAAxwAAAdr06Uh+3Bvc3QAAJisAAAEOAAACT9Xi9D0cHJlcAAADAgAAAB9AAAAio+J4cd42mNgZGBgAGINNge1eH6brwzyzC+AIgzXJnorwuhvV/8ZcmoxvwZyORiYQKIAGrELCwAAeNpjYGRgYH79z5AhilP229X/ezm1GIAiyICRHQChNAZiAAAAAAEAAAEHAKcABgAAAAAAAgAwAEAAdwAAAJYBnwAAAAB42mNgYvrCOIGBlYGBqYtpDwMDQw+EZnzAYMjIxIAEGhgY3gswvHkL4wekuaYwODAovP/PrPDfgiGK+TXjeQUGhv44ZpAs02ogocDACABVIhIZAAB42nWUvUoDQRDH/3tnxKioQYkWCfiBiBLED8xerGIriuAdWFgqdj6AlZU+gK2VDyAItr6A7YGtnSASLCSIpDn/s9mN66GBX2ZmZ3Y+djdBB2vgR+3yqwMEKUrBNYYoF8gY9eHgCMPhIBbIiLrAhGqjn3pZfOEd41NM0J5l3JiRsq+GCv0zRk+B8BUFq0vOKv0lU+8dQ+E9pmkvBRUsFavZR7GKAPh8Ii/Mpxk/r8bZB/3cX2Ms17I39ZC90VcPzulvo0k2WScidSt13wEismftucIpGqIzVtDUS2SZdSJB3eCBLDopOXpsIf4lf5ixcsfKqFBHkyRSR/qVOdQtTmgn1BvkUOpxHu3AMw5VOWvxjLVqZy3ONkUmZa/tT1vqVq67vi2jcke5tdiyL7D+ttM9XGzNi4+9dRfn8iSe3bTzOLQP34SZLTwTPXs0pF1ytWLek+ZZNcweosq9PFcWZ0fBF2LB9hLznLSl129hg/ewYeLjHG4enSN/Lt31SwzIW/HhPDC4OVMkgunF16WfO6zyzSRkRWyZzeslX9ud4389N3Ikvh/P8n6ylvvd/DHTf5g7VTX+FxAcA99R+61oAAAAeNrd02tIVEEUAOC5e901y7fmI1/3HB2XbgRhGQUF6Y9QAyOkhB5CEEEUQklW9LDogVSkBFkohRpCVJgpa6JmUam9qD9ySa9z9moQkZnbjx6Q2+36SLYN/NO/DsyZMw+G+WCGMSazqZbIJDZR7rBG0uQ4QM6x+lfsOHOwfKawzWw3q2UNrJF5JKetxzYoy7KQPUomhIETMmAFZEElXIQauAa1cB0a4S7cgw54AE/gNeggwIBhlNCOIRiJ0RiDSZiOmbgas3Et5mAerscCLMStuAv3YAkewBN4DiuxBuvwJt5BF7ZhJ3ZjL/ahjkM4mpqa9pQH83AezeP4Pl7HW3grv88f8ufpdmeUU1k4ohapx9TzapXarvaoL40gI8JIGDNN03IpLOsvj+0Pz/JpT/Wkpx5uQRO0Qjt0wSPogYEZT4CPR8FluAqzpj35uAE3WZ6dlqcYS/EIlmMFVuNVvIG3sdnytE96nqGGhO9S0cezl9fyZsvT6ec5qp5WL6kutVt9YTiMYCNmzGuB3pqPzRazzDxslpgZP8e9Rd5cb9r4uvGV7i/uRLedftB38lA91VE1XaHLVEUVdIHOUjmdoVN0kg7RQSql/VRIGymf8iiXciib1tBSWkwqOSmdOCEBpVACRVI4hVEIBZFMTHwTX4VHjIlRMSI+iGExJAzhFkL0i4ZBSe/SO/Q23aVv05foip6sx+uxeuhAX39vf4f2WSvTtmtbtAItU1ukOZVPykflfUTg1Dv8n0JysBmUZLOSzX/D1BecNQLsjsA5QXPnBYeEhoVHREZFz4+JjYtfkJCY5L8z+V/uCj614r9YPJFSfGfezH5aGv9d/QIVURKyeNqtVvlz00YUlnwkTkKOkoMW9VixcZraK5NSCAZMCJJlF9zDuVoJSivFTnof0DLD3+C/5sm0M/Q3/rR+b2WbQJJ2hmkmo/ft7qd995PJUIKMvcAPhWg9M2a2WjS2cy+gyxathtGh6O0FlCnGfxeMgtHpyH3LtskIyfBkvW+Yhhe5DpmKRHToUEaJrqDnbcqt3OuvmpOe3/G37we2tK1eIKjdDmzaDC1BVUbVMBRJSoq7tIqtwUrQGp+vMfN5OxAwohcLmmwHEXYEn00yWme0HllRGIYWmeUwlGS0g4MwdCirBO7JFWMYlPfaAeWlS2PShfkhmZFDOSVhl+gm+X1X8EmqnJ849zuULdnY90RP9HB3spYvwq2tIGpb8XYYyBCnmzsBjix2aqDZobyica/cNzJpaMawlK5EiKUbU2b/kMwO7qd8yaFxJdjIKa/zLGfsC76BNqOQKVFdG1lQ/fEpw/Pdkj0K9oR6OfiT6S1mGSZ48DgSfk/GnAgdKcPiaJKwYOTQSsoWZVxPVUyd8jot4y3DeuHa0ZfOKO1Qf2oy6we2Je2wZDs0rZJMxqduXHdoRoEoBJ3x7vLrANINaZpX21hNY+XQLK6Z0yERiEAHemnGi0QvEjSDoDk0p1q7QZLr1sNlmj6QTxx6Q7W2gtZOumnZ2J/X+2dVYsx6e0EyO4v8xS7NlrlIUbpucoYf03iQuYRMZIvtIOHgwVu3h/Sy2pIt8doQW+k5v4La550QnjRhfxO7L6fqlAQmhjEvES2PjI2+aZo6V/PKSIyMvxvQrHSFT1MoykkojlwRQf1fc3OmMWO4bi9Kzo6V6XHZuoAwLcC3+bJDiyoxWS4hzizPqSTL8k2V5Fi+pZI8y/MqGWNpqWSc5dsqKbB8RyUTLD9QokLmA4dKGjx0qKzBI4feVQZNl1/Dxvdg47u4W8BGljZsZHkBNrKUsJHlMmxkWYSNLFdgI8v3YSPLVdjIUilR06XmKKidi4THJng6HWgfxfVWUeSUyUEnXUQRN8UpmZBxVfIY+1cGSsmhtVF6zCW6WEry5qIfYAyxgx8ejczx40tKXNH2fgSe6R9Xgg47UTnvG0t/GvxX35DV5JK5CI8uw38YfLK9KOy46tAVVTlXc2j9v6gowg7oV5ESY6koKqLJzYtQ3un1mrKJbg8w1jEW0dHrprm4AP1VTJklNAj+NYUmvPJBryKFqPVw17UXx6KS3kE53AmWoIj7fXMreJoRWWE9zaxkz4cuz8ACpqnUbNlA93mvtlLEcygd9hkv6krKenEXxxkvtoAjnkGvvhPDJAxm2UAOJTQ04BeE1oL7TlAi02mXQ4Mj9nkUVP7YrbiRPSpqI/Bsp1PuhS6k/DrHQGAnvzKIgawhNDf0NhXQPEI0ZJOVcbZqOmTswCCixm5QETV8G9niwaZgW4YhHytidefo1zdN1EkVPMiM5DK+ObDAG6Ym4s/zqy4OU7mhpKhw1BoYzLWwklTMBTTgrdF2++j25svsEzm3FVXLJ17qKrpW7kExFwusPc5BWipUAdUbVdgwulxcEqVeQZOk19UxNDDDX6MUm/9X9bH5PF9qEiPkSL7tcGCjz8EY+t9g/205CMDAj5HLTbi8mDYnvu7ow/kKXUYvfnzK/h3MXHNhnq4A31V0FaLFUfMRV9HAp2wYp08UlyO1AD9VfcwZgM8ATAafq76pd9oAemeLOT7ANnMY7DCHwS5zGOwx5zbAF8xh8CVzGATMYRAyxwO4xxwG95nD4CvmMHjAnAbA18xh8A1zGETMYRAzxwXYZw6DDnMYdJnD4EDR9VGYD3lBG0DfanQL6DtdT1hsYvG9ohsj9g+80OwfNWL2Txox9WdFtRH1F15o6q8aMfU3jZj6UNHNEfURLzT1d42Y+odGTH2snk7kMsMfT26ZCgeUXW4/GX5TnH8AK3FNYwB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNjEwMmiBGJu5WRk5ICwhZjCL3WkXMwNQmhPI5nDaxeAAYTMzuGxUYewIjNjg0BGxkTnFZaMaiLeLo4GBkcWhIzkkAqQkEgg287Iy8mjtYPzfuoGldyMTUB9rigsAaUMkpwAAAHjaY2DAAEpAqMqgyrT6/3+m1UyiDAxM+/6/hbAAYVkHbgAAAAAAABYAFgAWABYA8AJ4A2IEPAWABoYHnAiqCUQJ7gsEC84M6A2wDooPcBC4EeoTZBQwFQgVzBbaF/oY2hmaGsIawhv8HbQewB/cIBwgxiEGIbAh9CJyIqAjQiPGI+wkPCSQJOQlTCWYJeQmQiamJvYnRieIJ8ooICh8KQgpjinoKioqmCsGK4Ar/CwmLFAseiykLQItYC2+LhYudC7KLxQvZi/qMKIxKjGKMfAyTjK0MxozbjPuNI404DT2NTA1VDW8New2MjaENpo22DcAN0o3fDewN/Y4Pji2OQI5mDoQOqg7DDtUO6A76jw2PHw80D0sPYA9zj5OPtA/aj/cQFBA2EFcQdJCQkKUQvJDVEO+REREzEU+RbZGSEbYR1JHwEfkSAhIiklUSbpJ/EouSoRKukrmSxhLWku4TChMik0ATTZNbk20Tf5OUE58Tr5PBE8kT7JP7lAuUHBQtFEKUVJRoFIYUpBS+lNiU75UCFRUVOBValXWVkBWolcEV5hYHliwWURZ5lqIWvBbYlvuXHhcsFzoXgheNF5cXoZerl7UXv5fHl9GX2hfml+8X9pgCGAuYHRgzGEUYZJhyGIeYnZiwGNMY9pkPGScZYRmbmboZ2RntGgGaJxpNGn2arBrmmyAbORtSm3WbmBulG7qby5vrHAUcHxxNnHKclhzCnOudEJ06nWIdgR2gnaWdqp2uHja3L13nCRXeS5cJ1SdyqG7Ok93T3fPdPf05I6TdsKG2TCzsznMRm2QdhVWWgVkIWkVdwUIgRCYIIRFMJiLBUjXQoAuGEy82JgkDNgG44vNxSbZ1wZ878Vsz/eequ7Z2dUqwPf7fX982tVMd9WpqnPe8LzP+55zagUslAVB+BIOCURggvyMRJGAh3orTsUpVJxc+S3Hy2UcOv/TMvqvAhWcpSX8afynQkPYIGwXDgqPT9ubkUz37d5FBFRDWCCb5p4qbt07nRJkAQkyOiJQGphTmEhUURDwfglhbOL5xNxTvV4rKtOb2k2f3+pFGzh4fnFxOoGEA/u3bx0fKw+WenLZjngoyCShgRqa5PZ2l+u16iDKMSnkRlI45DIply3ka9V6pVxv1IOBejkSDgYi4Uo5vOJkw2WVQl5FtSy/Dk4XBnCBSaxSZvlCjUkWilTy6HVWX4fyfaw5YsiUxONXUaYxMy0bp14pmxS96h49kmKqRN/2KJa1k/qDknbulShrPeKQRdRfV9xS7OjR/0uJ4SAWi+JcUOvYnAj0d5dMIsoyY5RKMtMCRgJlUV2mqPmd5t+EhjQmSxSLqqxlgqZsox4URfsJyzSf3ak/hq4/44xdt+/jLJNMF5CCJVCsIAka6Ow6/ITQJ4wIs8KicINwF3rn3FMqyD8oICJsGsEKMZHKGgirdBOoRoNTYe8UkskIUuT2WZGfLbzQhS90zeLiov+4XkEhjCjstI6YoGKmHoHREEKE/dBRY04TMcZov4CQg+Zb3RgWZKIQWTktKPzK65evBDG84IWF3/5Zxd/tWS/nGuvia0Aai9Op0dG77rz1pm1bN24YnR2dnZkCMx0oFTvT8WjWkEK9wWqjEo7AH26VFqq0PsGfHBhoo16ZRI26XRhABbDYSCMXCdvQahA5kUlUqxbyuSwzURIF87lCJIXg0nID7J2fCVbzcJq57Zvn3AqcK1QL2XwvCnnPrJQ17dOfjV6f0pTgrIpujjDc8ceJ//asRpVER0CE/4KJJKPfZ9eKlIrXMtrYODHpBMKuRp4NKHCR0a10VUOGZIxtHA0gxEwpnGYU28Vdr95PikYeU9HUomfwo0zD1N2aTifcRo9UOBzo0s1bUiLWQFUMrDyAUwGVIUajhhI4//WAbBi4fJ5NrD/RoRgse9XtSKPYiJf75qp2MhdOBUMTze1jc6bIn+kMTm7tt1CwNH/WJq++X2PM8wciFJZ+jj+IPyVMCTuFQ8Inpq0uJOLdYLW7ujFoswVgRQUgR5IF6TRcIgtEPiaIIt5PAXgCcwxJkqfPIGpDWX65PTQRRILFY+0LL2o93feiDRGS9rTbS2gLmEoMCfsX5+fGR8uDmc6OeNRVFWEKTakevHEVmohJWW4K+WoDzKJcr3g65AqvlNMoxKRC3v/Ti7hZAKS1TqN6TvKgkV/gtQDT6q5JOakXwTH8dqaZ0cXS6rum95y2RTH82G2kqI2UG0mdWZhYoCVq6BKR7fKGUo/Sly/1h3ruDxcObXOaJ01SG94ldtzRpTFpJkBIEL2PUtWwDBe/SZUUs3PcDIdT5w6Hbwm/4o1wt1CYisGgyL7BmCiZsei6jJvPv+3Yntk3s8Ccg74fCA7ufktv6tFVLmNTDyfuSpyRJjA1wxR0SgUbMO4pwLiCMCrMgVYfm1bWrpqoUZmglj6zoFpMZHxaWQkDbNkzzWVNXq6ldUnLl2zkOfp0cHxsy8LM9Njc+FykGsv3DatSvDfYgGgDXhlpK68XFVpOjS84dTVS7UWgGafl2AFQWJY5oJZlVwZn9hy7xl0aQlSOuzR736tn0yfPBbHV+bbrjA+9n4miErEsBTpJ7XCMiX9XGxEJEU+BQxK0mI1QPVVM3xTAWuya8H/fbvXek8t3T1CNIZFtxu+nRA7fd8SpLwxd8QodUyaJjCEiMQUPKaqEmajHMbL05o+bPzUtw0BxFDKInjj/dcmmWulreXty6LW9rPnXn7w6vevpdfvzPXFMCZMOCaKgg87uAZ3tEo4KVws3C2dQcDpZRhI7dmQrkaVrkSrfgJB6DSLo967AWJBAkzroZwLcR5VkFRwT8YBz2gLGAn+vF1T4qqIjhqYQSWKLAmPGnG3qIsWYLgIRMWkb6n/3ezhwj9/qcuvSy8Euem65BQm3nLnlziuPHzywZ/d6CAD12hAQmGwmEQsGTB2wahfa5XAfz3qqznnQ3PbqcMhEFsq0zKbOrSbvGc0UyoQjIReIjO/yYEs5bmMhL2Dw1j7qk1bEyINlNcRajkMA8ZgNf0wQ7pP1aA56xjGTB6Ng1fbwuuE7UsQByO6Q6Pk/43YV64FYIBUT8JnhAZmIhixTknOdbLU+xlSCneqYY2sGkBn2jWso/HcNxqKIZmuabt1u6qbJlIDyX0SKSCxtpb8AHG2MPfBqWTGs0p6owfAHAWE8kyOmjMuqQcDeGJjkzk1RzS5kQ7KjIVHtPnm72NnZEw8SotJ3PCpK6HOKef5LpiwxiBd6Zz+YqdV8bqtpMFmkhtj8LorHxbClYA87uB1uADtcAD57TLhO+Mp0GHQpHzoAP6++MkIoQccRJrQFJP2gc4wIPq1BxBcEeVFHsmzMCS3Ht+fALSAsLkK4MMU2plz2IusFL/pt2jsit6iIIFxxeM+urVtgGAuRsNsdyg8MGFJHLyjUiwBgRTxE5LKSRyNCDd8gKuUWDWibmcuRCQ6+gHlFWoZTrg2gWpCbzrLl8IixishM1kHjRae+mDFEBSzHGmpYdkAFaJRUJ5tc7WISyXdRTZOaT11qRd/0rKRWYWAnaLKuxfCdimoF7BDBT4jyE1RlkuNGrYKcwKIiyXfdjmlnpjMTUeU3v0VS3KFskt37auaoCCLX5Uwn5xsGtTZ/B4XAMpiLm88tKKqqKRYBW+Dc4OfADbYIR4RrhTPCp6fDNvj3MaSgow6WlNtu3l8CubdtoQfyEkVCyjFB0lRGRCrxYA7RAExHCMyBv8v7BVkOym07KPATgBnk2OWuXNF8uu/FW4Kj7Wm1pzKnCe6p6647c+rMyauK3W6kOOlmp3Up2Ytegg20g395yqONXMkAIdwkwCL4Wc9YLrCLyDJjSCNovwqtoAtBbgrhJCpPIrgbNy+068X5wu5ipmEXFyGiWyOmBAaBJpioybmAhuUrN6yt2Le/K8xpR9InE4k7XWVaQh9t84j+B5kOmVEiI1lY1Bj+xOVZxMJzb16YCVNX2jQTzOlM9QxDVjPh+TXYzAQJNt94q8dCxlsc460zCjEWPxf4UNpnGM2PKWZcm59TdcymR5IB2eeRJuDGrwE39glXCa8QPjetgsYUGWkCbllHSdAEChT1CAQAVYa8VVkMGFhRjDnHgkwWWCpevDgffqErrMtc8bIb+3lyVhBuvunUdceOHjwAPYaEfX5u3drpKYCKUMgNRUNBbi0+FICGHZsTDQ8aAAZ8EFiFcp61vDA4gOF4l3sBxwecXMumWDtHKeRtVOXXLn/H/6qJUqIILs+KcdB/87NM05RoSRR/JYo9MUVRGBy6BCjQJFNVlkiJOsa/QogqSErF4Tr2RXodh5DrKEZvQfIpnqGcooAeTGWUEUNq/mPzh6IJaMAPmBrAg37XuXP3yXDo8pBBTfA6SpM33H13ODvJwwE3oT7FRxKZ4dnm382+RRsNtg8IAhbcpSV0I9hGP/DRuz9aAvYitoloHDJDQRAXZSSKQEAJ5noSVlrByhbWJS1e8KSv5YAgcCIBz+0vhkPRbkWKXaxVH9x9tS4nkk5LhTUO8CsVdRXXTC+4LQ3GPdU8C/JQYvEglSSpN8Hj+rdAvKJITwG8XyRjCLXYF7Iow28syiqKobgCUqU8DIMA9fOf1z0B+v4kLT2Nvg8yGxSmhe3Cvo/WbYxYW2od0IQhgXE0FJF4GKSAMVkEsDW4VF74tAVymdbXrQmOhN1CLCvDeBq8/OOHPR/6nDbpbmFfS1qYGzIwKcRFEgOi7sNo0CbVvI+OkRSu8UNSMWNbPSHTJNEKABEN5pLcbNGcZ7ZFCYTjHtmhzx5EB7i4GNg62hDB5F/CpqNLAaopVMVGKl1ikVwyCpCU1tAAqijWRYFM15v/2vyJOrNaHMePyHKk+fXm5w0dBeYUFEXW+aeNgMGMmEMUEWk2dji3CS8tEQFkehii2a3Cq4X3TNtbNw4RUbrt5qmADZJqY1UnMFZQlSiBYUmSMQeQQiEEQ+4JMUgwhbZtXtzOuky7l2jiCNxOYw+cvf7UyRNHjxw8sHP7wpwLgcNNhbIWEJZul7VrdJMQdQaB6IZ4svRCuFO7CHhCET87yvvtxlErlPG0V/DqfGiFgWfgMzybkyFSqHqRbdgPYnCWCOoD50TJ0nSRZPYctQ2MdZpu4xH3gzYegYJaeNQFVo+vvco0Xcdl9O67dU3u3RZ+O4rbcZOp5//9Ajgdc7dCtmiQ6MyDtt6BrrwydpdBLRAcY+ApIitdfbNh3ng0DrmaZwKeFy0Dk+dCHjLJUvWqB04cCjqRQAdYu8SorDBtTfCNCDefsuM6PrkCqWwNhaml4VDz1HuQZUREhG+5M2dKFgX/a+djVWGdsE147JlpIL1t98u1+SgQMAKqXPSyZ0UWyUWpVe8LNLUubfrSrfxEyW3Utm2FRH5dYx24YKjHdTRw4GDDVzhPnr1IBebAccxPjELuZcNTpHYh5yE2tEdVsBN+CzjmMFTjCoyGHUAOpo1sHKwvqF62kxClS7OdvzvpaRF6SvgoDgCloeEug6fLXCfAc1nzp82faLaEA5EtRchk2NMEyc+PLklxOVFBYRRnWD//YakA6RDD4ZDs19vJ4y3/vUd4lfCuaffM6auvWpgsRiQRck206RwkoBt9JaV1DXIVhMHPMDbmDIWJVBCkRVXGkmRKbQVd1My6TLMXb+FIXDHh37vlhuu4++7dnXKDve54LeKYQCEa1UodALXtmlwnAJIR14fOceQ7qgUa4KGIR6MLFAOum8B5JmGJF7TyGl5uwz0/V8gDnYiEEwgawudqL3K47txxxNksJCP1BsqG4Ek1J9xvMNsOdkhIorfeLKKNRxKIHjkiiq+4lSkKsfoN0DKJ6NSlMa35561jEkLpM1cgWSf4rjOg3DCcFzXu719iFK0/vkchd96maWGmoldWKoxRPDkpaZhAbCPnN4sKdQIsruEhyBU1LDIIm+j9/7gG//DHIuaeLceU5m+av2EquB1FQYiMtsLgAkRn1+7Oofnmd/8eQ7dQCZWWhOZSq53n/DJ65Gcabf6g+c/h5DB8+yt8/s8snVKsWVby35Bq6uT8ByiHV497/Ax/CmxmPUTRt0wHbFDk1g2jcU0UUBlJywXOtALQwpVMPWuB6AlpJmQf5pwgScEL1rKymXWZZtNpQZKlm1+gmSNzazHnNrk94bzbm0sEVM9KfOLRqMe48iD3bHh2kkY+a/RCcaWdmTIphnyLQMxdaQ/deW4QQqRRrUXNgOTiMMFWtCOq3XATRj078+/CJJoOg3bZpwGjVXlQIpQBmn//O4SQSDrCU44vAQrX3vvsbSCmzyBsazw0K1ENAXO2o6ItmhjVTw1/448+qIUgAfSRWBFpl9b8SvM5gAWMEij8P38iR9tnP/7cf7j4/BeQqfYKXn0hCznlj/CfCjGhLmwVbhSu/OixUTCaNrSGgLx55UPIF0GEF1eVg1yjEMGPrTw1Hb1wFCGyp3WO8HLxR/uSpQyVor3I8zzwNy+F4xHV98dGPQICZ8t133Zy2Kh7FUWx3shCHMXtBpWyl/vVqt1+9SCJWhMHvAAVarm1pzS0uStwdPPqPbamRVcdede7j2xyCQlt3PTPaW11bz1ISLAeyVidaaczXA8Coawnmj+wRkm/THVHHHPl90B8xakOjaC30bhkAK9NWzEsp1NgVcZwYnfaquJnabHz1Ib8g/lD48ePb/q9wHAlcOvGzUERFetn02tWpx6ou6ACK1h7VfF06Vwt9pXT22MSVi06frhY+KutjPRsW5fasPHz2CIMIdQ7tOG+reGZXT3wmSXiB96wuKZzarmevAt8qA6xcC9g7yMfO7B5HSdWLaVlBEVAWEHHZAmLYruYvEw6TdJW4GUaWpc0fKk2DvFcaPvWQiQUy7sxXkVOtqrIF+aFIAf3ajdpdAlTurio3Mi1a8qFfAxFBlDOswUgPC1NNiA8+jcNVcp+nTnE3v/ajalifrvdMZYbdyfHEK9xiumoAvkWoOelFeZvs1O8wnytSL/IeqshOcxIsZ/VDDZGMpYUSYpI6dmRd7zishwaOt6frKcCmnh7KDMRgti3IhG7uNLcbSxXmmUTKG/HzqlBKtn0wQexuToxZF2DTRro3XBVL6OB0tZVPRb3PxH8b87zv35ho3AMoujvC9+dNl+BKLGQSB8GR+eImARddQlIlCR0UpAELOErhFZZ36vjiIsMtQt6/nRCqy1QP4Bp8cilF3kWUOITSe2WkONQXs65cAXG0h5AUXyAX7o1wctJoiQi6fRLtuVziO59977utff+/n2/v2p8aDDVEQpmZCnk+33Yd3vuo9wmuCIj4RYMDOL2TA8c9JHgEiDw5xbYxUBQG2oVgerdA5gjwTIOMKm+DAIkB2cu1JTgyCAAQzR9ZPOrMxwXUjuKRjS2uRSNuaKh1ydW3b4zG6WBTaM+WMz9U8nHikDjYqzo+BvSQorRkPweG3GcIDY6RyxDNMF7O00PKjBTOVLYle+OQc6fn9yux2OybnatDWgcO1a/Kf9g96GJ9KAssnSyWyJE7nDcndk+m0ZGN93mHAc02RJixZH702dT50Z8LKm/qjjSKJ2rRy3qY8nokWLhm9sgp+Fg8obM6SoCyieT/sH193tgQrGUSOwHLMlMnX8caMTgpIF4zaaRCXj2yLHlM4Ato8KssFu4RrgN0bmnBsBSbAFJwrG9s0QFWoNVsilx8SENDi365tctqLoG+KDiIwrwTamFQAbwZwgGixStnNC6bGPrMo0HXl5jb+K7T9BUrGr4NLRHL9Xcm/K+9RU33Xj6hh3b5udWz0yMN+qDA8VCLtuRiEay5oUp7zRqzXm3Z6hzAEi5F80AV5QsANKqcMif/QZ7BpJRuACSfryqVQlP37MsBzeFaxztM5+N3tlviEbu6sANO7uC+sfYsaP5i7K9lfSffo/d4Gdx9H9sJblCUCV279BwxnWpARZDbYpoxxX31pBEHDOaui110Kj5U93R+WQgU+5YHxbld9yoiKYis0ffevepDpFcrvjEZ739zM0DuzNnwqLBuq9/lWSMf5VpVjnaU+zoDlERqanDR5p/uAmTgWcHrHEvfnUs/RLb+FNgX0eFc8Kb0abpwCpAu1uOH908KSqyxWetAPUMb6EEMNn9EuLrdICwifsFXpcSFMWf7Jxbrmf7RYDMS17iXHqJXylXeB0bHbv8pRdf4FXKoY3AZMqOLV/Zam5d2rz8cps7vDzR9fyWQMYg/z28fIXsLdJYnA6+8Q2HDs5tHB+t1yqDg7lgVgVi1d2aXct5eDqI2pNqHtlawYfgr8e3WhX4lfX3C3Mx/mX8SlKFG4JNcg/obrQr8/4ssYXKbVT2/3AT5td79jzOH4Xtt12f60h3ZKM2WJUItmRoWVYwG72VjAt5hrGw6coDid6bcE4fLEa6eSsRODEYrGhdMWyywRnMFnZu3JMIb8ciVVXNCFDW/BTFgb5iz47F3bYsUylRsoLxwq7J4uqglITklxcIUEJSDOx8+tC1VNUkXaHsxpuoSkg4X9N61K6AkowkwqGu8c6+w1MTwxscTEyFGqrIPgO8XEXEHdyp4MaAqHaOZtJT5X50ZxJj0QqISsIO9GwqF3u6utcOhHLZoJkoTPWmc+FCLhou9gdC6SbQJTqGJJO43OYzgKt3eLg6BZF+i/DuaVeEYClsWjUqUSThTb0ultq5clZEcAhI/mkftvyChnwZBne5ltYlLV+yUYvDzc+5IXewyx3s9tKgYL2R8abnwKBaNjGIlou0HtS1KrQ8AfJCrVfNGkRTAImNOnJyLSoX9ObhMkTGa2VCVSppNstb/TWNkWAy4YHYU5DtsI6kK1KtPGTlmaXJEqNbjVFLQen9vIJLvzdmuAp+lwxx8aOM6nI8YZXkGMXN7za/q6oi9kDK1PjSHBNlUDemMblkxToUXWRvViqW1vxXVGp+u/nDiCwHcLSi2Br4lQ35zxdAL7PCQeFK4f5nrkSQibbLuoq3ng3oziIEUUIACkTxkhzo0jbWRW2mYxBSgSQdvrSVV2d0+bToxg3w7NmOXjccG83x+hEKt2qCbebsu1X1sgVFt82N/ITV05Onr4bokelWGgUsq+WacJivuYrgZ3VN7nYVyIipU11zu3bHZI8uYspyUZnPYIwySD8T/RTOM7tm5yvddp8SgLyEdcVlTW/+m3i1iLGW6YizDFyV0DC63SopSMb4CdnWKtH66z8e3FKfkGZKE4F//K6pU4mJEp+w0CSqi+MfeGZ9ao0rBlifW6yY73qnPljRmSz3KcjSvvEdfbarQxU1pnSttf/lx1rChJxI8urwwtLP8NdAX6sgW90n3DKt7dwxv3GkIpFlrYVl5ssa7Qe7Rx5+B5cd5pKzVvvsdBhuTm6+5KynJnPf3nVr3Gq4mO8KKlxB1da0kZfjeDZvIcLJKGewqoed+apfTwq53pRkOMi9hmuoewLVq/XGcqkI2Gp3mNeFwWmygH9Bi6iqdGJLQkSaHHbte5PrOxEvrtIHXq+FE0xj9NG3SWIsZSrmK9WQSMqVgNh8BovoIT186/2K5kTv6wBCLxNNU6RoFC8kY1QCYgjeR5jums3/Pvv+BcRLA0XUsPOaKVFQTUAyAYWbv3LL8tm79ofGZYUhhu1i89fNH0BSV0OJ4+GGlUkmE4bmxXBx6efkH7z5xWuEO4RXCY9MO92ICGfvfMXR/VsWRmRE2sX7mKrIGoiVQaBbBJvhUHaRCz2/gTV3wX8QQTc/v4GHWB2CcPddN5w6dJDPGc5vml03PVUeKhXTqZDOcw3PDSpteoW9dWg4V/UdK1sged+bLmjRC2vBesAr0PtelGnrNwROhH2CJlZ99ZVbUa8bvmf5CpgEmkS1fAF3V3uRl+zyyn2WqeonJCkYNuW/FqlJpd3bUWI4elTEuvxPeigosnuv7ASaxCxTyR5F9/VIboKpGkqB/7muxnYzR8Uktvb8zeIrZOX4CVRI7AzZ6FXy1DTQ9htO4qztvAJtgtQWcAYr1MSv1iVRpzKfd47Gz78Pwq3yD3+Dxm4Y/QeCKb49KmI+2Q32QDlkaqFXNP8eoR5Mj+tFjZfnGTVsZk3/zCnH5r+4uCYmurbd/GHzR4uYbvi3LfWkZcB9ws2/bf4CHya9Q2jVDmKKMRaLyVlhuT7Bc4hjwhmwjDcIH5y2ypBkPHT2/hu2d0gCaltG1tShH3wqGLyNl/ksQ1UYeJ+839YwMMvllQmXtLQu1/IlG/nVvpQgPPz6e+6++cYTV0IHjx08sHk+19vlDrjd0ZwDYS+S5xNw3FUL+ZWe7CGu69Eofw6HL0pp1L2pOq9MYXozQTyfDV2YJKq3bMkn+P5KbgCLWs5jUAHPOCvlWpVnrRwKuGV5Mz4I4m0Nome1A3A6PvJBi1QfzAdDTJXEt76VlwbdHFNdda24QNWgZYv0lyJ1QpmhemKr+MFUOm466jseEyUzVNnRAxDfmMJK1JZVypTpiejwP+d60fQUZoZY/DtApAljElDPQG7zHKIoEZ1Esq3XPh2QNn2jGPYQwuSTpyjcbd94pemEgh2QsvICb0ALz2SuIcr5Yn+c14wZU2VRUV83jqZmVSPsJnSZAs+4R0GIplY3/2jVXEjCGMw0yOpo46orwhD1LV1HgfMfIQFiRKNE8GLyEv4zsJ+NwhXCCeGN09qJAzvSHaokLM/4JFVZEikhdJFPaFJjTuGogBYvWip5SSPrkkYvdt5fIBkRhGNH9+6Zn4OebFy3tivE7USX4q1Ja7/K6IXfC3yIW06Nr8hvxeHWpC1YQKvu0C5heBGEr1ByeWU5JHlMaZU3WwBW4ALRxs9orh50C5sXCBYbDp8Bav43/jNQY4hcERnOIM0wOb1BmiSG4wRr67cQfA4RYndbhJe//uVWJRwrBI8SKt4kSnv2gA7P2cMaZvgJpgDbDQdHX3nm1leSqGganG+LUXzV0SdKe0exo2oeB2dSABK/0H0PfYcotqN0ykyx6IBmoPzA+sxTJ6/VDMO5/uZHH9cMMYAcZnD/T7a4bgW47pywUzj70YYFSQxaXnmCoBGipwVK4O/1gM2C4C0TMOY0BfgdERdV5K0dS7xIY+vSxovT8fl5QZjfOb9j0/o10/UadGA4NDISyutSDPya750Itlw1W2hM4lq9NQdrEua2OJTnoaAMKUMauRDECi+L6a7y6wTmjqMEX5nmrSgrqFN3f3rgROWQQ8WApmAJTAn/53/q6647cUjZenVxbIspWkxLgrSbP/lAoI4wUArFRu8eqmLcfJNUqXziq1R0g3YgjVSiXfdV1HC75oKKuSvYGwWfxUAVb3nyA4+a2HB3jyU0Uf5LwjC+S7OJBdhtOpBgnH9SwWio+fVUCrsBTfPXDPJ9MGEvNt8q3C88IvzptLkOMfnhB1+1baOIllcAFQTVULCAVOGYhhjzVncBBnsoKvGFG+JFy38u19y6XPOX19JfEpI5e/bsI2cfufP206cOHVjcu2P72pmJ8XqVV1/cYI9j87kCj0Ixyc9gObb6iQeoz1tCmm/PBXjQmmttoPHqL34MH0e85ujNvfvLCv3DlbDo8HJg2QN1m5k4xJVdy3sbEeqFLJyEM26lHqgOoqy3hJDPvWMWLhzJGLL0Or1HddTv8fk5h8gQdwg5RYgkEsnlQPsNRjXm8tIofNW2NuIyQaSoBvqDBAUhwn9Ga76z2A2SQJxkY9TXiwDFsUg0FywFJ+oH9gC/1+ZS1iD6hEP3JAxJesastabmwJTgIia/FrIJOjbBcrqXWMNztZyMTblLl1URhP3t7+RUuxS2qNzhBff9KAOZMYCyef4fDCpzTYBZEstARzBQLRVrbvMeeuMNTsA40BdwJT5nB4wPc653TnhY+M/p0OuvSQGeRBChCuTYZNPeHVje4O+hqVkaliIh218I6CAaAB5IyTFTVwk3BDALbmNBeKqwGHaBMK6owvwOF3s1k5d1nXXpdWB8A695QBAeePg1D8PIzp29785bT1178sojhw/s27Nr+7ZNG6ZWTYxvK+S7SjszTiYK1CDDA3mu1lpuViIDtJb3IKTG15LxsotXR+HfvBWMtUoYbK9RCeW8MjbgPK40+BaYfAHuwrM275SJXD4ZxpfzSCzkTYwx16Ql7E2agNGNoxABow3x6ksdE/vMHbaWGZfJZ3XHVLxFVqAPctcZs2qezeqYf9k8h04R2UzkXGVgz9haRQ0UZOKKwSjLTU0PDNKOoCIHju3WmbUlQQ6+jYvO3rQ7UT9zF3zkU6WEKaajfxYT0xoMzw/065qm9xIygDQ6N+8ZHxINjNPhxQgW+SdEPkIAjgcwHgA0ozk51aONooV5nZg2HoATYjd9FIzNUBHq25eGD6IHiBAVKL8OvQUofzAQ3OhzyM6lbeRN+AtCSpgBq3svemw69NgCNqXjSDNfvRmLysPrsEr5Uldud6sFRRM1RTwN5qQppnYEWARY8+ELs5cGkiS2X2DMntMhXND9fK0HL/Kp+wVVDarcCOO/852cS+7EzXl6+U4MLjGZdOQFb/mC9+G4O7l8H3BDxudVX+B+L3CX6YmXvoEsqERWjz3vRtTfEJZ81+OPvun1r33g/jtuu+nG66/bu3vX9o3r164ZGOjPWCtnczk+8kkXf0J3Fap6kBsBV/DrQ0m0shDZ8PzIS6FQ3nMsLwQ7nAtz5ylf2IbCV/77D/DaeDGatfYR+N5WyIW8FuAr3iayQolvrPTmDr0HodfFSsPKrc8MpwAW47983wfvPh2TRHdD+aEvKf3Ozpm9t9oidr74Wj2b0W8+mOzYBNmTM3NV89fapzTZDEoOEG+q61LQvP/14f4FN4jlsW5FZOmobmq6Cxkci8ox10rQIDkcAIjV+qVaDVHNgUvuzfXRih5lsk7QyLQbc4L40xKyzh6ZmEx0hAZSj/7VzVe+OTUQSnTcvHdyRxixztIfHI4mgjnzwc854Cmbopn9N5u5YCJ65bb7zt9GSBEhSUUPAz9DqEilnmSi05bSFV7gDw3W1tiBfuiuEuvlcUJfIx/SSiZG+/epXtb/e8MF4OOIqPjAPiRKTpBjfGnpp+g8/rlwSLhR+Op0ZMecRERJRlRcx1df0TVjGH5u8ivs/QIDms4gfYJzHGnhehlAlm9Ck/YLkhRYLrdfyPJ7BUnwl4e/0MUrLpkeeunWwKX2tK5RvL1o4euvO35s/+K2LZvWT0+O1LtzkVBG5YUAvxLu7x5Znm7JZVtrB9q0LxJuVL2dSizLDU5qVc85r4jUG5yxD6J81S+UewvW/XWaxCPz3qpit8Xv0fcVw9VxMa8Y9WTJEEny9wNdw+n+rQ6A6Fh3frBnQ1iCMN8pQSKP3B57J+2QmEiCYYanq4FGFfgCJEzm7h2JsFvsZpC6EXHfFjU+GnM0FO5YVVjFZHxKUrrz0YSi9JVmVrsTa9y/HhA1Z/dQfqiv0LsQDmVjKgkMj3WzoIaMDrWOkDgxiUU9l++BYxzjgYbmNcOOJiBeTjVH3paRSDI4MNt9TaY4mMtzHEZgF7/AZfwx4VoUmjYhJyEyEHmgdssrdWqALjIw8dO8yIz4OtfjoDMNqMYxb3c1oBzZL3jFUw5KOmpjW+klL7aWL7YuvbjXu5gSetOL3OHyF0+XX+o6GZrK6uHl67E3Rehec3L/4taFDet6iuFqJtxVyBl8sVCQVwJadjTV2t7qpRoeF+A45frreYGbco7ptozNW8TgJRdTCFhC2yhbC2E4SfVLwP4kN5wo3akm8qIOgTrfF1DClqJhsnnWDATJwmbFVJSnLKqIWmWyf0Zj5YgZCgYtJRzUtcImXUvVVOpUih2dwX5N6pQdBamSE3aicfR/KKKKKfP9UITamG+i66GUMA1vlkUJgoMmrbFyAWjU3ZWKBCuvmw6a0WBvWFbjV4RJZwwwr/JgZdhWBiLsnuSabmISOySgpX/Hw0qJbBY6BXvagORvPVjT1akkktze1mCz3fkuPstEGc3xKX9PYt1dlbKoZGVOo89/8mzzG29E+A3NL997/pNYkogZkcUEHsAWgOJGfKuOnS58MDQcjZRDB3GXbkoAh/Tk8WvAQjG+RYmR+4VR4d0+RYiLfGl6a88K0JU9Ai8UCcC0t7R2c6eBd1DhKhEB1CBKjl+mWeElbvSS9+CGxFd+jAqjpXxnat2wJIWX46cXGju7JzHYDeeAICTaBipvSq5TNHEuC/yywSNrF7Hl7Jr65KGdV9y0rRN4L/ofakRHjMg4E/l488d/1TW7LrH+2PZDN2/vdJq/aXa2z2aDn0Cz5F5E5FS+lBbxm4hEqbhKlCJyYy5GiJLqvnB4UlSCbGQRsOA/voWHBePyOg2+lE7F/7cqhef/T3zL0m/+f67T//uL/091KjSWnsBfwweFkiA9nXLQUC8aQ+Ey/Im4fO6JV0J4oTPOY+QYAupV4Tv2JZazkIsORzNxw8Q6VvTrbozXFaWjvnMXJirq6B/ZmHt6qvHWz3YXIbEhFP7SU38rQvRA29ECX3CPscgwfvwx7MeZ7qVf4++jPxF2QT9KAu+H/9ILC3MIrHhA6WX/PrvkGDmFpBY0AtxOYU41C9VcayER/9beR8FXi9W7GnX8tBO36Pp1SsSRVBEl1jjUTSqB/UMFSyFyp7Fw+Bm5M25Ho1PrFU0xUqRr0hBDQSoi2TlQ6bIUasR0NI1ySif6E9PUDXGg182O2jkXa5DrW7nBjBXW9PJ4enjyRmzbmuUW+y072rmfQtwURRGaDCeDwXigbziBSx+jhj92XegVfomHBFdwpk1+4CYwrqsLGQx2FPRYRsBfa8pLxN7IVdptijfEbUbohxDOquBAnWpzkkEEoOgppoo5W7o4ft8Cct2TA7k2qkFwUL8EUq/UlxdVZS+JWxZq8MV55faCF8mt/86R6xSiq4gSRDIilT5GMWg1ItlqK4AZhoHTvcGtrqHS0zckJfG3jGEEfSrgQvwyJdMSDTskK3RFGKtXKFJMFnE0k5HuLLoRE/G3CWUgw76ln+A/xB+EZE16ul8DGXaVW9vaW0vIES/w8opuDnKX3AqWyeXQIprtBa5TKAeCyfLpBH8GoeHzSH86F7n/ZTGQ6AE4OnQQk1wyDIajMay7ch5rIzMGkaRE8vpVod5SaOpUKiFJVFs9ouG8DHyTaTLB4WTAYPjgIRByscPJXLdvcMue16xJUJGQD8gayY3wlJvmD944FUjknXSpb61GiL66v5R2ctHo5E0H83xVFBrJEc2c286XECcX7to/P7DPw4ol9G9gSwGQg4S4j/KuOywDtDjj5LwpUfTnpiTrRvMKw0Dn/p0ahvS/8AdM8/wxw5ZtlGGaoXC7XPrJ0k/xk/g/hTLcq4P7Oxsg3I1RhlOoQZRrzVdzVORGl8aeVNPIqfgFWgVJhAQGZtBXsUKVv/6mo+lRjhVAZWTtW1+Dr7pE12jBgekQhkyCiO7QzF/8heiXaY1oRenqY5JiWCJ/FQo1dMc4v2QoYmhgutW/b6H34d8IDehfnI812Fq62MaUrBSKuJ7eWi/m4bOEudYgKk5rTfOILlsiC0t/q0xFopBhim4cW0HLlgyE+wb/iY/BGZz5y+OH7Q6d4n8xAxEJ41C103UxZunimcevmc+kM+Uo6RlsjWJ4Gj0hqTlrwvfv+tK38D3Qzxr0M7vcTz756HfXXwTZWqLmQ3drvXWhdkHG9Ukm6aoICer3vqflHTEgJlSGMGK2w6wAkH0ZRIO/+RVHNSKA3L9iEVWC7ExJK+FUkNnIoBFx4+FrNq8eGw9qVNmU/I9fQbJmROpxp9Ns4fuP8Qz+jLAO+jnSw/vpQq86cFgKu+EKf2+EX5ttrT1ibYRqtMS+7FC9iNcH+JsBKuH/rT9OkKSg9NYdPZuvDYqie+5AqGPbBpsyw51aG0r1l7qmr0tRWnpTfrLcYeUj0mqTGc/qKCta77ccR2aQVKrEiN23LwWgcOI1Bi0oBrNYl0R1pbj9kWi1Ev3YxiBfxYmMlIYkQ/flPi1Moz9CzwiDMJ4uzMczibxCsw+Hlj+t7HodvtD/luR5GvkVpjhmRNLESA904vCWqMSYFN1yGBPWExE10pGEkNG70zR3onebEpY0RZkYBiVgUQn4v4YnFEWTEKbG8UE5Kg96/RqDfr271S97pd221tq3rbUFRdm8v3Xa36bCT/wl6oCuwJMta2evyCj043J9TMQc9BGI6vBsJawMHjcoRpfpY7qaVWzerxFhgnwY+jUB/aoq0C/BZRnmL5poTZPxYruUG0QtCfF0qv0yCTCPqh9+XP56K/Jhs3m4rqcsBLzSGBxs/sAIl6kSjVlhMbtaliv1sBWLKrQSMt7xB+QEAcPWBvq/+HkIteb2QH8IEV1h69fb8d0OxI1kQe7vE3UxM9afpqqzKwppEHkHErXAmnXY87FW32eg7w3Zi6GNyhRa0aEGN9uqN0+8LGkLw8C4UcPYVg4UcLKuf/Ob9WqrW+sfXm+Gy0SJJoxIrrPTNHsiuYiRiIKQXJ2IzT9fMdAvflH/tazjhS3E7x22YzsdlaZ7i6mQZErJSL4vCfzL2h4xJXHFSLHs62AHeQq928Ncz2bBCDxOxc2Vf/Y+ZTrTiI9K6vF3U3hLXH0D7kX5kat6whE70cvOKPOJgWCioKA86qX8pUC0+a3m3yqFRHAgMa+cYb0JOxLu+fXEtQjnakMyG9/GcrVeBZoGoK3SW8uxbeNMHqrlMLrWs90G9O/Jlf3rBp6Z9akeL+blvE+ZTl6HAfH3+FG1AkGh4tvuOAqTJ6/pilzcwebfNr/ldxB8MX9xByNdv546+TI6eLIlP8qgf0UeEy6RX2ZZfqFlqWWeLzX8XLtX7X6cH3ghSRUvJ6Mt0IfUyj6skFFmWUa1ZclkliVDU23JnB+4tBP4uReSRvF5csDCyNJ3yOfxFPShIcjPlHsTFr5YFu26meu9E8yRsgXngiy6q633fIS8YtmyaNB3Et3HDuxZsyG3ucLirNnTkgturlo3PcIo6j68NxRallLu9bW5bYtzW3WGmksmAHRLSt+anRqbyk4OhzsSvK856OuT0NdeYRz6WunLIuhrsOqhc/KCdAB7vO3ULUE6HCUdiOYNvgrWm4KpebCUe9fOrRp01ReXszA4uOD4QoX+ApmoTG/fkHnP9Fip3LfYjazAlIze/MdrF/q35PzulRc7OhbL/gig27awhIyu2WenZ0bHNHX4RO+Igfz4MirsECug50XQ82Db1tqOWvd2o3lUnVMij6hHfDcY5K9jA6H76M6/eyQU8InL3Nvy4K8q5O052I6eKA7QxAi7s1CgskqG6rFoY7RIZQVvno/G6kNElWmhcCcbSdCBvmNX9XiN166jYjbX3bWZqgp9M34LUVS6uas7lxXpurW8aSQi9v168mp1zaRcLPC36gzXY/HGWA8iBG3eHI/Vh/kStEJRnlyjXj86fh1viHEu1929QEQJPfookkSy0N2dy2HM2yD9sC+XdhzhcgFmDxy0+jvi8EsEHPTTE78DQL9oJEL2clh5ucD9wiHKk4WAPomfE/aALNZ5HOSCD0bGhzhndmxvb2KsheA5L8rXZw4VwGiTefUhbyIPoQu/Vny45LN/YB+B9AFLUQmf14oxZ0BMjgU6KR4eOwFGPdLD69bwt/nT5v8iuk7gC9X7KnlkrBuyQsTDeAF9Avqchz67Xp7PzdVjTD505VpdduwpxDXie2gF9edPUrFU6rDFASdW1M57fYDbR297SM0n7Qh+7uQUIeFqLm+gfKVP57tZvS7YKER5p5DWM5Ljy1C8fcsfRV8RZqEP5nIeE24RZG8NfIuFctfxMuTJldRumcb5q+vTqFav8SaoGQ5W0vNzlXjPkGQajN19rD553aHxORlhYidzRp8EeZim7R+EIMPExl6HL7jV1lQClGi5D6AvY8mplnpHHlnrMNOk6Ts+lw9PFm9fLyJkJhw5RMVoDDNa2mpj5WBeEnEiCjfo6LUZjQU6Tj7I/WMAxvZt9JfCehhbcsXYvFJUyC37mLEyOfXSrfZuaBjMhTcx8VbLZBHdp6ZGwmtWD2yNmGHJLK/R+GtcnNJcjEEnlMH9YUwlZAymul1s/cENsc5j7x2GDMuUWCXb2Iu+DIbfldg5GN8YVPRSkmIxmsCiFJjtVTAxtpY0HIuKNGlB+nrt4y69+sjRgyBAxqxrj69rbG/5/tKH8HP4QWErj30eh6wuT8ZE/Hc8LW84XN5Tyj3/wuHWHI2/cDPnMu8Sjoo4Dyh7Y4fWaarDBQ2X+guGMlK5AltbigMbtpWHFiYOI+2K9ZAbEBysZae377jnjifs/DUJRsSExgiQ5DAJVqmJ00WKabCgGYNhmYaHT5wNm7fsyEe7rNjYVeeSbO+ruhgWTVGkWrq07apbdy1+4I7+8um6hRVlYDDO98wipu3qp2h5zN+AMW+DMc94fL7hpcFcW27OxzcOWJ7v5GvthYbtUV6oPLS223rls9ZeuYa3V/2PeyWpNKCanVpHynT1tE7CkH4QpiVEoPnX5O23nmLxO55QzM1lFxOLGWsOG5QGP35XR+T028F9rC2VEcXoxWcMUSoGYOxF5Nq9DYiSfCzxwQFFwVb9dH/l5j/U0Qfu6OoaO5bQKN+uiFnnPZvDG8K3vJMG3nkLG2O37BgOUznKx/3JpUn0e/ijQhjGHfTG7VQ8F/VKLd5OBM84P+my0lwojHBmrE/BYlzEAFof0efyuhSJqOEepXlf816q6xTu2bM0KfywdU/Jl2VlGSB9o1nFo+qfM9e7k9I3lsEonR/Hf6w355vz/DbobnSX0hNWIxE5VrhsP/mS0JhvlOUk8pHNsT910Q074Ql/rGu0eW/z3uW7jeuQUX3ksv307+mjt/9atDRq3fOi8Xv3nGvOrxg/ugvdDTwIcJc8hR8TkpAhys80MjEMPAit4I6dnkm0OLXHiAB+IZy0cgLfhXo82sBZ3AWe3byjeYcHtOfQuTYt+s3HBxYCcDpWUtFZdA6bKoVmtys9SRMYHfplm2V6IN5mRs23JhbLOFcd0BC1dAmrA6MZdM2Kvnf4fU97fV8R63jvWp1rcUxvYNVW0O/0HcAfGmfCFygn9I0rFfp2Z4ttEoePS5Ih5CrN25u3Y83EMLKzaikGIyuiX7b5p2chLc7Z/NfVV2IzSBu9KhYNiyJtoJrDV/v19Q9B39dDrJaeLme8eNcWJH/nc3iFdMWMB9M5ztH89ceDfAV5o+JVU8l7uBChR8pQByYEqx1DCnoAPUBVE47e0ZmSomggONurqft7sFLcpWq9s8EBHJFSnegZVVMZVodnqCIiMTwzzF8CbDDUOaxWSXlnXJJGrqTBfVVJiu8sk6o63Olhz46lKfxzsENeA4u2+IXHq7zS7wpXBDqZLRCHu5DHptqHHN+pajuuncC0b2vSTG7tF0GAYmq8pMoKAe6uVidDosTEyaqqqkSR1Z7xTopwoXBSFDf12nbvJvVEkZOVovKbX+om15gyHFe5BOLDym/+t6kDUSqk7Mglso7xPD1YbWS8BSIVXhDjneHm6xXEvP0yme4VltFYYS8Ni6grJHqgeIlEuc1bKuXyB3V4vQF1cO1QFb1LVy4IduzYxYJFzPBVEQZNKNRThS/rSU/WVeh7plW3CUccH6Q9kuHAkbp/xAcW3mnvRZgXMOFHmiprIFKRr9kFkSKma4paGk+J6NoJsf+CBmjneI+KP2Ag4zf/AfL0DArkyX2YH/ulUkxycz+hrtRBqqB47/BoLP07yBkLIaEP/DEVsb2c6vnuWGvUGQg35EHgCpypVT9HIhEtBOB0N7rbc8D55px+8CBBz6Bn9IM5fjZcVDg6Uh39H5BvZqSF7i6r/hR+VI6pGHU1+EFekbvQp6gwCH3qiWu8Twi83Yt7aRS6COBQ7XmYwc0E/yISIUgh3Qs6oOich2r3oLuVnpB2fi307SNeXzlmF8MaNHXW9mIBazgkbu4DROdgpvSNZJrvaMePRhfC6tACfyWG18e/Ix/GYWGTsBf6uHt+WII+dnt1MF6J47WhSHsvSjst8fRf8WbjIPdrF514VReHMt4O5GzIf89MmG878d+RCml/g3zIaL4tnTBVZiTTX9P7O1WmEmSwI5+NSUgNf+4KZrhIjVf0t781k5IlWTIykiEjapqveQh1dj7xhNH8r+9/b3Bz2rT6esAm0m+VjIWpuKFuXG9WJoKiRLD27ASTZMYmnjUgngeHJ008v0lmGpPm7YyDdFkC7Jybw8YfYXvAllkkpczx9f2Zpe+Sz4Mc9gvXCq8U1I+94oaTBxdLBPTFKg3PFSHe+SvF2hsLeYzmNBzXYJC+uGqev3pbC8M8hvtkp73Il0dM/134PD8shxm/ri0dkGMm771530sa6w28r//Qfq3UiUWcImb2/rkAEdX5+7ImScGhDgeF7LvvD7umxgxesX223dTI3TcXJEyZuy9neE07S9q995epqNvHX/9wOFxTIE/uCd96axQ9OhMM/0yhrg3He7KYvpkY1VlNpBLt2PjKlGiINPXKjXGRAS9sJHA4LOOFqQ5DRG7RWaXb0JSKjPCmIF8MTVMYkglttmoQ9Dil+hewE8xBShDIBfB8r+N02BPD/MtKu9ssHAC727GlwsDuAoCN7ff1ula7glYpt3NnP3NeWVpqleRBB3zCp1LmOQ9ugFzFQsazQI+CFvIjOjqZzkqiJNrJ9Fe1oZQawMimRz8b1MHwPnOMAl4E1Ghda349m1A9yxNN1vyNYTz4kBhnjoI++AR+zGj+KpP+o/cZ+YGkYQ+gXaa+sCCBmNDm9WZ9NCgqxrMT3r9FMPGshhUx2L/aXNigesZnZR1kmAYWZ62eIAJePbeAlWTUUljUi2vzS48AVhzzatFhza+hZVrrCzkSgGn4blf20iTCwNMi3E2fx4QyYfIUMs9/EyERRwJuNkv3fF4TpS/sptmsG4ggwje79JvIPv9xeXyzgm5EN1INKNrDzYeVLaMy3mDX+Tt9ZJovVrD2/VcyQm/7ew1Xink+TYUgEdBVdcsYw5KhA11eNa+qXpx7hDwG/Z+C/ueifj06w3t9AeMG2mSH99LnoFlvNSapNZZbeYrtBn3hH/LeNL/X/B4xwJ7C8Kc1oBxpDYjklgfU/EnzJ167LtTFR9V8ffP1+q9VlXfPw8AXGZB3no8IsXY9x6/5cl2MXlrzzfJilWeYkIrjXHtOCFCQv0imHRgvV/y94TTZ9aQiSzt347zMX5iEZQOTwYqi9PTva2ztUWQ80Pe8oife9AcQCDdvRl0spGId6KnY2y+KudKWvs05UUTF4nIVlOPYtDBN/9Gba2mALtSPTY7Vy12Y/PZzQZRvNAQD62r9/i3mhnaYaMiyml9Hb2p/eJmzRVvjDH4x7yeMZWdrLEywvLF0OqYq8bHUL+lb9285n7Tz0g5i7WXPMP18RR+/+nInm3jO/FP0SbIg1PmaliD3D74rj5fF/SKHNyfKe+rYXrDwN4iEk35hZxVqF0BeI8/05CdVQtREKIi0k+84qYJpz44EgmZBPuciO5qAkCrh5HxhWr02Eo8GpZlJOZFcu47VpqfqDNVRjfWOqyIKHWbr1qQSbHoGqzgTifr201jah/6NHBBmAJl3g8y3LKxZnVKIx1srvPq1jM48vEccC+dahLrOw2Deb+WFRH8nK+DxKohsiO9r8VZfhIL8o4TdSkM790BA12REmGHZIzW+nfbcA06Qikow3agb2sREhtnKrj2qxD6SBBBeEgz0xoF+JDsshR7bvh1N34LfC6n8/EiCIp2J69dhiZ0/xqg3GxV4GBHD1vBD2Q3dCHi9JCmvyW7sRtRuPodSGGU3JV+HaPNjKENI88e0Pf7z+Ot4TlglbBeuhvEf3Tc3lRKIt/YHVEQqbmsBuOTv2PWL2RwdwNggT0TLrwry2S//XWftul3I2/ZeFnjhPgLkgNSyQvvlP57a8Sdkg0nBnhimIh6iztS6g/q8fqBqDuVM5up9vYRKOKMh5Kw6cFsssWvCGBwEB/q1WwsE1l4d1oglRcAQbzfTybd1Abxh0nxVKdHnDtiB7bdpBM9pNhOd7iiSFLppVzy6b2bWQShY1UppzWV6d5GfqI7AM/dNH5DUMb3Yj4YYNg6vztcqGTuPNhMzGPzX+THK13k3/wTLiQBfC3LbdsvHzquWltCX0Mc9O+/htdRI9sJbtab8Qo9nFwCUrX93RcouV/qWX5D09k7XNgfMpEVXRcRdu0UK/rS4VyQoOF+ErEy3hkYLiZNJYHi3zHcgOehyGOFS0SiypADAjRmLhdhsSulUZTUrpk8YxVJg3dEAr7nsFH6E3o1MwBXpaYnjextP2rjg+7jHj0eX/hA/h5uCIqSBpyRsyatRVIG9eW81EeDKmtd3x7uDP6+EdiSL6VQwlGr+yEQlpCqQ15bgxt/mc0jfxl9xk6liKtmsx9lj7zCs5pfhYc0vmyaq+TLcv/Rj/CH0YcGB/mlejst3j4m0RcO7uwr5/WAlEBFjmJlMguD3z5ihtzPjq98kYJbG154jjM+JCR34OfTXEAtWQ99HhyLI4/YeIA562x9WVCS9eMAncCb93cLtml13uX7R21fgEH4uOryvI66TSDBxxdCWye5wKNxx1drK/pR3rGPfcDS5cbhyfGOyuXbhhB7YNCglN52oFCb1Ibc/m+5Sa9FsfyXdNzRUHqrPLh9xA1gs1zduPs7fCDvXle5bJaNrN22s9+it9XgNUMjbIR+NgVxkblsVz3CQsJx+MCR6Cch6G6soglI6kTWCZl8z0/x3pCLN4AuUIfZNoo1UUyQRbX18U/PLSNEM5nPSn8H9/0LoFHpAXoVch4zbzxDaKY4k+Al7BbTNg3+BT2uCxQKnh4cyPCJJmBlEbH6CInXBQX9jWd8RLZsq0VXp21OveZB3QMXvhEQFnk+bd4vIuOKMCQbg2nTHlRu6Hu5Cqt+Xr0BfCkKXMAR96Sta3O5Ern7UApiuZSReLqN6qQRf/J+lLuWL4fDbddk4/5zFc2kd7fl8WmS6cpaXc3M5XgpF9ysPpSXcfCO6HlE93ClrKAJpugw8+YOHLE3WpNUEiNPeT+6lMiZoRkLWtl3WR/BHSqt9OxXuBzvlfiS2a4LcA/YD0+VLq95tGM1dhsHXLv1siaIi/hcYj/R0qFVLSHsvH4ZBJJHrcRKHz3x5NRt//SS6VQPXwbUR/k8k9AT1hi3pFI+MUVkPTI/gHxiUvevx4WFdRqLW7WjD598NR1ASdQwPQabHnLFqK8f9MZpDTwqyEARZ2hD7cLuvoMAMf6jT4N1pmCaEI9FGLn8QZZLJgLrozW2awW/8JBMZ88YCbAbG0s+5+vK46w2H/+IvMPK04g3GkZg/b9vOD2FQ94N01u+CH5PTomTOzxmyIe1az9cHTfZDDmvGy3MwNOP8j2b3ojtBgh+cWIVMUduwcP7PwOtxfO9s86xhoO0TfQFDYh1DCzxuRZc+jO9H3wGccoQ4xK1wwNYZ50qo6s1EAshi/gOQi2bz/jGIyfFoLlfO3ZetZrJV9Av4GY9l0WPxLBzMNe+rZrPV7G1Z/os/I7L8jKDQAc+Iuo7/jODyM7ovPK39lEjrIeiXrQ/v9R6TaT8m1npaX+s53M/P4q+hU0Ifr/FxP2+0FiVeWHjV2q3lzYx6IObtdvTe9rMxELXt7kFqdIb7jk6XrUCl2CXxVy2JBzY6cmX9+qlueaKQV84WB2vJQFYF25kvqzTXVUlK0cT8NViv1TO01FNSw14ucA4w9Aahl89dSf4aYF748N4/1HqJQms9ZXtGI4Xae8lwfmEflYiqxHs2ZNKdU9O5Qlc23Teqgn9JWF9fLvV0DE915dANN22PMcnR+3umLGtk1AnYkeNTCUJFqSEOTMUCvaOO08bATpDNN4GdSE+PBVfKhoum3JZSa0Hsio1t5RQO+f+SCZdXzpsxbHHkWrW9wO2CAEsTbGoHUAmyek4B4mtsmgslZbigwGUpMYJIyAhAo8ldIUrfKMpMn5HIPLTpzmVThpuXffEW2RSAz+YDnJ4piztFZNnEyYKoGXNMc7iQcIts0sZPiApTtjK6Q/IaWJLb0wPi9+rsWfx19DXAGF5D61S9+BtoxWsPD31S7/c+t7w+L0W8lRxcKA0D32Wa5+/Dr7liTSzRPzGb7UnVS12gFwsZvcOTufXj47O5kXkJayKQmo+Yhqmbf7H5esUsjzuBYtdYhuRsee1Qf3a4nN08khWZt8bxSuCJDwknQQ+ruR6CPgX0/qUqvIIoc9LndYXvu2ktdeTBN8IjSKb92yOT/lIsf+IT+JFPoRu8FtQeI7SataqFXE/3+im3N4Hi8QYVmWzUKqSjMS+SKFrTMKIdYWsi+ehbdbP5bDn/9W/A702lIpNsLZ9fWGCi/pFS//0PGNqb3rA669KxjUU7WtlJMLo7OzTvOsmSGTfRwOAVlL/raHEfIVN96TCS8ehui4jiySrWTXPfFNZtfcMGkb+ZZd0MX9qs6HML2JaYhm8a1XG+Xxen+9OtGqNQBpv9gVAUtoEO15bD3lwJoMMKZ6k0yt7OpNa/w7RsjLksXw/Rku2K9uWIP2+4onXj4EL3uvHV44U1xShkXvwljYdnC6tnxqKF3p6cFYgpkp2G/9dMGGloODNRmoaGNEqswK7h7pnVky5vZ7gxNLtmL47lusLFcCKJ8ut3Rbuysm1LwWhYC3xNC+T5WxRwPNcVKoYSqWwpmx+A1pJtUzfGcbKy9Df4W3gNYMYe4QTg5MG9swNdiKxY9+iNodrai9W2YX9+21+BPYnAttuv2br4RGN58tx/cQd89VOtVhkIpPIJ205GMotXNNi6UlxURH2kP9ETC+W3H21opY0mI7qhaavx1JFZOSd27zg8pvRuah/t1cKdwfzOxnSndxC0ff4GDYLfOjSLVUZ3/gJPUcZGp8XBeL9spusLQUNSG1PiQJdpJVMdyfzY+fWHRCyPTLKBroDGDxVGZQptupJ0sEtx0s37DKaIFDOVMf5vpwLGyoCxPwOGPQP2MZa1ROznmz4rrXhe1BJGC3Fz+VD7H3xs4VtrY0V7r0Uhlx8xn2RbVjW2SE9aqnT0mIGlRiDeSAYJNj5v25/3vidqKf792FFJtZ7UZpOZzf2O+KSJgF+PrNtYZYYuEikw3SEXYzmHiU9b4oVvRALeuJAxZ+JZ5tm5Hyv4OPgcROlljyOTIvyd7i/RYXwnYoRY5+9/sd4hkTBqMObtVx9Z+n3IXY5AvHaFDFijMa32dKUjAQjalC9UqFf8hEL03ynFxMzK3tDl82gm3znTle5sftPEZyyz+dnmZy/qjvL/NPcdgHFVV9rv3tf7mz6a0UiaoplR7xpZXbZl2ZYs27LlgrsxNtjYxgSMMTaOTVnKHyDUUJIAm4Q0QoJjk8aykJCyKWwSUjabEFI2WZKQpSVLip7/c+97bzSyBTFk/4KxNZp5894557bv3Pudc5yPkd1fLfZVZo7A83Xw6kvledb5yImjN0/di/+M18Kc7gdb1RK5qqsSIYuU6CKTO3WuUpHZpUo5uTQIxCKwoVWYVSb8/tZ0KhZPYo5ck752FpFeBuSRrIqXOTIZp+6hMpXYKk9tJXm2otzBN7CVWHQI8THANvDIqdtmlas21U4QT5rIlYmWzSrYiXhVEq5iSvrUXiYNMkGfyrpzpyMEpcyRjXK3Qg1dLmhhoTQ0Xy4tBCNtXUQORThwuRiNipcfgH4OYlgvkd9eAoTesLShYSnpULQzyYnxhEz7NSEO0t/4Y5sTic0J2p+ILPjbjAYeWIZpITZqyqXKA7pCbISCHgwCWwitRe8+FJzdZuiV/qZ0PFg+eM7Q7eMVdUKsXUH267O35rbGAb/eWt7UP3hxZb5TRTVCOPezWUzntCWR87vsOibEJGDN6SByttVlq2IRlQE5AxQj+OnGDI1jorZrQikcrOrIzi7rP/tY4XGSXYpDgMAfF1hr/zL0PtSfscG8V4LAT1KBDzsCHzPQz3mDF1S0EHPgKdifAfCpicevt3+PUf/v30Bulllxajk+iV9m4mDdRlg3aqpTFaa79wRicGI4wjmTHNkCIJmCwC1FLhbKRkjoD5UdPyhpov2Lv1x0HariWL9gP28/B64xdOV6npt6zMTzLHPq84ZhIIu8xC8boiRcd1nH0HWAS/34uusxr6kCqIrxVKcqizFR/Brd9VeInzwtZwQ85VqQszpZEdOLfoDmpNDXkQPGqgsoGzhTxhWKIKFqVIFEEdvP2c8LfpZDVa9P/aeIzpDvJ4Jx/fWwIPL4+uuwH2S8bj9zSpyaOEM0GC8T9s/xCfwS9NCVMF4Gk36Hl8EQT4QI5ZoQuipDNj589MSprehJ0zmaBEM5r2aS5F1k1llI57KrRDwEsJhj7dfsPxy4DSmkTqI49QT8QAebWjDmJS2TGR9X9Ses3pbwxz6i6vZ1jUq5gTlWUtPwCTT8UyOL4AP0Qx4FdIMTDh/tHjksCLyoowAPkMoe5622NqTJQjaDiV/qG2gLszJAmGYlYSCsy2K2mqUAcNkYnql/jJkE/YfAvcEO7mBoqzAu6G+AVSjzdxlgLXFhhkjk5tQTIq9zPFKRcuBW+zXurVsAvyDaL5JEhLz9ok5Sch46OmfhYYETpKn+t2oCsMHiUwL6CPjnK5nzwAbrJ+tVl1/tbMgWgTn5QyBEEKZuGuvmHYQILktZKAn5KXTS4Dpwaimv0kHkAXdvrFgd4vyAJDa36Wp1LgnqW1VlVSKL1UsNwKKXquBHwRuWJomVyVpNc67xZYKnXxPM+N79jnN5BYnrTNwdrMA/CnDljZqaigU1SVVCwbjMsfqNj3HlVpz7zI06y8nxYEhRJS0Yri5eVmY5l32Gi1vl3GPOZVaZ8tfv3v3Ep26DoaBe/oA/ef3FdTnab041Qb/5EjPALASbDQ+lVW+/qQmlnK1u76DLY++R8FZ3WQwF6YE2JQQYSKzAxI7VAjl75YJhfELnpQcexMvGJU7ColwW7i5cSEphC5/73FCfAt3BuKC2aj5J97Z5c3htmK+dyL+X5eybUaE8juxffzzIW+Oj77tT5pAqajWNF+1tawZEyUnCOauOHlKwLrLfxihgJckgamio/2Q9Dub945j7DLerUMDXcEudfuHp2MuMgY4jg1WK64dAx2jzO4xt6AUOrKTA3N0jpZo78V9U736Udmp/ZNNZgzMpIyo7ofPCB/8R3c8TfZblq1FL9zaZkx77LPjQLWER8K68Cy1cRMYKt3nrUHk1uv89Joe+MYkRK0iGoXZltR9rWQydfHwJ6uGxbty7fElZrEnmDGntavbY5hyoLzybcdRsOtq1BC1ZoHHP5xGvmrGK0G6/sFMI0jng2/gkm2RW0LP1cyYXR0DPCPUkpznCxHOgjpTjozrKCyZbMgQaeZpjLOkminBd1M4OUliokOKCFbDWT+iHB/tx9/zLVY7zf/6r0XiLyBl6Xf4whslRHlvW3z84/i6BlwXzBr06Wu6zYJrv60UP6uqPfpSs5ATN6OrqUNGyZmx/ZdfOQ7x19z04kexUSWp3Y9UWVBjaL8AKKW3ezHWD3nIqf+sdldlBGWYJbZ7gV3VJROjdt1i8IuKxRWQxRTcgWOxeP3wnbm8mebWm7bGEclwml80pA3t0Fs9tC86RJ9lij3gWYT3eNT3jnd0Gjm/eYbCE40q6TWdHdocmc/KRo/2Jjec8BEuByKO+1NwRFkxyXUPbJoWXbk4tzSLcf4YF9MMdHZmxhlr00UUom0H4h8lOTRB5sb//lsUNNctgctTvsh78IIZ7Cvbng9F66AO8NN+q9qNbbzpde4W3jh5DVnU4gHqT7OrVaDv20RiZcsBvPwZ8sRjskC43Gfw3sEWqzw1liDhDupiQsNRv9Q633hx2fFhf2aeoAS3WWVXRGc3VRn01XRi8y+W9gr+1rqrVfa/AYvzjN8Yjfx2MSUt3K5gVKmLxJiMq6GNN6aolezUUDzTQ30fbqpgSXSPMAtC1Mqp7ew6z4RP2Lem5QhbfALoYZ6/j1wR9Fkzz1/VnpR7oV3+Kxc/hjzBRej6QiWuYnu2ArBlnfGecRY4Pc2QqJopzVG/OWdFIUoxcFj+nSezUflGRDHw1J2nq1EPvRXOOIXVqnARu30Dqg07th+VawWvfa3/lGFJOiPp/cdAcvAA4VhV+2vOOZiQUyJtCWOD+a/o9kHEFyHgSZIwBBpdO1MR1Z+8O3ErekUVz2yAzQOGIE7fPR8IcxR6perfMe6bQuUKTycZ+CmyO7J/Z/877NRYJx6667N326yweCYns1EtXX404VoV+92P7Z0hUWdwqYfwuS8OXXUEMjQ4exD5dQHsLhda+vax9TUDl2ee6uvaIqh8fPIhESePR72lJMCr7DpB9PvgP/SB7V61zdka7QrWXXIekdMxQPBFOIIMV3VxOETFYzAKWcghM9NTspGSYXNh+YcdVAV5VueDSRUibiAtswC/MWX9+vyjlcu9pD/B7gqqE1Y6Oz15axisV/Qu/uzLp80VPNkIv0xWRFcsO5jqibEDoXt+f1TCS9JYLamvfH1asRZ0dvSwrKkEtfajV0WE71aGW7qu01cXw9HoXCfNhlwIieH/SDqHNnRAB3dB5wK3HQOY/gVLfVuiin5XzW1GstzEggMcjBr+499kwVjje4rBZuX3wIqLLJ2r1o35p/qUvc1E+CnNh2V92dqhYxq2iGh9ovgguFUlJeMQmCvcFeNYKNGwuZCJEoTlHa6YWcYFz5l+iISRxogTIcmfnIlMrGdd5ZjXo1FwTKznTpH9S9HTMTSLRD7My3fV2m+YtTmgnSVNIucmXlszLcYrC5eYteWkyJ2FZ80tN418YSoVzB6rEqXef9bD/ZESx+pp2REWYpMMiRmJ0R1OfqbGhpV0bsqYqWb27o/bk2c4Bni1qmbU05jGhF+dzIc2JDnjpKGlQryvSP61vY3pXuZz9qys2m1hSg44FYqkDScnPCQqx08uj85Xw1AfP2hzoGVVRRSyMdp9vKRHHBrLZsydlhlk+4BgKTS05O3sgwHfNgO+ehHVeOF5F4vCqsVhMK0IOORx+ClGyoxUUbXVBT4jyM+kmnZc4RAg6KLBohUaURse+ImMJC8a2reM7MwldTwysiU3iHeezCFCtvnmDqk6eY7CyIupm/oZ5Jlbkef3HfBiLGslt7rs2Pqp8zb5YJnj16ac4VhZ0Q5ewjr7+LQxg7zOfY3lcsWFB0NDFaMPu7qjFmanhq/ycKoj+y3vU8AwdSexNhqexVH5HEefEh4SFOhTcYsIT1wSBglg8rcp2OG7QQDGnRXFTOYyuyXzU0WjrNnP1fqJn+7mVy3FjV6Q7iqgB7iOlqW73sawgE87vR+fpPMfLY/L9CU4nKV95Y+OaNpRZiJaDYiL6yuMSoFlywAm6s+v21u9rAs9NFFDbEK93X+mTBFmy7hqJymqUnX+jT5E1jo2NbKzwkzkMsNsJwG4rmW3Qx89dNRZzsSwpVOQmy3NGOnVHiBloES9qBUJOAvnaWitQK7xBSiOlc4J4JpjLIi9DjFMRrrBDu0Br0vTRbaBkqKN/rCK9cF0qxQEKk0whUejUOXFw6PxoR0yRq/IdZQ+p+kfWTQoV1TNg3WoN3TmyMrNwB9zEXDVobruCNxMXl/PlF42G0pnA8p7+oAxQYHwZQXUokPUNkwMUnsN/6j7WT4IDSQXd+etnojsDP8PLge0LfPN9g5sjwisuvj1O8e0WsNGa5Y2Gu+/sOLztHqh1otEcgg2Js0m6Jiqxg+PdN3kHTzTvCQY/h84CdH/ASxY+od/3ATWT1/lskiD+eap/SZWul+0bqe3LV8fRTWChbz/jGmKXrh+ujm/aDCo8s3Vrp/6xh0QOvciFJY5FmzbGzS23hFnWh88TLMzroozXriCYX7i/TG89J3dhfv42v7qx3wRowE/bwZKsjf0YPH/Beul3gEhIGVx+kveLLP/883jfaiud8i121vKVp0wYM1cwNfT8aUFbgKyDGTJGsiX5FlsJQ7Bk6LgFinoQ2RKk4cwey4Ruk9BDO+IQdjobI+Dk3ndlf3zRvjLDKP+HSdS+Inu/rt/zoLr4Enin7JLF6oP3TP0TeN1ZOepjfYIIa7fql9IHD6i6/Yv8XFnU1UR6716RW2rorBTYNh/W4vz4TpXwlEWdVVYPZVuackOrFfbfBCstRUzWMCWBRbIlVmLoKpl+mE7ilWAFx9c18XHQOUv9+f5GC3t9Ilyki9DDCHdCLOY5gbd80zTsYImughsPAMpC4x/pT4zsK4PJ4brV6gfuczS9FH4vu5RoqusokY/CLC7p9f5L9oGK/52vJxs/Rr3/0GFwhndwFiv7t83PX5gDHVkQnWiYa2qmGupTacFqjIdh1WgJEuWaWmCGbAsS5Uhcyg8A18QZC+ZAzY0BcthXzi5jjl3BaXi+aU49i+vIViIvI6xqHGFfafAPVlGA5kuB+/yLex+J3IeeK0egbehOOtxu0MC7RUkSp24zLDwx9XH055jIKlPfVwhjkUevOfvNc059An8bL2DKmUbwNpaT/ebxRX3N1QkLcSWBvCXk1GKwY6AY9+mRqwLTZUgNWsTVvTbSnk055Ro6UayhkJe2j68KcZxvwdiucKYhs/E6H/ml8LnLPz5klS/ffpD8WNJYEQsYNT0yxnJvnZAV6nrhpfFc90R3b66uC3f4kDl39NLwwvC5i5YGODly62b6unvq8x+/fPtEKDLk/kAPGHCHWi2mwR0QgpvBywWb6rp68nVdvWRPuNQG1zLKY7v6iPrsW1afbafJTB2+eys98iUDbjoPvjP+HBKmc68mSiin7Nl+TBOweUEBAw7p/OztNR40BGE/y3IsDiOJ1QIIsQLC5Ykelhf1kILrmkLhdHoAK0FDZtne8nJyLQqUuxfC6JXMgFy8TH4LJr7SCrKrstlsdQAs7FOVyrnhcChUh9iwoSs4HFYUy1eJFd0MYlQXCpErVctyrlvB4oBlyMWrZOb0NiH86TnNb7NNOotkccfzOXuDNrF3HUjzgsCnD9wJY/LsrVHAiBP8AikFZWgMT7l/38GfYnTGx4SYMibBmINaPAbjxW8aAsMTol7O59QH85HEtb4k/eP9HNE44q8fUVis2k+G7N/jUfu/8s4PTkOL0WKZg3G+m/AGdqNy+5fkr/15lLB/Qf463OAZMiiPOY9mT380gsehMx6JMlMn8OjUiVkf5jyIKdFTg2dEmBRTR/SsyZZFwyFTP1NPGCTJiL+dyfkKvE80WPDRIiIld0aSBVeAw2QGs5+6Z+/Ui/x/2n/lWbzwqmBdZRm40lf79oS1q6+5BilXe3LB9HaBwqL9D1zM289ipPFT/86yuPq6UF1VTJTw9fl3hNUb/wGh0+zhcM5mtUc12CLjscHONAoadPhgpxkmj7dMvf8PJZwwBtfhk2ATl7NbEMRUzkdcUzcShoSewcy9iR4HaaqIHjeQZc9HX7CQYc8zyWHSnfDyB+Tze8gFLjfF4ZTK0KekE5ZG+UXT9w4UXzlrS/HuTxUfs9M07TuLt58633tlfxWWGq/fsEP0GQEmDXaKhclz2Nmf84ZPPHnGC7QDHn33LI8+Qwh86munTuFa/BjTxvQRLnBHlexxINuItzydlLLV9fWTghhyklRTYmkxpWV7Ha1i3VnoMjTjthv+F6cpIp849/CBzWke84L9q/WLKGDNKkFBEFhZ97XW39HRhfmOKEm6Z3/lQfAjBUkQEwdu5FkAMLLIbZ88qqv52nolLMHiLPOh7vaP4aHePsofYouy9zBzmcVgv4XDA315h0/TGgm1FY+vRAr9vSMsVKRYzaYHmyZfFEmoWKjQSXT59dYtoICkcuFG/8SyCVX/Unhd5CFA9va722NnqPTdsi/11xVuQIquqkSvH+zbh1RJ4FFZe3gTNgRRL9sRw4Zi9SbO0O21+H1tffcglFBNmteP6Hc36DeXcOY9PmkoQvLOO6EhTtFKejqBPQWThGGaynW0k+1pEovY4aUdJZvaXYah4diOMhLvyOE7nuDIWSXOT1TdcccdoNEnVJUgrnTtGMGMBcCecmVQz4Ii2qmpsq1laLth3Pu+mz5rGjzKLqu4iR69qbL9Q10/ciSVXwSAfl60CyC6WhHUM17/IjosZsahfy0ZbfE4tiV6tE2fvXktRRsK5KdnwsnQGytEyjeWKrV7+x7JkkQdlxXCO7ZuVfXfhZbDwni+rtvvmU011Dg3OUO9H2y5ULIMieVQrBNaDDBmYFkg6CdY+0ezaonSQ5Xe3qCDP8msJ50I+A3KzRbcrXOPLR7BVoqjBQAwjFh3N1zncT30eV3MY1s9dOgvOGYgsr+t6DyLABabU6fQj19EPT2XoZnPMmEVl06EgxzZs49kyQxBjnRDdCcbERCUstpIbprseaooqxxulw1nexrpHTdUVGCM/3Lo0EU14D9WW/YfeUFXyNYzurtsyDDtDLqsp6fTOdvfD887RHXLwFirjBP9WCcG7g30491TfUF8M02nvu+c5yNj5A11/qM3tTGlshDdsyBLMkH0J/Pmm+mPitK8qSXszZ44XbPYxDRcm0z9qkQkul6s5yrRe5gqphXaI5+kbY9oXl96YOQksKE5MYoxjR2dXsou13smO+//Ia/oDhmFxZIxVC+G+lYqGNnH7UdpEOM4WoLe0zxUn/aHantUoaNGQPG2xVhb0VcWqeuW0MIOBWEnrBFtmtdGriHXNvbLiObpOlWPXkOP0DgJk+yD8QabJskQ0jmnclwFphsgqJ/jFF0uV9HYaEWcf+KfFFmtGBs7KYkqV0HiJQDoS1gQfGpcQ+5aWYe/Adirmpw5VIWm95P9kWnisZvDh5QtIAkVSSLWLhXm1Xv69o8FkUgG76WcqHGACtlL9qBXTbvOstD38GclVbT/+Z1/uL8WiYog/ucrskXCJF769dSeqCSH5eJ6TWSQoUdIJ6pIpKrr/0UoqYg+mZ0OAiREn2IsFjgJpBPa9RZ6jYU1uO1BIhF0RI5lfwaLF8dDB7j0Evw5VaStPrXNr16AVlCJVE5Q0PcFBbMi/sNrXjwK8xzzOGOAnUUnHiXX4cbGkwB4gnVYkbuRYJ1hTlu2jBOxJL6fl5EXa/Ys/lecZILMImYj9O9Vo60RrYjPvTgz77BBpACqsqQemDNpOhlUaVzqdIwBtTpg+sBsd0J7JCliKOU8Fw6nMqFg0PiKIfDJ0V27L4AZtXx4MzJhoX5583C5LkoX7N41mgTnJzG8yX4Z3Hpz03Dix8XvR5LpcDBo4UoscnHVryZi4XA4WRUw+wSjanTXrl26yFcObyH5d7cOV8Jt4K3RKvrmVpiftwxX2vdikY8rfrUCvhqBr1q0nW9lJHwJ+h1TARhYOpGqDHo8lmkLmJ4P6GqeI6dIt8K9q0d27d6hiPrOXbt26qJ8vqtB/uE5l6Cf6qmF9G0J/t0Fq8OunTtBoK6Huy857bkZ0r8qjWIfdx9Mg0ambU3oELAQmyg8/WQST1R8Ktx/F/pcvmXlavRD0X243ek+VpRBiF32YbQu37R6lZOb5TeAqU/SXGS6G/sFnRcxkSDlH+ayTAkxpbPD4WO0Zwu6pSLUjTow0i0e2T/Bwu23swK0J8J3vec9d2FE9++R/XH7uIBYJKs8RnNY/v77SWAuye/04Ac+8KCI2BIZakj8GenXYfdZiCkSPpzUVsFpsgzZag6ttOBxqAPkUOXpJ4OxBfb225VbkmPVYfowASa4lUid8WAQScD33y/fl5nIIZf7mMHfQf8KPhA5P2xrjNL8GcGZlP9i8IXj0rYVQyCg2yOXbJbM4u+Y4NSomlk7JyQ1zx9L1NSFpZ4lpopxNXmracHiyjx9a2qHhS+3zKmrDRRPVkZiQV8eK+1zwOvWoQdXNOXzWO4gv2pb7B+a0MCaJNI9qd/iD+C5NGYlWYzZo1vqlah1OnzFIx55acwcVVZoMtI+M0Tog8go3BqBaUDWyi8b7OPoORFrrupeXY4bJQ2Xv8hW6jqWW7/ZLLFYk/ys7+jRF6pZReEC7dWv7h7RWTdPzm+oPC0gj78kDpMSP3qRs50J46eU8eScBKTdMs/ngwSru1eZLMY8FljwWLi+gQPlRNJI5NaCgVhWREOf0cJECH1k9ytt9SJJu4axylb/5sgxH+sHeVmp+ZutMtb1SvbFcuztx/4Q1nWyK7EM2rW3JUdyjpBkut2os9vZhPXOGovbsJTv7uzO0q0K3n3l6FTcuPWiFuGNlQ+8AwUqc63Re039/R/2IXH5HkAKylghmQhmbni/bt79XvG8uwM83mrao4F8x5zyCvH+95vm/Q+IXRaqqRIfuN/882Xv00h2HJmEzKHg7mVSPCYNbCk3AejTsEGkvHNDZDkBpAuaFlWHWARjTMZGD+erbpHoNgzFcD/EJ0DfBqpvX4dZ3IuduRXrcOs6izUBnYwJBNtQtns3aitQoq8wvXHrwQn4fYWnEB+4Z5t0392u1lVVhVEFY2W0kC6neuu3Z0Yj0YZ0dyEXWGybBtUX11J9sURUOrIhuiCy4ZgEmtMRiiSjfGu/5Q9Y/a7qSL4FPollFzUt0AWyo2r0SDrR2I2j/A0+F6+C+WOEnEvWRsi5ZJhA+w6HduRGm3rh7e24gx6wpZziWPTK4kVwCfmd5hUyUAKtiYmIQ3Jl9vKFE1cn4xxtHqxUVu7sPjKSEtBt8DmvDtY1zxewSF5HL4zyKGQ8U9lyrYFRLlPb2ttWUyN882umPoyCw03JVG5xdSP/9a8axsM3NOrpxjl56eGHDeNjN9arDQ1q/Y0fK9UpzwzTc2fd4c6AcxaiwRnTwShOOHCoEnmhKn2oM1US4O9+HqQ5q/pRH8JLwZZEperDC8avTcVI11LgLWz8wyRVSbwHLCwOrx8WsRNL7OiEV5lFpepa+lqzjeI3vqbrz3xLmbfE0cg0H35YqumaUyM+8rBulihE8hEQfZ5n+mB+8DnzQ66DpvJxDkJcKWEcdaNwm1dIzW0KEmxHI53TNCNLSBgDobBWt2APqTnJgpCahBHiOB737UzEVJ42hHHRYhVeqO31q0MYyWHzsc8ohTTAWbRlq24+iRBfl4zngl941DA+dXOz0dDP237DQL9nfRULlMce010O3w9gLCWYKFNL1ucy32z83iK9t7oku7wzU6wS8DxCTePtP1LersZ6vF30dEVDLKwGk5Fw2ApjxAvIP83K5QxCygUnbxFuSEZqZD4SyKRDpohnyEQ4+rmEWsQM06Tbac5toL2zJNidijYBIuAhvsil5ZBGubR/4LkVqYgkR/RyE7BWZVhtxrJgTHNlXfEOiZz9eqxOxqKaUMPV/ggfIfiy69Tj3BTuovybZYAvF3TVJSziy3HOfF/vbPkyA9DCVBZAGW/vI3xEk3hZtn9r25hlWZwhNYwNgZ06hWH6GH67H+YtlePvuokj2qI66FG8AUjC/rX9H0h4Wx95uNuxSzkg+Alil+7aKov4lRHaTqiRc8h9HlVMA1cJgF7Jr85aiiiHinKrIt6HjJMoxvloVNIEhEP7vr5rohwJhsShGKpkeZ4Db/Q3HKr0wXIvorShaYb9o1OMJNLL77Z/t50VUKci8wpCURTDHMdOfVnyg7sX+LD9wkoszFMtAaF474VddRYSJIO/427E+3l8z214u49FN9wjSmFJfN81gMLIdRO3dhAoqPG33cnxGi/YzwZlgH9l59xWj3k39sC+Ej/I7qeeNjkraK/NVJo0ftjhlDVS4nSmCGEIgysS5osASySkm7BDISQcs1yRYvagKslT38c8C1hGwzJoIWkytmXUf3eM06ceNXETwK1nDAQeFodzvCKyU9/BASyjP6Xs17+FZPS4pH0PcxYppP5VAevgHOInr+hWsPAtgjIBf500OBZ9hxVUhWe/5zf4p/TzliF+hl5R8CP6Qa+WdFWcxlQEnDZ0hCT8h7DLjxOLOvGuqpRCF5qm1tWDLbZLKjjqrzgSamDNWk4U8dT34546eI6kEzWvQsw+XsZ+DpQSoT11FIK58SOaBGj3CSKnoEgaepYlVMDvPeIq9IAmESXbttZh3vCD8RRVQDt2sg4uXgH/nMTPgd9I9nJrwpbs4okSypNzVFN9GjWtEs3KYFvhkrMkLSAl2399a4RjcffpvDQk6T72DPoa+oKsOuQsNjjQMb5B5S85g5ymnkZfK9XBT3VoCGmoyNGPOKFyDiIVz56u9sWAn1U7dv6lTK8YWPDsyvxFZ81Tw18LxRd17oRlK6ClD/VvOhuGmsu7INyUDZSbsmXjQsWJTW5rLXJRSJ2oVrdZisWjgpEzuEW0vOMsvBSXheEczFe3DiAxGJ7QEzddXblsBVmTxoLpAMKNysaAwzuqfU9MlLRsyzWWRzsyzo2MyzhU75uYwU0hlIyJiXynuXFOAjXDnJsKoOWGHhO//GWO8JZPNE02R4TOHQ4baV+3alkC1qILjxE+khDYMUevat6bf3ImN8WSrK8+QcprI1K+T6ZDkHCWXP71OYA1JpqRy0UHF+T0lhxA02yksJskseBGFoB3GSa1i8mWccp0AqjPMNcK7fCyQH0I67W1Dj1JEzH2HZs7XqYaz3dYMHXIrLHxnLpWceUKGcw3GagN+YNLFxKS09bt/vVLv/ttTZu2kXYFb36pYWcrz0mB7iv9oqBy/quG05bI4aY7aspF3QiObKwwJPab3wALGE83b29DWNYN3cA/fwycM0Uq4e24+4f23fgZ/COYjzZDn1laH5jGL6EzA5TYlJubJVKBS2P76e656+t62VqcwPJgMW9juxcxLgqrRDzAkx1Z+1X7jwduBdDDO6BH4wDyrx+au5h4bohv7eRYTjKS7WEhOFRor6mWWA18zY6KnN83uDjclQ1D5+oq1Ov5mvw8kgMePUVCl0SJdVESK9HYJWVqY6XgX7ZtSBBYzG/aipEq4aEtWd1qr8kPpqoE/8qWlMQP+fDWBSnd2H4+TsnRhpoIDXqctlEZ5TMta3jzGKb2/yEjrRE5AsLgPwLCNFhRNKQeuM1+FfPq32cl/F0S3sRaLEA2QxA5/kow1pU8Z/11+O2bqcROOWYv2GljT7nq+ZXUgSyu1W6VWTe63iX5/A9ZbbmReOr6tRt1cpQn6lbHz6Kq/nwnjDRVYvWNa69/KmH8ndZDjwlGbcXGhWXQacXymtubBR433U5Gnx5cuLGiVpna8batOG3DLLMHbLihO67QPSaXBGagYnq/4szk0iRhJkL/MybEn9bLv3Tdmo06J5EpvPBTakJTF3VW0Deuuf6L5frUrX+nDU8KOrFhUCez+R2NMIE1394QhSmBLSM21KdWvW0bsi4n9SnwyNycg3Pq62ICYCw+Ve0ikXZ/h0fWnF4bCfHWqdYm5MgWqsEBCGPbU1woHOnED8j2U+XZ9jLF4m7If0LlOOWRR+d0ybymNbVk61cBnub4ytGt3WJI00jZ9vJfcfYfPqCurblreHJ/I+DjLuxbIZEoGWnFyquOAJgW1F27sT+cNaa+J3Jt6Llsw1GrOV6u4WvQhfgIWsY/6WBhT592Zi4zCvosmt/TmaE58ForSNmn6Xy3bFuwJMG/S5AhfSLtvPR1kkLjqVCwrXOAbY84cYKtme3onIfm4nnDsK4I+jx/ICyj3ecRt+/ko1x3bQg0bgnHUC63UhIV45GbWMTifNPK7u7vPSILNXmMdByvHa+8+25elAXz9tra9jDqaFIEXhDQOROcfODcnCXvbB4IBHI6rjOuGP7tS/5w7dGjaMdKPbxiAz5CdKTYJUX5ahtAx/UrFo70RFhnbSa52UjVOLexplP+wThwsyY1YpLCz92rc7Ul3ZqwA6tpY+JQBXIbk1JqJ9RFCwtdwet2SBz3z0/IfG2FAupr6eziTLVggBNzY3peFu346pd19dvPlIcMxeTLooND0FV7Jvs71ITOvv5lzv5+Mh8Zk5INV8gqvutOThlqlQChC+vXxJV3rFfANVC3XYCSlg/aWBvyV1kI27/mHJTSU2ZJQ8MY8/yL6LnaxM2VS9MIX4IO4ZuRFVSyrHVF0S5JZphZCXhFeWztqtFFDarLNaB6+B3v3Z1UvRAxHHoDY9BcLpgGD+YC2SZKnnCSerdHsmkx3DlhaO9qOMglghsFTvJh3N3b1LFB4zg3VGz7mQYBQzY3iTv36LLww5v1IEZ79rFcNv/EreIQ/iHebcwLd2O9FzESZ/IfeDAYrweow9FYMWIMfLo1JDDl0as62jV0fK4kv/T79k7E7d6N1i/6JNrunnMdxN9BB5kk4DfFyceUnZmQiUTrzAgWWCLrvpruVefL/s62W8ZFPzSRVFWz6fJMavjSauUguDkVCxtHZORrucvg/ZjFvu6aTbJv6yI/fd7N9HlVJGe6t5c+neujH7eFiyetToJlXVbleGrrNeetGMjxnCb5jbprl1SkMxUTt2Y4tF1Wkb8htbWnYUiRwBUTogs2mTxv7VnonDNLp5azV+KnmTjTxBxgfjdY3o84PIgEbmgO5oVzkCxtRqLML94Izvoip8J4JwMKwdRyESPJgiTvgbsgFpHy3Mw6Bbw0/ygjCNw6huMsUndeXMeIYkD0qoS3n/Zt8g3MMfhc7zazfnew9Q2/JjMiK4tnfF0YW7t2MI6Z3bt2nLdm1aKR+XMLbfW1qUrLYOI4rpK619PHgyX2dKurtBPHREg7u/DO2XV1O2VlehVOWiMhwqLuKHIFK6bP5BxcT+kbdGQ41T+yrseDPmxNDJ13Z1W0Kn10cnzl5Niqo+mqR7sW96Ln9n72QiHIvev7Bv6vD777e5Xa1OeXzsE6t6BB8MsKyCIIhiFE9+TbW7Tuvq6y8rXDk82SP0A+gXYzdGH1SK49HtZ7ClJ9H346mLxt2/CiVUsn35mqqEi9c3LpqueuqYsG7ZGLPnc+Ur/+7nLzoy8cP9J8f/cKCeX4kKYg4eOCIF7bmG2L8oZWnq5vhJVQiAaQMDk/jJEgDAy318QaNFFXOWMp6a+oFX0BnwRMLxw3p+sb0vwc3vZjI7LAEPPZ44+SfO0PfQhx0IJkK51n8aeds/yHrs6RM/FaFKvlaY0/775Bb9yR8gVpN8CJOkgW3Bx9WJU/9BDhDRx/VCJVjHkBtZpoiVOMCPO19q9qecE9W0RfQHuYkHe/AKF/OZK6SdSIkGOa+KGHiJSPHmc51rnhHtM+7uZRxo6Ebi1f755ERrVY24dK5mxBUMIBul2m5CjEYwnuCrKCBTaZgiMcdoo30fsxp/rY9aCzz8vx6JxbOQePQQExohDgDT/+yYjOC8Z59vfs3brviwYv+vFfRlTd2Gl/3d6gWTPuFfDyaPqczQTEhJ2tTGjwrMFLvha0F9WdZwi8ztmP2+cP+/E/8obVYh+zv77TgFZG4+jDI/5iDkqH8ygcF9wz/xKu40x642mURo+/4HEmpROEL4ln40ueSZOcjR5Jcpme+h0+jAcoh51yECJgLv+Aw/CNEUbKuebRoUGA4yI6dpUZlFUeld1wIyAm+wX7F7wq0/M47x6EzxQNig7H6LT75NoxwS+wfM24Y+Y57qK9+Gc/P/PONRj9RH71FYyZEs6+CXJyjpwzOTynk3VOZypRXV8EOQep7ZUiXz8UVJyZa6WJVfOqY0gk1YmTYRkEsn9hv4B4jerofTcMOgZNpZhHrvj9QHs6FfJHCp2lN3rtZz+/ZyEoOON+OIGR/eg9r77CMKW6kT5rELlm4YLNQow6nfrlxvQdwufibzAVTJ6cJST99MzbTSsXcbOckqgAt+x2DLXjNICPSpgr+kVRkq5MzE8hnheOHmJh1WcPHRU4Tn/1Ly+gF96xH+GnReEr9Re2Y5njZfEbXyTD+YvfEEWSlhkdtjcBlLA/GuE/fZLq1XLq3ewRGD9zirkP2/2Fdkq2DESIRCG36ANFAKU5Mwgvon16JWlDezchgLecsBHdc6AGYcxdeSAUa1JYjr/84MHLeY5VmpouP8yBOKb/CLoRoTSp6GY/z5NqbQhz3PrVaN6ym0UJ47XwH8aSePNtaM06jsPkxk5dqpWnnsMvAm4nvAXDqdfuOV/sjGy3XtXwNuIn+6tJpsYf+1ghunzs4W6s6rWmxrMjC1g+XF4uGKk6RE5/34F8lREJP6VyghrsW/Ov9ms+zQhK7KGDEstpZjDcPcaCWVH3szHezVfbfOo3rB/aktSPb8ComLfJYJ1Kk0SOSuQTcp5TTk/j3ZRDHe39LFzQ4QIqx5lwHE9a9rGR/aKAHiErnoQ/K7NV7fevUWUOxqDYcs3WijDLydW3YJllBXt58aJk66oDdWB0QVNnXoSfgpWHI+cvHNr9jE9O3RuUWXuZzCN14lyd83Wmb5qEuZtnZ17m37jEENAntaBzUeamleQit0aY14+F435vXXiDPux/s5775l3WPc95P65jGyi/uhkwe6KYl7TICwsVX9F9f7+TQjBMq9gT2+Ic7SalDLHiq6Bg/JKQwxTwJfEvwVMRXSYbG3d5Yic9vtiEIijo3wVafEcR7Gr4VUSDDqXN4wI4nMY400LyeSX+dg4GgL4ailRw0++/eaKFJyUsoCpyWAk/cfFTfOiNsyrYjRhddxVmESz3nPuRMlPeCJP723kUEMnKWHyH6XzjJE94qR977+kcbpHw+bMmebLH/JrzjiZgpHBOe4NC38F/ZsqYHmYdtPeS/oa8OR3XQk9sIjMzCAQ8houz5TId8erA2kJ7q6/0Cppwcubn+F7M6YKks1MvISzxqq8kz8DApgX1bX1ze89fySFBlfDWBbVt+HBPe+1CS0bl0x9izZj5Ef4TUk2ZfQ79OxZ0Pzp4EMETePT7qf0jG6JVjZneloCoBCR9eH0ULcnUJK1Awn7d+yiRLHm71C4xppdZD3YZH2isMVjWSXn2BkkX0N9tmHPE0MzUDD61mJoBX/q2LfMDUQ5MZ25A/mLmhqn3vHXbOPGQJAY0DraRTrQm/Szl7eLZeQOFTtbJi0W6E+HcuzGQFIvS9Hro0NC9C1FJAjBKJBCmniAZsWQdJdoaFPBEWaT4xMpXdN3+VXujn5wc/0FHL1cuShmawB05OmfkCO8yC8iRqp2Q9JZmDr6u+qWkbugtLSQNh1iZ0Ut1KKM155ortVKeQegMooHvb6hAEhbRDF5EaoC+LNIp6+BV0OTN5MfbBdN+kQR1CQ4HgT/yzu6RIxw3Vf0m4pNc+vZh/C38J/CTPgjy37/ePfvIzHL2QXgSHiPIPat0Nlp5wB+l+YqnmR1tNIdBBW4rYdrBOhP0dmLd/LvUFwulTBQMz/zEu5tDZXQJlm6aN561/2i/fuAWpJCTE2Iv7XVrIJTMDNCkwXyTb26yoRWLnAATXCFZrzXm6WcadIYmrSLfwPsMrmZIBqjp92cxSVeWloIyCjamMsk+iY2i9SMNraqJyhMLQy2Zqmr6XkeixVKT4eRY3vLJARXB1wzMCK+SAxdx79623n08OXB5VYCFRwv444MVghAZbAqVlyEWJnOMrmFROCZEfeUDlYIYHmwyLYCTGGn1vC5UN63FvCpKq/xNYcTLAV98kKb5nbulDPzoufO4RiXsiw9VRuC9RU1xHYtSUzxfH2wog69JYml7ljEfgvZ8YIPqndM4Ew3PzTyn+f+iQdfI4G3OE3ieh3XxJwo55lGQdOAW+48s//L/oyZ9RXxVYC1WuPwgPR3aBy27V+TMv679v96oHLPCbsEn2d/CPEkyji4kscxdDbXZVIWP5M5ERf6qw4kA62e9fEOMm+RRcH+K03wQnvMScxdcugV+UFZVtPDpv4hI/AuWdYmbeppXJBF3T33GwMMmzf/o/CSVB3APAVL2T+yf8n76NdZ+9U8AXH9L8g2h+MKN7JYNGNYXFX2XoBqefXbqspgoxsTP03/vw+g7MKnJAtq9E5AET76BzoVvKBpTojOJt2xiFhOd+5obqqtiOs0X6hJFMtM0kVApT2RmplB+mh5DAIjrBbYSysj5ki5zWJz6E1YJYWSAFRVh6stRoqYBSOg5y8LznQSinzfwuKTJHFwqYtXP2z+1f4IIecSPKgyME6QwA/fEP4OqlDoiyDB5f+eRWfKKPjB9pR/v3I14ReO37+TRTGzno/mKq/zSNBadBnGFzghBdbODU4pEPRgn4BYsgMMj2r/866zQFB9SiYsPaM6nEyojwk9BY8wOSUvls5gGKp86A3t6okQcgByOzJAbGgyBlNMI1JNF9eCxgZAnuqIPPIEUknvUhaGiRKURP0xxscRjcKwcFMqLFedcyZwq4mMv32Y9s4PUsWuPEBnddMF0/iH7/ZTv4RTxpoTvaipjG006U0BvNwMnfpfJC0boW2Maz2tjm7v7VVEzRM4aP2D/skvXu4xB+fF/CU597a2n4/w3RTfMjwyHMRuu6pw3aYoG3JcPLy8sVwgEhknI3L11auNbS815pq2ShnvWSk9andreTtci031HO4WdbhEJwgBqC799W53Qu6wB8fGvBzlRh0mjv3vzmA7u5di3QobAm5x/7AAq79Kn3vvWs7d+QwCfiBgEADa5tzk5r7MqzOLw8EdMQ1fCK9onZN1e8pbzmLKwvv4IfxPW1wZmDXMV4PmL1y3oyxhsCddLaIs4+a28M36vnzl547PotIT6zuJKM5YV62g4mRUSMy71QrhOv9Y50J7Qx36z87IQdAMMIrOGKGesxp7JMtVYW6j3Z2RRN7AQuuyC347p+IoNCzKL+5cl/MmUucJZPed2GumsnhsdyftSSSvXyLGKvn64erR/NEWuyjeydAEml+XV5PLBJnLZcgmuQn8QdaG25WKscODfg8Ohz22IpvJ+UmMyX1HeMFeHGRCHL26pFVX78PxNlTUtKseVL4aFMti12uRYzmxqMqHZO9OJ0B/nba6sadJ5Xu/IwBobnLPK5DlWb6kPcFx8LBGe2QY5ZoI5DG1w4eRgIaGwTr916Uten3VJAqTTtrmN0RYO/B9pAnzCGP3tBZcHJGTogljtr+9eHVX1lX2NVrUY1JEUuHzXC6NG9H/W+DDX17buiyAVzNzfUl6R94sc9tWkoi39cR5F9rXWCoa95+81O8GVj1Bc2UD9hP29GQO/hT7Peg5qyUk9gMOioT3YSFCjE8V0Bp7M5lLT8V3ts7acG3hV8hGMil/vPn1UFNbSUdHgo6OC5Z1RUXbOwnSkrr+ax8lqxHKiWZksNkcUbViwSdZNfzLY3+IaP4rWDc/dmsdsMuSXZDVVmXdblDTV/E4r2VgTtuALQ40lLU0HS13zaYMlG6SDpTLWMA+mQZkNX9wMg2Xqz/M2CVZtmB+aj5AmsvOHOMttL1gk528q4ziUSA/pDT6ej43RN+dtmRvhhurjAEF66NXloxXQ3nNWg7MUljC5utHiedoLSto0x7wf2vSizoTHszmbMYT+HzWpM8oOBEVMR5mvgY6y1d3To2z3r0eNqav/7zQnGX7NF0ewrIr6QEuskg6/QK44/FrqBGPqt/9nG5LOiStP1dD8741MJ+VU983paMmJTv73QjfubD27EC7rNIfhbAO2TvMP0DNnFaRlLyhxCLx8+44eDUwH0wd69Ha1N5uYfauxWf7T9DjbQCx0miL4J2cbfDVVeZouBFsdwSdYk8kyG0hu6wb/aTnOSlKcFTOceQnOCKoaQA4ny0v4lRamMRUdNp3TiKrgpIg7q4xnH9XR3rYu3tJwQ35yQtW/WrfmQzSnRkemjCT2rK+dmBQ5dfu20a4PPSRyvyS5z7y0YBqiJZPV1UPZzSQtGLZ/JVi9g+D1sJzQ1ERyNrRvx6ooWP11ZZaICm0um2XFCM2CVmqXapoLe0G9hT2O9t/Mg8a+PbOcTW60t2IS/JqbDy53IU0HR0xCUqU1k2RwKv7rS2/RJqR+3QvMS+gTTCUjHLeK+UY8ijpJvkGIGzRczeE+knp++QqYAvWOLpIgozYBb1RrYoFU+LskX6XqvNxdsHX9u/UVGrhIOV3qps/5T3QXeoTpgufkS2r+dRY63OjTSAlH1Ymr7qDJP9JNuEOcLq3cpUngMO44B0uKxIs4UgZ+HislMpTJNPROrEkGh8tioqBhLpVBDxi8uH37YFtDvcYr5UnTgGEDFgzaT+nqbXdkx9etBRnHxy3DEjiOCwcdHsPH8DN4A1NL6vP6yHlVNwq3hp1ib7SGPd37jhGk1o36UWubE1qWhnUIbYomY4B5NSxrF+6LdcpyeefKScwqqLyha1H6+EDhrqeq88iAtQH+53b/CKRBaAKNE7YG+Brg7r7vXvfMsPrUn/Fz6FF6ZljrnGF6YQMkloCmgqGcUi8XF7GPMB0QTgh7/SjX7tVBciIPptP7kBAefNwXM7mRYTniExQexef5uGBC9q9rzpkyK1Xp45tOSFUxKxodGJFVWa9gM/06HwrAGiT51rdlTJnTyzQ0iNJyFXrUMDSdb6wLpuZY6SBWOVU0001JM6xqrT2VLf37sGWpZjDfYFrRqnUcZiWe5+GSlkQgEPPXt8Rx7WOc7o3VX7q1O0i+4r7av1G7g8y7tOx7soOSTGiXSiA6B4ecf0m8YvKNS3UgDfnt38N49JNQRYREWUSmrtsvO//qlmr//g2rc0xdY2j3wThoaoQbiXJdvSVZ5Pd1qrxhpj4xWn+1v+5v1eI4W4XepPTG2Wj0xtU2/nrpm6hE9FmHT7J3MZcxx0CfY1esSGKPC9iPO7yaGASrkUJtmObYJdOnwbZ5FcYNTAFam5ecdTrqBTx3L31FoYQ4OV0Orx+TPo0oQAvBfbYIMie97062B6/cdlIhQRb1O+paVrWizm6SkFSMtlbh6qZxmefld14ajDV97CMw6j/5KREH+SC6Q1e//V2shORyUxWMeWI/oVWODMdjWzbDiwu210oRBfWO/QNGbF+zzKJI5OOaIHLS6AhmP4XzLZMSPCLYFIjWRNADHxahQ4UX3LktGMzKvMCJYm8B945dg8Hdh/k7ws8xu+hUJVR0l08mAVc97efcaXlsHKZlSVHxwbL5CcBaKMmWxxA3fwh5fciJnVnrxBit73uLtQsMFPEOucgU4hYZ7CQYN+3SsaHt3kYNA3YpXvT4ebAYcOhb/9LUIgiakcshzMVWqhanjI7npaD8NgsafA4nz2mGIYfO23jpOyS4AG/ajPVa3uIEJV29LtgeObO2gWen1TSuZuPaJVHSN6EjFvvlWRa9yJLoIvdXQrjL1jnTKxgu0A6dsb2z2qt9sR1t3sw1nU3xC+PGqyVUpz76KIb5EcsPf4xDlem5PNjs2o3bOB3Nc8pffLi+HnGXnXX9i6F5W+MrJznocNrEspFV7yUXovl8vg2E+JcZ9S+ccbuXOQS2uXTfmgjNt+AMqna3YPkAKiW246JtsFcQxaV1pt7y8EWEBB4hk0E/niBjSw6rtx6NwNL77LdRTTWh6FspwZJ30kl6ZLgQL8eF4cvBbqKx/yDO589+5KL3cvbH/xtpZYpapqXIqCofqMKLuk1OE7gd2y65CHoTj7eFm8tQCzm4TCYfHF+ZqOyBCVXU5nRf/I6zHrJ4kv0A2p8eragYSzk2Pgk27mU2MRcT/3bLwijNS0/SzznRpCUBa16UAC6UlPhsdzAo9NDUNGCHRcCpLxAh/q5D1UzTQzDA8Ww7CRtMl2St7sSf1uxvJjPoAEz2+/PlL/xa0155KezXJR/n42UeJSp1fVllJb9osa4/lMyw0ZE9BLwDTD2wlyTolnVeUyNhAHpDu+NzytFN79Yu3x4rpPFCAukjFw3Lu/f+E28uG9NFzto8xwlxa8mF/EJWDusIE3C4aBFMGoa+bAkrkiTGe7IA5HFlBousieNxAmP0P/YcGUKcgTGsUMragfzGfP8aBf/3n2ms4KfBJ3uJuQDwz/KwEyuYBGBdTE8yW6rmoFN2twdNY9ig4+i49VXTpeGCzrLb3g8j2LE53NEB7mhZR8PGjdL8zOb0aS7N5BUBljWX9lYNrlmXipoiOGVl2ayub6/v2r5d1f+jau4HP6Bpjz6azKiSjsri69cBGPYN+u69T4SRbK1YyFuhwnluRmdwa8B8WLlwmbXA6t1QZopt+aAmcU1ZAu4H17ognhq3rRe8eIxqahH5LHZ+zMvv7Pa385hLoL/t3DHH8PyaCN3K8LqNe2LqBiogL+33WfdHML3zjr9AHMk6xGdTOFT0lJw04D1zTUMvE0j3SYgGII62CEmbXndZv//sO+PvdPXI0Wvn5lvKBq64B/23ib+ga6uuBLPr+Hvg8ggZlYtXdgnQjaQeMwkOtdW6OrQguLynoe2s+uOYxUsqRrV3VGmwoJj2eozVXct8qbTVRfvdcYrVLoJ+d24vKuaY96aykpcDyAvmpTGpp2fP7vAawQ1WrkPegC0xu5c83DP6Cm1MrVFGhgFJ3Kfm1b27YVLbvz/o0ySBFI/nEZuumn9+eNqFBKvvG2sPEzNv+F/xhOiT0JNPgaF3BWt/9wI4kxXBMkOEKQ7wfSKhfZUzna4DfTG2I0YmMlXGLfmgLsgZJUrKbBiTfdVO9m1qNWws7Z6g5t08atYGofdJgudZtgxoRjX5FjZc3iUC2x1kVpD8lSLhv7oVjUHDQomDTGx4Zsb1M7Yj3GVIFGb43PiEbt/WWCeynKxhnErSwNrHQpPhfH3yzC0IZ7wu62lZ1VTvfodNJidXgre9pg687YOCVWjjkEnjqUhaD2of2TpvOA+YanrrYRcZon0bomF6tcLXZMng3N6OVVqLAePjoPca0HveTL1z7hmU46K5xZydgeUssS3ujH5a5zlzY8JR/gHdzqareRaTMmLxRCQAgHekpW3lal3/airDgVelo4qyqlhwxj5DcSOCpOUfakrN/9nz6hW81dHBIqSKfH0t4DHeGltC0q+3tbM8ST8hNqZx6f6CPr37QPLwky5A5h/S8PWASVlGhPmHJ3V8m+taOtpCbfB3m/Pf2V9HwS5cRa4TjiPi97Y4nzP/G9pDPRF42qVUXU7bQBAeBwjCKhEgtVIrVd3yUpCMEwMvBIqUQiNF4UcQinhDi7OJDYkd2ZsYnnuJqheoeoRepFfoGaq+9PN6C4TSUmhW8X6enfnm8+zsEtETo0AGZb8t+qixQRP0Q+McjRuPNR6hlwbXeJSmjU8aj9EL47vGeZrOvdZ40rBGP2tcoGf5RxpP0UR+VeNpGs+/A7MxOoG3DypLig2aoW8a56hgjGk8Qm+M5xqP0qzxXuMxWje+aJyn2dxTjSdzR7ldjQu0PPZV4ymayb/SeJoK+be0QSH16IIi8qlNHkliNEcuzWNepBLGCi0o5ODPaJMExco3wFsDnj4sAWZBFiw1hW0y72R2aBmojhWuuCpY49QETxdRtBH2LiK/7Uk2586zxVJpZWGx5JTYpoj9dsAari8CV1isFri2edPZWWZ1jwes4vKm6IKtDuoDUB/RMRJtQzjV+YE4Oq5sA+5jpU196sArwqto9zscoIpPCCA8nSN4CCXdVoUoK/E3WRduclXDQFbDqC3Yol1iZXaZdeEyyz+w3BJ1CI9IbUWoyudAl0OrQBKjhbg+5hDl9dU3pMUfKK8lbAEdiij2w4A5trPKpGzxvgw9P0ABB469NP9QVfdrJ+seDZXyrFGiho0W4eD26BTzOd6z/VlHnv9tvOE8Z9qLD/lcz2chY4JMqRqmKhSrnRng2YTlVw8x2gFDV/XQ77VND4wJW7pb8VBUA6gFlKiap9GZRwezqyoV60x94KbKzZQaoaJruOIY7aIiQn3tFfPWEENa69t7yh5SNpyXQdUAf1/1xAmeqe2qHlxlrNCewhKnxlQ7IqGnTEWMGGzpTvVgi5ErVly/KlyE8iqU/uk6sG69D9jcWpIkdpdL75Sf2zh+6/N33RE65gwmnlmyOMtMfOmxfRGLaCCaLD3QbId3xdVRtk3zwPPjbKkRtmTCI8Fg6PiuCGIE9YOmiJj0BGvUtthuTwSZ81bmYLFrx9HOyHQs4wPud/hJRzClg7NqZY9xWTY9KXvlYjF2I78nYzv2O6ng4m4V1XpQif9G+KD78yfe9G6peNptlNWDG1UUxu+vtt1S3N3qOnOTyUwqwFgoVqS4Z7vZ3UB2s6QpbXEoWtyKuxR3K+7u2uK88sKfANnMlzfmIb+Zm3O+c87c744ZZdrXv6uNNf9z0TXyY0aZ0WaSmWymmKlmmpluZpiZZpaZbeaYucYxbis3Z/LGMwXjm8AUzTwz3ywwC81iRpm1Zo35m9Fmg9nIGMYyji7G080ENmEim7IZm7MFW7IVW7MN27Id27MDO7ITO7MLu7Ibu7MHe7IXezOJyUxhKtOYzgxmMovZzGEuDi6WHHk8CvgEFM0/zGM+C1jIPuzLfoRExCSklNifRRzAgWYdB3Ewh7CYQzmMwzmCJRzJURzNMRzLcRzPCZzISZzMKZxKmR6W0kuFPvoZoMppnE6NQYaoM8wZNFhGk+WcyQpWsoqzOJtzOJfzOJ8LuJCLWM3FXMKlXMblXMEaruQqruYaruU6rucGbuQmbmYtt3Art3E7d3And3E393Av93E/D/AgD/Ew63iER3mMx3mCJ3mKp3mGZ3mO5816XuBFXuJlXmE9r/Iar/MGb/IWb/MO7/Ie7/MBH/IRH/MJn/IZn/MFX/IVX/MN3/Id3/MDP/ITG9jIz/zCr/zG7/zBn/zVtXyo6jihM2agp9xoP+Qc292s1norS+uDPdlKkmQsOSO0Ts5r03VKGa2fMWfFgthZDzLm3e5yo1FfUav0NSe07xrV/oFm9mcxFCMxzRg6osTDnKi4MBYTUXmR8iJXVFORmopUL5JO1MnTULHqxaoX50XpxNKJNVxcFKUbSzdWf7H6i1UnVp1E8YniE8Wl6j/N+rCOK+bHVwaHm6uWVZpayBJar1csTBxu1IfrjWa1PlSujS0P9dcq2V9WGlaaNicq1Xpiobs5UGlU+uoNZba2fFl1sFrLTNJ6VtG8FPNSzBfEUEzFbFrrKd5TvKcOPOV5vpi9NVvQekHrhUAsip041Smoju+Iquernq96vnR96frS8TWXLz1feoH0AukF6iNQH4HmDSJReUXlyd1W7rZF1ZHLbVHxcrsNVSdUnVB1QunI9Vaut3K9DaUTad5I80ba4Ug7HElXp8DqFNgo7uqtNwfLzYHsWS63creVu63cbeVuK3dbudvK3TbRPInmSdRXor4S9ZVoPxLVS9Rforo6JVanxCaqk6iOTotNVSeVXiq9VHqp9FLppdJLNUeazZHTCcnphOTjYPySkuM6rWvkJte5sZ2b/MhNO9aT5zzfdvdVa7VKb0995bhFrYPaMl+zUS33Lx/OArQ5XuvT1F7vHdJz1oQXZ4IFJ9s0383ifZutF9V86GUvI5R5Q5k3DDyxIPpiIBbFUJRekL2MsKj8ovJlnjDqPEtPZgoj6clUYax4fTJDmSbMTJM6TkH0xUAsip24REzFUkbXEV1Req70XOm50nNDsd1HWiolYiqW/gPadWjiAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsU
d09GRgABAAAAAC9oAA8AAAAATIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAvTAAAABwAAAAcacggM09TLzIAAAHMAAAAVQAAAGBGsWERY21hcAAAAsQAAACGAAABYvbYsmpjdnQgAAAJdAAAABsAAAAqANMKnWZwZ20AAANMAAAFpwAAC5fYFNvwZ2FzcAAAL0QAAAAIAAAACAAAABBnbHlmAAAJ7AAAIb0AADNczg0bHWhlYWQAAAFYAAAAMwAAADYRhNmeaGhlYQAAAYwAAAAgAAAAJAjTA41obXR4AAACJAAAAJ4AAACwctMFeGxvY2EAAAmQAAAAWgAAAFoTsQYSbWF4cAAAAawAAAAgAAAAIAFJAftuYW1lAAArrAAAAyIAAAfOplHR1HBvc3QAAC7QAAAAdAAAAJrSViLzcHJlcAAACPQAAAB9AAAAio6I4MZ42mNgZGBgAOJzYd+14vltvjLIM78AijBcm+itBKP/P/2vy+rJ7AFUx8HABBIFAGLMDE0AeNpjYGRgYPb4r8sQxZr0/+m/i6yeDEARFKADAJlsBmgAAQAAACwAcwADAAAAAAACAB4ALgB3AAAAhAFYAAAAAHjaY2Bi2se0h4GVgYGpC0gzMPRAaMYHDIaMTEA+AwcDBDQwMLwXYHjzFsplCEhzTWFQYFB4/59Z4b8FQxSzB8NlBQaG/jhmkCzTOiChwMAIAEJCEVsAAAB42mP4xWDEAASMvkDiFwMDkz2DHhAHALExEBsAsQIQW0LZDlDagHkmgzrTGwYNplQGEeYaBhGmeAZVZj0GQaZVDEbMt4H8pv9PmbkZTJnTGTSYRRg0WZMY1JhX/n/B3MVgz6wF1LOaoYL5HlDdDgZJphYGNabT/78xPWSQZJnIIMlsyGDB9J1BhdmIQQ/kJsYvQKwDdF8KAwMAL6ggpAAAeNpjYGBgZoBgGQZGBhCIAfIYwXwWBgcgzcPAwcAEZCswWDJEMSx4////f6CoAoMBgyOQ9xfIffz/yv+z/zsEdKAmwAEjGwNciJEJSDAxoCmAWI0MWFjZ2Dk4ubh5eKECfPwCgkLCIqJi4hKSUtIysnLyCopKyiqqauoM9AUaZOkCAIQzFdwAAHjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDYxMDJogRibuVkYOSAsQSYwi91pFzMDUJoTyOZw2sXgAGEzM7hsVGHsCIzY4NARsZE5xWWjGoi3i6OBgZHFoSM5JAKkJBIINvOyMPJo7WD837qBpXcjE1Afa4oLAGgRJKMAAAB42mNgwAATgDCVIZVp///3TKIMDDAaAF24B3cAAAAAFgAWABYAFgBsAMwBegISAowDKgOoBBwEogVkBi4HBAd8CDwI4AnaCrYL2gyCDSYN5A6iD1oQChCUEUoSRhM8E/gUmBVyFegWnBd+GDIZeBl4GYwZoBmuAAB42pV7C3BkWXneed337dv33r7dffutfnerWy2pu9Wtt1ozGmkkjUaa185oNe+ZnZl9Cc0s+zJglrXBC4QFg5dQsR1synbCozbA2lQwcQEmJg6YYJzgCilwgm2qCLEDlaRSFZezk//c263RPlgc9YxKuvc/PX3/x/d/33/OIIKaCKE/JmFEkYTk3xMZRmSs1rJaVrll5Zsfvt5skvD//W9N/BlEUOPuj4mJ/wSZqIYKvWwhRSjBawiWUEyuIUrRDrybgY4lKx2TiW6N5UoT7U63M4Ob0Ug0EnZoKZ+TDCw5YtjhV5pduDvRLk00MP61v3vz5hk35owrD40VP5aYGXN1BWNCBOOfGgIhGCvW3ltvPWaK2Dg8deOtOOe6WrbORq2j8ZwxNmbk4ketUVbPwkeAj7QF3/47/gaaQLVeJYgR9j4ovgM3BYKEKwzemZ6Hz2zSY2cmnijkuqIYr4VmcafdaXa6LfhkLfjQKex/d8R8rpTj3+Zwmz/QRDsvSjkD13ADb2GGJeK+fVWXTEZmZ5kqGZHb9+1FDUmjszNYLVLTlYsqxc+KkkgZwyVRZV/+EhFDoqUToltimJF//GFKMWaK//lbCBEBfL2EPvR7BUwYXlv/dGDrXA8eT2QiuoUYIewGGIoIi9co99N5JAimcCyx/mkHDHO+Idt7A8te/oCRyMju61ltb/eC87P1ajaTiMfcoimJkZrNA+t7iIcVngpeBg5i8FynO+85LepfzufKDcyN4TKPdRlSIOyteqGdNcrPzeq3xsrhmNvJU9aMRn/D0GSJqiGLKThD4EN9/U+oxAR2+/poMLs1NFzHRMGVXDwZmsJ6o9DN5C3TMTBxNQ1jI2ZJRJClXxVECuFVrQhjR+aGgtnCbESRCAk4ce7bsbsjJAC5sYmO99YjWBDzmFGyhhB8XiTuISowgYJPMNQElq6BSwQqCtc8R55FjJEdRBjZ3NxYXlqYm2hVy9lMyZHBLSHuC8813AXeQ0piEPtOAv9A+pR5RcC9sBPEIr/BM417hfsFbnIn9Ysin/vMeHmpzIxbaxsPR/Sh9IwePFNx60O7i2feoeHhUqGe0iVGlfLEkZAcDcTM0RKTsDKU06uWnB0ewU+HxvKVSs4KThweH4mlxoerccbCs7nRpVahun5I1AqNkdxwWOYPFpqNdtczliYQwbFFCL85Ga2MViAN0dDdeZLG30ZTaB71enMzmBELMpWsQZowckfESMESki6rMoHc3hEwxiY+Nj2N0PT89Bwsa2Xbpex0tqOJiVq0gQclxB/Y8wfyIKKfTn7JgeNqOMx/Cnu1B7gRskQp+h2VKcLY+LveySDEDJ9gFOrJEOMUfi2VmaqycqlUppoUsO8vXIkd+eDa7h8yOaQYIvlFAkbRiIz/EccrCPIf/WsijAlwXXDtAMHoLiafOoP9+puCHBEgRzbQtd5lHWPZwCJZwJJYxgJjawpGMroDCcNEiVePIDJhFy5hIuNr4DJRIuI1SBsqnIUqojuQU3QTo/XV+dmp7uhIdigRC1magjbwhio6NdzkmdIvl3zYB5809h7dz5hBKqWxnzKDUvKyquyjUqvj38NfMwhx1x41Q0WbYql5aKbbnHvh9s5co5w/RPS0QKjCSmMRsW0GdXv0TFlWglGIO8ZCaOX05nEDfyMeJEJ8zSDsSSEdi19efOCxmbHZbEWeh8RSCKUyjeFANnXmsluc0gSNfur8GYKpmEgyePgx6BMG+RU0jA6jTq+lYlEA9GXgVYahuhBiFF2D3wQRQ1WJIq8nWHBsqhgulyt5CbIEl/LwcCJ/5D6ceCjje6PL8Tk6qDWpVOaGfkNpQRb59QMd5QWHOVp9yYpAuKOt4csz00sTjeWjk7cXj77bKkm3C7MFOVx0I4G6yFS3TXWSsgJQQRI5obLhofqtIEmnFqZvbFyPRwrrf/H8uRs6jj+QLhQT5T8LESVQv3GoYOtlzEzDiD22VuF504O8aeDvomk03euOY0qSGHNsYYjdQdAuIfUAWPBtqCuCzkKq8YdHZHOy06iX8nH3qiCGayEn2oRHiTYHCMJT4x6AeA9Yw+J+xpTK7QHqfqwl5wT8wjtJgJATJyZV6HNCIeoWBCycS8zl2MPPC7IC+OZwgC0ARpphQcBfkwAvMUnahF24uP5sZa4pO6lURIp+6L315SKmbMqlkCAy+yGToYgghn6MX0Bl1EVrqNGrLbXzOjvIBxi+RwimJifXptbqw+lYjj9f0TnQFko+CPiwx+Png6MDqU4BBPuhzUBr6dBmBxId7Bt4FOf4jQgxnnukOrKyYSVWANrcdFqP1SYNRmzx4u6WLLdnnzo8ed4WMubsiimWHptbrapHzaqqSvH6sT+48qhqbS9Wcu0yZYHsSHNyzA5nJIJPr5wcEwlNXcTyeJuMBLRUWBuq6GL+5asjo1IpJpeVqCDG63Ozc8jL9waBmkFj6Bj6Zz1tziaioGLwJ/Rs1WvFmLsXejbiOAH4IIGP0GVIfY4MnIJA006BZZ5bgvP23si0V32NlYgoFikHHkTO8sw67y3bgt4dxuhQrz1eyceiAU0U0BgekwFxoh41466WOGZA25nIHWzXvA+1vCTst7EQBxsv4SAcaTKD+20KzH+ytg2llIuWpkuuQ7EQL4cSF2eHklpgsTLWojobim1UJ39zigluKWwCEgKti8cTTkwbUqHz5v9sYTFdLKaKEb0QW9s0pXxAnB1a6Zbq5cO2g0Vn7uyH//ZkgtzEIUNXc+raulpKa6o2tKTWFxJumRcRKt/9Jv0e+THwpZPoN3tqDnJ2CyuUh6AMjm0hyhRolXsiILQgE2EPCZIsSLtIQTJR5KsIq0AP0SVo79IOkiRDAkdPDVYhUSayCA4nfO3ugbXi66/d7iUwWl1emJvqjjVqw5lU2AnoioyW8JK2731wIEd5H84XcMt3e3OfVtkDftD14R9ePDrlfNmLA+7MkAko/VJ5QhKfryzErIASFFjZFUjtgQ8+KaSYOp8iGmA91G44aOmSwtx6TDNHUkdy2SlDccVf/mVFuzBbwq6dWL9fYxgHT47PjMQXLB1HQkmsvePz/0HWVSVcFTHElSafefmLK5vRgB7FshpPhTKASOb1AtaNp6oubsjChXfKBSEY/4DfQyuAEX9FvgzZ+5Ge0wEgmiwDX1iBNnDfEG9B/diMgleZQJiXzgyBW2UqK3QPQysWdqBHCIF1JMt0RwJEMXgBTLx6BcICwvsLAV9fb912z7x88cLOqRPD5Vo1mbNV6DNFTrMg6f1o+LzLUyg+uOZ8XFrgYMON+mUBwZgnHlxBgAYM7wAa93sUxI7MPLglD0uRYtLIvj0fGD2eaF9JJluhaLmY1BvxSpTSSDUeHdPfrdhWVCNMog+/zQxV0jNYeK+mvFkkbSf54LvkyGozRXC4PqEtTD77lSNHRDtYAnUxHFcT2UK4+Nm9R85lzCSxZWfj1ic+6ephO5mWlqhk02sYmNJOkOBgurezIbLqI+sL8chpAycCEqXBcJ0WeKycu39DzpIvAsOb6U2OVgllvGWDwGOUt2xCuZe5coLkh0iCs4FOr4OnDXysUouPdE2un4oHeMwA0wHSfRzxKHCfr0z0ne1jCgd4nuekmghVpy9flewHn6DB1ff9DYEPH2DpYEEUCpp9KC4zFStxiZSvzR81yeJob258/AshLdoozin42UfSzpM3vxjGWLIboVBozYhmAdclazQmBgsrZ3/OCT08VZloenjhIEQfJy+C/l1CL61/2oU81OIakEBOY8hawv9N8H/b9g3SfXnEYQAKnqBrHixL4KY+hufAqsCVmwAKDYSF4Bl7HnuVba/yRmYc6dclzJjJuP6yEOrNddvwYccjz1VTMkjrlq8yFgh3Y85LWP4tnxt0Ug9HIi22HxDcLgKNLoe5v33IeThI1ckhpmwHcOmULTIWmI7rLEoC1Vpn+y14KR5bIbg10t37xHfUbTL88t8LFpHdK4rw+08ci+mSJkrhkkyc739XU0K2ExCdvEBsqtZrw7ERGWP7O5snLq7uAnn+pX9hQ1D+639xyHrr3IiHDcW7PyGPQb7dh070jiegIYxAJ5gGX9A18AQPA6Qd6Gquw5gIabCLuJs87MUcewEdOLmAHPQAt1wsw1dyWhaTtdC9DtbH0qiz750Bb/baGPZqeb/cOaGAdPXdFx6sGbCT/5jJz468e0mUsbsQdlUFlGivImquZsbLUzE3HDo+HGHKeDyY3qhnZXzfVHUi7YTS6USq/YHjWm4k9RiLP8Hw9dBIoTc/uihhrCiWHgrI+UmJGEKGAcMNu+UkfDBblO28AgjXLI0wZWQsnnRUm1hmqr2hYSmzbZkPn6aeH627f0k/Bnm8hdX1T5uQfkYZCOcMeErHMqKQyP0LUv/Ctm9WBg/zfON9EIPAFYGvgR3PPHApQvIOQKch86SOg/nIvjlIZEm8hQT4LkhXfuqiEiyqvXoRgAonwNcGqw8u6Y39bGtZ9igzX4PkzW2oDOfY6uFDiwtTk+3xfMaNOCFbAX7ZBTRvphnEvd9a8x513ieZEU9beeHlwa0RzrCzfpZwAbZfTBzLrZMFTrKAiCUgv1PVU0X2EWM8qgZ0qzx9nP7d34eMMJEPZWxFvVw7h2mohMMGVsyVlC18Xm0VMg+3BTNiTOSUQmyScDUA7ySwkZ3f/axphFVZs+Nujk9+iBmgYqQh8PGDxPTNh0XVNuMVM/qmydFl4C1asT8bat59P/ko1M5Z9IWegbCCouCoCQw9GjqqAo4fBmZCkHILeXjmTXUYFq8JmIFT6SV4E2lHxpIUQDxUlhcqbwVnOD97SW/81dYCo0y4NViEXrsGQmWc2MxWSrn4cLFcUMVUDbcbZAD/Psvh5IfLPL8e9zspv+yHcgEP4uiNSfzq9gCOX/fDS4JmLho+OX40oZxZzaXmk9pqNpFUhramj2xo5ZVDYUm1Q11Xd6bms2K2INQebVzYpcGnr964o6nyfSlXdurhGTdqpyRMmoYtkuzYbn7o2HWreDHVIJbwUPKRd9VbOtYoFZVgKJQkTKFCdtuIZx+/mLCv/tbElIhjzpAVrjciKdsIZSPUj5tz90/pZ6FW93Bg/dMN8HokhTV8AyNtATTnKGbCFIZMg5p9nRsy3IDaTcKycaRB+9HQno69AHBMZJLA9lQ+HJMgVa8jJsNbiZcgr3AA8yjzf68Nv2r4DtKQdoevRXdeb6UoelMuccd7i81Eb+anLkMyE5ksvvIfHizno0Uo0l4Go0ceunJp+8zmxpFD7WajXikm42FblcARe9A1aqF7zMqDaiBUzgzu+pK2X6dhuDLvzwLCPhH2R0cTHjkDi7x0Tw+3fXJRwwOW7dGNtsc3eK4MQzl+6hESHUmEoJe40qO79Eg8cDTharXVYLCqBkXBOhyP0Omtp7PBqKpiCTiHbDinLutDiYCgm41ymJrZRHRqKjhTUBJxwgwJ1zudhLmKv2grkc0b0CSceKx89Dyw6D+vhKs2S9760dap4QomUjTn5FvTTNZtI0Z0eulmjAoYFy/2hjRLz5pi9cSJowSaQ2gcKAjWA4vHmEZqyWqi5uXR3R8AdfgR5NEKeltP5QlQgTbJlQ5H6rKM+XTSm+ly9rYLaUzwDvTLwDogBBV2BsPf4qstEQZb4DXXDtpt96JcQc5MjTfKxXw27loKWsEryiBufrecxp1pPIN9jhfEeS8SwItb9zop/NlvpZ56BFj2qfakS6Rg8eixt+JwoT6dfMmQA53U8hFLDSfqh5SbN5R6K04Cl6cita/8FdOjiYK9ODldK40otXOnlUbaxv/TYnLEGU9nKVZlKeDkJJxMdh75zBawxSq1qVw6wsUNYboZTmjS8S9+YE5XwxVF8uty4u7z9OPgz1W021NTINw5kHF/Jj3xTgBZCRA0Tv04C4Z+JFz2Gt82b3zYI3OvMtrvXeBEr2fxaToStrZ7anU4NlWpFvmUq+scxD7PIYNR+gEi1xn4dZDhr1Qa3tTkj9m5OddqDqkV3Duvtmansl0oE+tQPCokV848ONYlv/CsIevNmKFFpHylPGzZ8z93dnMyuwF4aI62om8XIqw5IwYXnY8IP7iiSsHEgqVGc5Zgb00uZwzmOdbOypCQUubChU8tZB6eHTZSU048kQxySgewAHqPHoK+lENX0XbvvtUhIuKTmKIilmgM8p6tQcaJVER0T8FUEinQOFH0B8YejyM7fFvGIMcKeYzO37+yvDhXq+avFq66EVVGOZxTX4UWXhv3HTbQal0Qw7jZH7dzD3HFXHoFK45GoMnkQYOUyr5X/dnhYLDa7VyNjinvUhxHFSQSSR5Oa9ryUFJaqSeEeI18IkFDHzgfF41IplRb0wiRk0fff26W2EIxlJxMazYJhvTCY8NFyR475gatUD4OSq2pkDRoMvEwVSiT7asPPPe7J53oCLEk45Mv3rxkBKIvvzMsKbMniRAMd+Z/e04Oh8R4dmurqeKAOVmlalAVIYGX85mgmm6973IKCIjo5Ox+b6mC1v4x+H4N/XbPyELuzQJnhkyWOSfgo6UO0GlQM7xn80zd9Vo120UMWjxn1TIW5F0PJYBmgfhQiDe5S/Qm/0ELZQTs0l8/WLrdi2F0dHnp0MxUZ6I1Xi0Npd0IWsNrqjcBuZfffvq3/HnTYKfEY+qlGu4PnYKYa+0MPtASvPAC7C9EmJo2NCdqBMeOtT+wQiklGh0eF5UzxQhNxKWAboQWK/GomJ5862Y5IG6XIsR874qSnzr91KgZqFuWJNkRzSnsdMY/tLOwJWI8Vo0FYh2Thlh8SA8krvzO9REdOyBl4tMmlafO6zgQInLC933p7jeFVfD9DbTUW9xZAwhtASCfxAIFMYNAxPgQiznEAtJTgWsZ8THip70gGMKxa1dm87FMw5ZARHfbfdWy7xtvL4m/Bu7yZDYZyGb+q0F9P4HDBgOICfEe7PLXaB9A8rwgSvWIIEcLATUx2wszLB/JGQqbX80yfKv8nq9OEyqHxWASaCiJV2MJ6A4g9CZHIpGQEhLzkhrBP1rWekY1oMiCaI8NjdYFsbC8fBjo0ITMnNIJKQJZ4nz4o78VZ9GGYv7kd45gfF/+5/9wEgq8YIV6L39vrTOc0iPYZrLEFOIkoyKooNz4zFs+zth/nlfa+hAoLOrOrz76vBV516//Rk7GKUvm/e+Hd7/JTtCj6Ax6oKcdkYkI6MIQB+wiJHoKIAYh0A8EgXanHILhLruMfCYEKp4PsEW09/oG273gmdMb63MzteFiPpblu53dfWDwYpGm0X449jO41fS3J8RBspbb0gEEuuf63ACxR3PVoGplZ2ysBGcykgy1TaZ3KvG4gfHUSjk7slWtuAVbDBwBEqDnehOQe1hazmtMNDrDC2cYzS7OrGhGLptybV17b053b730+24gnCeiEGAv/tuzIw0LWtT3v/uW1lLGLOaXgaRWNSH5yDe/Vcd8OB0bozR0eOvJ76rmxz75YYeGnVRiztYhnxcAx+94WNLttYMgtOe4MINUJpwe7CE+FhF2OVR76ettoxv02PJSplqt5EQxBtx+f1q8P0Xbh+z96u0Ds7/lyVO+b+8MtDncmiDfP3XcCZhWLKxpI60YVjLjH9qw3bS5fnq4+NzZJ55M2+eetkQz8ZEHs46oWgz0xvRCbUbBSuiJc8n4zffiF+7bU9VoesTRhmlIoOn6sQcClJlv+Zen15+tzxLjTWfSQ53OpY+3LUpAjKYy6Znj15nBSpmNi4Lz4uPevOjuH9DjwBFaaB29p2eHwYPL3o6gh7KMzzKjfVndJwJ9lIT6R8DBELot7Gtlnob1N7AExMX0LFh6vZHiTW+Mf3ixOzFSyyYdG4hLC7fkAYzaoU7+9UZAC7g52IXmN2rYxwMMqAqAgb3Ntf2xZ7n0iaj5dJTg0snXjIIqlfSTj0/My/GvvnmprctWS7aW8Od7twMAYYGCqA8VnukUApgYh22hjKO4aL/OPMgaKi+6ifPvjwdjrbfpkRJ5dAhwRxeefC4s2kQeyXRFKygNQ/49dXeXvhvy7zL6656+CT1sqVmgPsPlRyAm+OYrdBueiSBzGPgM4MkDV1Gm3qBI9gZFwm1oZd7mYsCbSfBh8wxCsiIjZQ8pWFa40P3/eIve4mtWSyBwd5HEQQxC+LPfgwvhyxfL5VK1OLJTNrkQLh5oaP09sc5g82Wf4AzYCW+UkQObxR68lAeUqFvYPzvQV02RaKtJJuPR9NbSWCpsLm/HWs89tBtP0CCruKdvFkcu7LyNHr1xKC5A7q/m9SAOPzQ2I+fy6tpbt0fr1SxTOik5je4+vangN1+c60wcU8mJJWniL2wzknQlRgJX1idm3nJ2yRIB8J+5dGJte2O1TcMpmcrxcSIrIj3ejasYy+WkomJLlENlYJHakycekgKXnoonbs2axtKm4OnjH9Nvc32MPtELuVBhZ1tEkg8BzThYYl0oHBkTGcSnhGXufAGkJ59BYGG/jJR7cylRHTCZiX/ISkQVn7oP1nlbOTcfuHTxvjNrRxcX5mZKmWjYF6/avQqc4NsIA/L+qjlscwb7DdyPm79dMOCbreb+AKMfzFcEtF+bULGDN/9CUnsqJGBTOB1SXl2otNiNLR+/mC+YMgkMT14JSHomyipDslwvN+ouERPTz8+HlWIinKtaZlAxwxTCK7pvy9gTU09EMAlv5K3gkmWJMVD8YRXLIeU1hazadspKhbXp8cNVUbVnG+K6RjIli8hmdGySBoqJw1suP29jSaLDYy11M4VR22bU+dLXzicjZc6ZYnd/Qr4FNX4/eqKnNrl+hT4zqPAC6Ccoplsi5iGBMvPP3PgbDt65JMMTsL4Z2ntDu+1eCKOt47PT46OVkmmg+/H9EpcRzajv98HBgYGr/Rc/UDEYSfjlOZgdl/2DCQPNcOBkwkBmfD1O1GBcokQqTp2aHskZWmjo4eViQSOScWzy3MXL5VFJXc4mWUBwxhuxcdEMBuOR0acqqfNbN58tq/d3ykbxdBTnTEMPmUwKGKLrliwt7TrpWK0YTaXKEJdgpHosOeKE2m4o0iAWs4VoAFq/Lpu5eCRkGubwWKk2u1eZwMFGqhVPrSZkj6t+gb5E/hQtoTs9I8TP12FER/mUr68T0uBMCk7llJXd9pwJlJXibU6PqHdmDGjAnVdacYMziCtisMV0w/P57ExjJJ+yLV3h257SgYHBAu4MLWCfN3kEQczlJfDqMK4NRK7ncI9xeRtt3fygsuai1Lkxczi4ja9tK+mMqLqkOnMECCr0UiEUGwpeG28RN69K9uGcS5Scg81EYFwQAj+Q4bOp3XQI/ztLVDYW8gaknBgSiZ3Ij8uAF1/5ury1HJGjRRqSraNLZOHR1jeUQEA3RSVUUUV/9vK/7/4Q5MWL6BT6qr/dY/TAeSOYsFGgRd68/d4FYJeDmV0VQWfHgBoyPwWDONwQzMgu9UUAP27HdywNYbCNxEfCEr6DJCTd4WvQHVjB7rzCslf6qUbieZDWRl9dbHtDnBObhxdnplrjhRzIaQmdwqeUV8rpQVvp6wpv3LYwUFx9ahYdqI99Xndgh2SwoxeMOdndcWLPpZShrqHEHdcsHf9X0yymacGjiWhWshvFoCC5lVgi5Mwdyh+iQvwvPxWPLjih0WpQMoPOKKnYgUh6RMDd8op79OcncplO3I62f7CnzCcS0bIVPRqceMevzC2Ymh7GdiDspLN40olMXP0feuZ8Y6776PnRsO2oMR9rXgKi/yJqo83PjRhAtPlhyhj4mJ8G5PMzkALAZnlM2O3BxLTnwE/egVE+7+Tn3ODug9s9rT6cTfNzkAI/8OdvHLc8HMgM8Bp4bW5w7vVAr57g8EHKpWZsNieHT7SWw3yT7IVTVYPSds7lNF6eWlLG7948bks2Y84Nl2yEnDGZCAv3fXn+QtPYe6hVFKVEnuZTs7a2NZsu/Js/v6+hdWrbJ+tYXrb8Z2Wfg2e9hE5/bkXvPyuv6wQS+Baj96xo/1mhxXkT/TD/UeCDXSIcfFrjwvnTJyc742OJOBD7cC3U3j+dIIX90uTHd9t8mzcSddJ+a3uFH/igfp/GwKvf5iBPSN8vXKua/EoptlEZr160GKGSLj5xeVhaK+jQiCSVXcgyEnyiY0gU5+NRxc7po02ijW/+8yVdFZnKjJmyiI1f//aoKgshbD2QKMg6ueR2k/Pf6zTiDYPKhvS+f7JEsY2jE1TCOBhR/9MP4qL9SzeTYVl1h0jBdbtBsj5tmhtXfu1zq8BsxNrX/uiZ2Mv/569bEisa4vrHcOawrfqafxIw7z3g5zvo7T3t6DD4tNsfwqa87ZTXVPtB+e8rf17F3iA2R15bxZQfFxPonb6RV8B7u+e352c77eZYNqOI6A6+wwsY93Ow2fJ8z109OGlbLvnDgwHvCKf5nz7ruMcgIU79A1X9wz2+PbzzoK7nQdD6YeMAjZVIr1aakTXddVIaNla3LXEoIFAqbxRTtbCVW/pIGttiMqdIuaxL3Na6VixI5ZAmK1BnWDz+eE6UmWs62boUUhLFcGho41uGCO8sKrYWV5QSGbPcaSOAmR2fo7/I8PCUKTGHYUVW3PFsPJZ0k5NnLYF8Eg9XWSQUdsc1TPSSM3oCkFobW0pLTJGpICtBJ6uRvBtNx+K9xyWBsMXVcMEC3sZjWLh7nqYghqfRm3vGSQiYiQW0ikVh0AszRALBK2DEt0khEpzUIyayy/sgkfNBgtt51SNC9QApE88C+rLz3HbL026LvdnpdrNYSCUkAZ3Gp+X9btjfoPZKqr/37PH3wWR3nzb2T1X0DxDvcxYoQh9W4CWJq27k+P2u066mYiMhBZNi4MGGNplTtXSYqq2eQoyR5/bec7GrByeOaqzsGIKWSmVlGm8LySgEdtFJFZtqidRsM7omBOqpiQsfPZWTS8HdxzNKquQaiWkVz48q0dLor3702SuHDDrfcKTcPCCyjcU0s4OCEDIxeraazktS3K+VBkL0DPj5UXzOF2HBAHjtyjAR2BIIKGia/vbU4LI+uLx/Rexf2e6fxGjzs6TA+YDJC5IgS3uQKrrIDygK1wzMD1VSfzohScqOphJFMZWBAmy+ei2YGv5xjgPv8uqVDU95/NSVSBeYfgbWQ5a8dvkbrdQh3yBfYCl67Uq+xZ1n6MGbly6cOX3q5IljhxfnJtvN0UY5l4y7IV1Fj7JHgxwE+KS0v3Oa2z94c0BggOiY9kao9ybj+cGB4tYrdtqk/nHr3L3TT/n9Oc2Mt01Bdp9Zi8Yspnazlu1Sa+7y7VjqS7FC2KSRxOkHIpRpQlYJEKmVBpAfcYUz709NR/99vhKR1J1MlGqd7PJWYKH6t6lOUtdjeiD/wV+IjY5aglxypEOLsfmOReYFxUkMaxI2Rbnb3NAERiw9c/FSBABE0ons5DHDbGMvynfU86lk1xS0ymZs1iDcUjON+N6bIlgKiKqZYMSdnQx5exQ8If8Xut7//y6C//9dxida4Sz8vY7r1/lX367+enYtbud/8dzmX9c9O/ElCKhvw+/9P8BfrVgAAAB42q1Uy07bQBS9DiGiqUCwYVGp6ogFJZVxYmBDQEg8FAklAkEQYkeHZBIPOHZkTxJoP6E/UHVT9RO67kf0L9ov6L7H40GQAo1o8cieM9f3nnvmzoOIZq0psih9avTJYItmrOcGZyhrvTZ4jOatdwZnEfvd4HF6lZk3OEezGWXwpLWS/WXwFL3IvTV4mmZynw2eoWzuG5it7DOMPuosCbZojn4anKEJ66XBY1SzbIOzZFtfDB6nDeuHwTmyMxWDJzNe5oPBU7SSe2PwNM3l3hs8QxO5r7RNIXXpiiKS1CaPFDFaoAYV0C9RCW2VFjVy8TLaIUGx9g0wqsNTwhKgF2TDsquxQ/mRzC6tAFXxh2uuTfzj1ARPB1G0HXavItn2FFtoFNhSqbS6uFRyS2xHxLIdsHpDiqAhbLYbNJz8n87uCqt6PGCbDd4UHbBVQX0E6hM6hTBOvhYVAXUhQCI1VfmRODnd5r5sR7zrSZi2MAUfkmgr9PGtYBhgHkkfIVzomTi6LmU9l1FJFm8oK2GgKmHUFmzJKbEyu5N+MU36KNKHSI5BEOl1C3WtXah2aQ1IobVA1kMfasLArFRfey1jvehYRLEMA+Y67hpTqsV7KvRkgGr3XWe58EQiH7cV7UdsxoRnnQa6OdheHNwenaO/xDhdzA3k+d9NO5znwnjxIZ/b+WxkHCBToobRoZ5NslB9fJuwXG84Rntg6OgNN7rUyeHLwycZxUMsdaAW0ADekWZLPXwdl1QuNpl7wE2thWl1Qkfv4rpktI9MQs/+hrk2xJDU/v4t5wwpG87LoKqPV8LO6QzfxHZTH64zbtKBxgpHLq9XSEFPmYpoMdiSlevCFiNXrLmuK16E8gqUPnS12PfeLWxhfTAYOB2uvHN+6eDEbhRG3Tcm5gImnlrSODs/kMpjhyIWUV80WXIHsD3eEXdPv5PPH3kyTl3qYUsNeCQYDL5siCBGcC9oiogpT7D6bo3td0WQOtdSB5vdOrVOSmZiGe9z6fMzXzCth7PK5gHjqpz3lOqWi8W4Ecmuip1Y+onw4n4FVfunUv+N8Cnu5N8u6YyNAAB42m2MSQ6CQBQF6zcaD4CKCEsHUJQWnIcFCfRd2LDzBB4cWsPSSl5qU3kofrQfMv6R2AkKB5cxE6Z4zPCZExCyYMmKNRExG7a23rEnRXOwfzlHTpy5cOXGnQdPXqLEkYEMR++m1rrQX1fGlL2r3qYDQa0RMgABAAH//wAPAAAAAQAAAADMPaLPAAAAAMb5Mk8AAAAA1pFLFA==
d09GRgABAAAAAC5cAA8AAAAAShAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAuQAAAABwAAAAcacggM09TLzIAAAHMAAAAUgAAAGBFh1ihY21hcAAAArgAAACGAAABYvbYsmpjdnQgAAAJaAAAABsAAAAqAH0KVWZwZ20AAANAAAAFpwAAC5fYFNvwZ2FzcAAALjgAAAAIAAAACAAAABBnbHlmAAAJ4AAAILUAADC8kQDqg2hlYWQAAAFYAAAAMwAAADYQqNlmaGhlYQAAAYwAAAAgAAAAJAfFAuZobXR4AAACIAAAAJgAAACwY9sExWxvY2EAAAmEAAAAWgAAAFoEtvgmbWF4cAAAAawAAAAgAAAAIAFjAeFuYW1lAAAqmAAAAykAAAf7kNzPkXBvc3QAAC3EAAAAdAAAAJrSViLzcHJlcAAACOgAAAB9AAAAio6I4MZ42mNgZGBgAOKtd2d+jue3+cogz/wCKMJwbaK3Eoz+/+i/BkshsyiQy8HABBIFAIbmDREAeNpjYGRgYBb9r8EQxbLx/6N/D1gKGYAiKEAHAJ4lBrEAAQAAACwAdAADAAAAAAACACIAMgB3AAAAmgE5AAAAAHjaY2BiSmScwMDKwMDUxbSHgYGhB0IzPmAwZGRiQAINDAzvBRjevIXxA9JcUxgcGBTe/2dW+G/BEMUsynBDgYGhP44ZJMu0GkgoMDACAA7EELgAAHjaY/jFYMQABIy+QOIXkP7CoA7EYUCsA8RaQCwDxEZQtjkQa4PYzHIMckwTGRSY+Bl4mJkZhJkEgPzzDEJMwQw6zL5AWvH/I6ZlDPpMv4BqNjEosGxkkGE2+f+UWYbBimkHgzCzIUMRcwBQXxxILYMSU9H/90ypDJLMdxgkmU4ymDDNYZBnusqgCnaTDgQzpDAwAADotyPmeNpjYGBgZoBgGQZGBhCIAfIYwXwWBgcgzcPAwcAEZCswWDJEMSx4////f6CoAoMBgyOQ9xfIffz/yv+z/zsEdKAmwAEjGwNciJEJSDAxoCmAWI0MWFjZ2Dk4ubh5eKECfPwCgkLCIqJi4hKSUtIysnLyCopKyiqqauoM9AUaZOkCAIQzFdwAAHjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDYxMDJogRibuVkYOSAsQSYwi91pFzMDUJoTyOZw2sXgAGEzM7hsVGHsCIzY4NARsZE5xWWjGoi3i6OBgZHFoSM5JAKkJBIINvOyMPJo7WD837qBpXcjE1Afa4oLAGgRJKMAAAB42mNgwAApQOjK4Mp08P8rJlEGBhgNAFF6BtkAAAAAFgAWABYAFgBkAMIBQAHgAmAC8AOOBAAEkgUeBgAG8gdoB+QIhAmECiQLJgvIDGQNLg3IDo4PMA+0EEQRDBHsEowTLhQwFKoVXBY0FvIYKBgoGDwYUBheAAB42pV7eXAk13nfe69fv76POXvu+wJmBgPMiRuDXWBxLoDdBRcLYskld5fkklxCu0tT4lEiJdGSTNMqU1IkU7JpK5Js2VKVRFtWpeJEieiSYzlyFEeuipw4KUdOfISsSlxOYid/mJvvdc8AkCKlaAyAxXS/19PvO37f7/e9XkRQEyH0LRJCApKQ/DVGMSLj1Zav5Su3fPnmJ683myT0d2818a8jgsp338S/j7+JFFRGI/2SiJGACUXkGqIUHyCMTbyJUTYd9NsWo0jBCmPBaqAZDgXzuU6767THhHyulM8xCV5JHAw74VZzXpjDf3370e/+4fXvC7ozkqYqSU0osoidkUA6W3N0gr/59HveeuvWC98t1ppRH04EfQ11bfzUaZ8UjE/XqzpCGF2EX1/Ev4PGUKff1DDCY6NIEFEZE1FYh/P4DixUJEi8RjEhwmUkCLawWS78RLmQYyxWDXR7rW4PXq2mEwo67p3BfTO43xz/BbffavLzc5hJ+fJFSiKjkXZFpaJMKPP1IzLVAg+uPxDQqBzp+2QBO+sxCX+cCliUIoy98Q0iEZH5bIkQyfYxkTLy2i+oRIJ7q8G9vwH3fhrN92dmGBFpDsNNriOREiqSW4hgSvAhLICKiF4DQwsH3v2fWpyeHCllUrEwLCJUDfCbhFsPBSWTSiaRTBxs8XXNY36cSUEJllIe78Byeu5qO21wh8T4FJYr9R5f371tgk+DgXI4xgI6kR+78aQiyZQZuijECfvayw24M/yrfauzvdhJEdGJVmJ4a3pubo75Q8yX9DuaLigM03lCtJRPJNIHCIa3mNgWEW5X9XpjvJfi5wLRGKx99G4Ffwtiahed62+VMRUW4ONh6VQgAuVLRwJBhxI4UEBgAhEJVBTABIzhPTAEu4wYZjsYbZ/tdeq1UsEJGhraxbsyRJ7jetAaxBlfbLlULlUxX32z22uCWTptWH4Ku6uHo/PYDQBuQJjnpLAzsCaWIAjKPApuRLMxvxhXRxvJSMeOjbGREmN0UWBqqrg/3YzEM+MZQVlu+awL7XlfekUFf5N3hwkxrizbwadmw1kpHwllRSwExKCVuz6VG5cJ03xEwsxab16rSdGok0lFLX1kWhPylX4xN58WMXyVH5RDYXn+Hp1sZYvJDIQDWCdxdx5/D/8BmkLzaLO/NpMiAsnnCBYMMNnUxDiiDNH1EBbwGoJTdyBp4YMQe0CRiSDgAwoXtvHm9PT0/PS8b6kU8o9OnlNZour0WtO425ynC7jDg6Y0hxcwt88MdnytsBOCNPASZQbDOynPAylf7vnAcG+wJDUkVZQgerHw/MNJQvSVlVeoEAiwPSoIdA8TzV/0U0HSps9c9Wns4ebs4acZXyUhhH4IiyQQ8F29+ruUsLevU5IjdPE0USA8aAYSiL2Jx5d2X+V534T4+QbkzgY639+eqEO2tzHBsEpZ4EFE70DyyJjIt5CMsIwOAehEJojXEEOYMHwNIUlCe2BK6QAQUNoulcv5Qj1XKSksWXWCsEg3dnikgA14rnhxAN8tN1Q8VGg1k5ifySVx9yiETAxHxnDZzcpfSoYkcWQnHh1JWcFYfqcsWT7IJAZhLiytlSOVnEKVsx9o2DjqL5T2e+OZ+PXZsDO5TpOxSKrmxImypIW2z8wshKKnFUa/kNzRuhgnRGZRv3Eg33MxJPtWZnZnO7UZ0b5nLplN8/gYBcz+FvkUaqNV9GhfTWOBQvKIZH3jdXXnUj8H+QRmugEjIeMAWwAkGRIfRJBfA0SP9/PeIHTr/zNqv6+Wu6P5kTpYKF4NcMDhsQEgL7loz63m5o9rnaAHqb3uAm57VoVXD1LThFSEtBtYvFz6WWeq2qpMJEOi3qx27EjAWq/NbC51J19QEhEnaaqW6AsmfNHZdJy+xBy13tKVTnYkETJFA18vVaK56YlpvxOcadc1Kpin7vulm5+tF2/GsqmwY6oUC6omBRa6jwew9NDKxUK6GgvNry1VziAeWz2IrT/D/xpsd6Z/OhQEXBIworkYERCvKQTzbIIYQ8ItgOPbiFBK9hDE7wEC4N7GaKyWTfttTUFt3OalsAd51IY1tyCJwjx5vNRxDcQhxw0tD5e7uTzzTmwA8uYwFUVRl4rlV5+lwsqa0FIFopZHVUx3k3MNXDn/qihr8PF/QyT6O4RiiZpwYyR7/1XxwkcKqwVaLouRT358/PwcgepBF0KAqvAloOrdtyA+Po1G0SzaQe3+xGorp4miQPA6lBsMSyXXAKuEoZ/n52rVuZ35nepsbTbqZN2qc1R0mBR2MZN7nQe/63HuZO579+8c48tOY6/2QHIITQ+Wx3AD5zw7hJ9tbixfNXEkOqublbzfJ9qH21tPmKSSbSlW3Iio/t8c24zIy5Nq2ycTdbE2eyGtr5l5WRadKVu8SG40z0wxf61YKMpKLJcrl3Xb198935fD/bFyQlR9RiScL61Ot6qZmFIvSNm6L+6XSxN/97mV8XJObyhhUfSPzIatqW0vhyr49wBjOmgdLfUXFywiMTAPRUyi7JqMIVYIAigBdkHEKwAow/KM0dKpqd5EowCUSFclhjq4owwLE3e3Bx9z+Dg/BiWIm7TFTQmVSRrwjwBPFDdBTtSz90ASGCpT4qOna2VW3bTNhbFm2OrGywViUtEkm5c0ttafmprdTn0nmB9JRHQs2PF2Od7waxPpkGMazF6ceZ+kLBF9enZvtp7smSGM1fffX2nd+IfVwkwnmsL/zIrFFlfK+kxsNNF4+Fou6tae1N3vCC3yR2gJXUDf2Xi9DHhirC4nBZmMFomIyXrce68M3+9vvB6GQTWoRLLAMZkXb4RvKYDMDMnsOlQjKE/SFTCfsYFE0RQ3496FR4AHCADmMrnz42d5E/qNwVgFxsoKU+QbwylAXRlSfnjG/n7fvHB+pnCmMlYCG6uA/D2O2R4QdXkAt3iYujRKcu2fIvCLOyrETuIbvDr5sve+VIQ38KeJLdyCK6TSBiTtSEihxc2fP/TJUMfklmNjA5BKErHo13KWjak+Eg/5g1mLKiYj+MUXjbx1uZfvklHKtFP3iFGVYF19o5roBkIJYj/+77+fg5SX7Yz9kc++tjUnJoKCJjHbhEOOyViE5aYbAcCtQNv/3s7frP2LudCHfkou2ZRS5GJc5u6b5FXyBnoSvdYPzGJMq0AVdhaAdmWhalIoEw5Yv4F46cUc53ghOORiQZZuKCqgCD0QMaXgLlkmlxnUb4i5eH/8R8xAknzrx07Z78cxun3rkYeuPnj53jNLM1PjY5m034eexE9qkDI4N6SsPF84YnhFw3uZR6ehbPTacCQ3TCXuI8ihYO+4LrMBuTtB7HpewfKy0aWJoFLwhJE2axX5bDwlhWadYKvl842XTKdkGmMpdSwyHoca4I9b/jS7KimCyimucuW9cvSqIxDFGdsxjN6SFvn8g4HEZtMkdMqRzNH+Vqsi+uu1vpjDFzVfSLEskozFRiXTHBGZeTaSv+8TvYV9y3J0Gr73+hu/JVmUCqqBdX9QnAAKp7MbsqA+4sdbqk9Vi+lujYn+C1Pp7OodQ2iasq9gjo6NLui21Y7FBO5j/e5fkBD4eAqd7vcjXEsAeMGVqOsdgPhDhl1tdAjFy827YzXXbderuYzjlxmawlMSeKLYHFIbT0UMrOwZ9siex9rChXS3oOPvW8Hmp1ZPNTZ95fs6H15mCglvEqlsJKK2pFGiRUwxGm/UN7uN89vrLaPxJU2Nnz5XnPzQ9KlXH+guSVC65qk9uhqNylSm4dqIz3QCofLTNx86uHU2mOKYFIBfb5MvoXFQU2P9KuEaFSqZIALvuwUxyWUE6AdRJAewWJtslqqb1Yu2KwG5Ru3AclonChp/DVa6QLqBbn48D2t0v0WXunhSwdOOnaJfCL/+eDIVfvCwfU3JvPzSF9OXzlLJDkY1+UpUEIT+mgH3oNXJA49vXjOs/JZZfPqBTyZF/Mc6UYXlGxIOpOefyY28fOMRBxATct4MyDT4V1iI0fwogRCLnnlqMkesK9/+Zk5obH0yEvLyOAV53AYfL6Pn+yrgN5nCIuMsz3ABFwo5wTcQo6A7RTcnmQA8jhB0ANNdn3MCLJkS5G7dGw7R8U7G7/e1Yr5cKJXKKzLohsCgiDVPsmBuPldqueXfaR6Z9ig2WsOo8oLqT7YzxZ9eA4m0F5Ai2jjIZvnCvRmjWlmIWKlaKbFTMM/OneuqzaBtt37x7PLVUO0Ofqyy1Kz1tiQ8YpjxohnVJNUy60uRxHgyJuiqmRKwkd7LRcamt+yUJoeXdlcmi7XrS9x+/rv/SZiDuLmAg30tABgYoVx6rnsVa5zHEcDYDaTIkqxIt8AeWJSpeE1TyYAcuXB2ZMSN10swr300T2QyE4+nYz7PjURgEWDjB39wbhPmdgZz6a2/1+T+9N9nHmj7vcFsWdreh0oYBP9eQOdWV5yur3SmUHx3Vod6yMWN59dp0m2C/Au7HL7TBajMS543g5zNhj1oyJ/AAtehPKGGYqk3T9p5bFQytmifb+FYtXMm+z15VJiN2lj13biK5UBKJ889p3B6PhHQ6W8KK6POUp6FtjNUS5eAn/pzlkJpqHihQVR2hjyc06iernAxK8diI5YGdIPizNZ9JRB5VPH54hp7fSFVl3BflhQtK1CtoIost/uPf0sbjRPeg7n7Etkj30CX0Kn+wvYiYVIKeDJZB44HywDmwAkDcnswAu/BcNwknOuJB5ALhrRZHR0Zna6Uc24OBI9W6gW2RxE4PeC2aHHi757vHHGH4+bDCdY3ONjxNBLY85XVlVJuOkc1cTJixkbHlm/HyhuzwCHSBVmbWZEdXyHrF8XV837/Sm3KSP7qe+rjo1KlJOJeKFOwDDNJsBqZ35jonqV4fuchp7Sj5H1FTb3yqc07SUlIaiJPEzHlL+/WIOPbBqn1Hqu33v2VlI6laITK8YNQStUs/4QmMFsP5PKf2kNe/vyBkIf8eQz98cbrOQhffxyreAb07RSmbA2LlAId/KGDEhzc9xhGCSGVqIgAqyMyZqD7IUolmAaEWlXxgQCuNVSeGzkX0Aaj4TBSEVavnZwminQPUSoeuPO34/3WcDiSANAk8UdPk4bTEJ8FqWBfv3r/5dVypZYo9Yq2BmkQyA1Y4KA6QMhzD3G4G3jZJKHgwPfdozo5h7s9KBL5AVfhjp0fSKCBSOq65cWDSP4qBuK1T1yeMCXFSrznaSl0WtZqgYAyWS1rwDmKcp5p8WJIc24vBVlFLQq+dx1K8UKQGWN+W9BYoSSNFQxKEsFAKkILY5PJWESSM1BlrGJ/J2cavsXbuziy/nXdimFNiHz8tZ+5roR0oSAGtLhITCU42iZ2Vb31MeBwkYMHepIdhQBI+u9/wQEBKVKixlUFY/vlnXzIVzMVqL347p9C7f0AxMA9aK1/pgejdAyVhLcxQb66KUR5CkFGUZHRa6ATYMKgDGO0uX5qttupldOJkF9T0T34Hi6VitxKnj29CsG/j0Cl2xpQwgUwKhh2yAeHbHAae0rbxSJpeNrCeP1xwAoiqimo2Nq5VrD8K78tSEY8E9gIRAKRXDiYKgl9oxwWZsOqLGrJQoBGHpm5n7S2iz+nCuAeaWHBcpxk0kqNysvgEizrWlLQRTk3o/NuHZU0IyqRSG3yw/uzByPwaaJKI5YWp5qkbFQiFDNGmR4Djh/ozD31ZOViXeF51Lj7krACNjyDrn8NGDjFAwaeAMwmyOuIwsddEUB1igdQhEQDAejnhqfhCG9SiAiKNayQtyN4dSJ4e7/vg0w9g5bnZ9vNkXK9JLFwFQ8r9Akq7YqXgYV5DA9qtAdnC8dGhmFD+ifMK0TuhANmp5nMyHJwrPr0TCDU2Q5YkVQ6SMjZuWJqIUHMkd2+urTuXC6A3gmlkkFRDo7+8qXgIfmSAgzNnzbGP3Hx+UJkodNeUYSxUiHTDEYFYhBVDs8uhUYvsfYX/mhBwczZ1xlc285lVh5yo8jVMf8B+E8B3Y/e37cqUULoaaBAPjC8ADZMgQ0rRzZkRCSMwwAnNFzAD1gvMEyv5TV2bG6O9BC0cH8uExJ+1IT9vt4oFsZCkWo1yxuHuHsM+0cEiL/KJ6SJmCv1PI7sRrXb+OIlsnuSDrmtkXL7qD64vWpeyG2mx6vjKSx3gpbaqhYMgwbjtidF8Guaim2dCbXPjYcMJ/NAUdNHZxSWCfhp4IUdQ2g3KjsizlS/vlFLJ7Mp8s+JmZ585MZnfnKL+FI6jb/46eevnpMUcyg6nlIUy7Cw9uh4KKgXVq5/zi/mMz7HkpXJs9jenPq9KUjmfLn9wZSPpBOx1LG2fAV8soV2+md59zUFBL4JyS8AIwe+gWSwp4xlAfMtDqC7nKFztBCvDRmNscFAKZp0c2vz9GK+UC7mRgsKi1dx+wRYunKOtxuHOzgnhF251MDHHvBQ10OOptun8tyD/5b2EmZjJJb0+cISi/UOLjdMQ5bjxagl2I/NWk4qkt/v1i3VbvotwpxCMTRWy1b3HiE6nYOLGL4GiD9JTMhnjNF3rdxeGm1oCo5EiBF2/BGV6OMXDYGKjiVgxY5phOlOYe/cVy4t1i8quGX69HhE94Vh9Ym736G3wWY3eTd/ukRENJEC+c5R1O0vcUshvhnkCplD3n58kknEDUhBMHnPaf/S5vrpU/GIz9I1dBPf5Fsh2AtHwuk3z+UTrGTYmO0AiHo4eQQBblfuKNkHmOA1dodafEBYPHIH7wPwQzc1YER1RlUmh2NmyAgXk6IaswwQFXKWiCysfGEre69EGXh5JGaPGkZhqlMpZgU51mMkJUuiGCjrcn55McrUaEEkUJBzbdMKiWQr8NxfpYCYveH4rX797f/zwRW/QW3d8GtagGHLqKTiUlz8ha8roOjU375Q2KOA60tnxz/Tm3z1Ey8v9BSctGSplgJUA6h0vvnrv5FRE1jQ0v/kNyZKU1vBF3GygL3eyN0/u/sd4Q+FELrIOSHUM1JUiCByVwD3E0EeceODz3hv6xrDJ32wtrK40KgnYiEfuogvSp4HXCu5vU83Dt0mn9sHZMdqqNyG317vFPIegve4wXTUPT82P2jqPUsQJ5a7bTGYLo41nPZFYguGnFD83UKciv5KrwsQJZWhjOljY5WxkkzE7HSzEYtkJv26DD4IlUwplD0XpVSukDckIfTlr/2DfWX72Q9+/icjbQWrZjWlCH5TUXrv++6/MfgGDSZWgvnXH7z59LMhLKS/+IVX6pFcxF/XPaOaV//iTzKyGXExYPrum4Li6tKZ/mQCLIs5H+CbeGA+ig4IG8bucc9hbqbdHK3Eo5qClvGyZ7wTu3Bj+KgV1BwGMj81iG2PMQ93mT357g0ne5fujeRev720PFVfOIP1xurL8RCRwGBK8vyhji82z0x2Z647obXNUMRXTStaOmuIVE23dm4GyRvPXt9Yf+JrI9Fw8vl7M8qNcy/s+kSsU+bzjf/KDSXzM4vFWPK960tL+0/ovup6UEtCpDvrU5f9XF8E7v4u+Y9Q18+i6X4vBGWHug12b/MAAhziiHHrcGlBiLAHBuHUSCDb604lXP+k7W6rDDsUfGcu7MmwYZtiSIs8Oupqhio+qj88c/2BedIpScP2hderIKlqqZoi75lzZIkonUh0/he3w5TEK9HdpxKBwtxLSRK7NKKp444oG+/KYb4vO2xiHDctsDwTiQNymqcXk6H2vACMWk34MVuaKWbHs5Paf/vbJ21fHPRyFgewJZUSnCEN+hlerbhz971CAOLkAH2Y629MZhtEkrn+HnX7j9yGBOqELEiCzLUsrxy8kQNKll3hsuwAuS3FgQqe+H9mSKIgiYc/biLiNbxUGhsbKQYqObeGH7evBsKVN3uPGl8ntop58Fl4iIBHzP+4KexVHyD4g9Qnn7t+cPnsckSulxbq444ZxHriA+1a5sG93mfOpdKnOw9g4/n9xSVDWH3glBOSRDlZCgr2zWnbKVUbD1+eyBl+K5hQi3vtdrl1KTGCP/Pgc2eX70vmt+ugCrCh6KmyXX/uqVur10wxv/jRjHrzq7M1hwmRrC9sKkmRGKI6cVYVZLWYYVTXjKACmkjXgtFL3V3kxuubwjL5IrqOPt3XoORIUyHiNZR4P6QL9ZtJiAGTEiUGVuW2hWokEEkgh4hQidBDBUvSoDMie0U83m+/k4kIw1SEpWuDafv90H2XL5xfW1mYneyN1UqFVGLSVoG9HuUDsPzm0U59eFiOBtV+UOqOOvSlcq4zT3rNwQMQbhPvmKmVejxTOifTxPfM+eb53b0bxbpgvnCBCL74iC+S8qdt3U74LX9q+b54UqOltC+bjvqCNomXHBoQlsc6ufbPOYSkHgiLwNIklWhPx8QfTJ7eQdC0ookpw9p8OkvFaP9BJ2/ZVtCSsW5k1hyGlVZyZyvuE0wt6oesUSoTy2PhPDat//W/e5ovpYhCDBdAEf5QPvmBe30A8sntZ2zCJwLcDDMCCBaQMMghjA7YkMu6j8S4tWthbqIxUg4FVAVdGtauIcq4WOpu3B018050So+7PW5XlLDQDzx5US4dt4zdHiv+rwv3iqCuSgqVwNPmmdy9UbEY763lpwS9GY89/v53L4Rq1VZYtGJAv0EpPfT+skH8j606EyohSqL43IogcIHwjfqEEQ5oSVDytgHCQA+s+YzRfDSWSzXmDXOmHfWtnY8X5mpVQVPEsCZothONnDofTfulfjvnL9ZZwC9X8mOLDPP9PJS7+0+FRfKv0Cz62b5aA/vF3edSPDGW4juj2FUH5LbbD+XtiYEcw7xJMepJtuNRri7jMphvnruSrQACDt35oTFwlT1+FbfhIWLehTBhwiyaGZ2plbMSiw61hcvUciHv34H1PeMSbt/BVuEAhoZ4Rf58POaz7ZmE88hVSUrqHTFWDHQ0w5ILQTI9RYlCrj1hWEFBqgcN2Yqn7/S0t8iXcooZDOQY0Jx47CfG/q3/vo2Sn2qieX5VfvNPZTA/FSsBUTLSTLQLpdopzkeBP/33u/+FfIX3A7C98boCFrGyWMJTmKDxKggwYX2wtzc4TI8O/8ARBkf2970LFHkTDrDhloxdHnwI1uO64dBtD21wy3lbhtxL1RODKXwDWeamPkQ/egq/kxwclPAd/iTIHT6L+4fwZ0hEcmc4sl/6cYMYuYMYMzeGu4r7fQejC+dOL3ZajXomHfRL4rCt4TaSTrDwYRt8wOoggQZeDR5vM3pVvH284XhMhAZbLVHf6enZTtzKz1lqvuDkVr+6EDaSVB0L+qlst+bCwPHUlGWL9wX94WhDYLcfX56yTZ9cKGuBhTFL0axwMEmW9Eg+086fqez89HQ2V22Hx//yvaOF86IdJZqdLj/7Py8sWxIVTTNdYpHwyq9hKn1suQoJqS6MZUdPvfJoIxW0oaTwPIre/X3yMYiBSdCAkEcEcCiJ0arnoSgSeD3mrSHe1TgcphNPjwB/OuEOnBTuuI9awLlH9/vqZLdacUI5OnzabQD6re6Q95VzHk12t/dOZob3QAlH++h4fKa6r8K9xAOPvxKk9Yw/bFF9rEvDH928fl+YUIMo1nR6xGfZ5Bk7V7nw9vYjihH2XflqX9NTVRIJNRVCl9pa4sUvX7q0o+IIM6tfnvv2Xl0V3TV/m6qw5nvR/f+oX9AFvuE2XDCXMoRy7nsbwgRBmnP+y8Mqc/IcPwyn99zTvCOJxG2Agnsvnd3stBv1VOL4eT8PgC2gfcKwoPWGj9+k8Yn4aJ/YARXAKgNuAqpQOOqYddpjBAw0kVwsh6yYDVSfKRp7Yn8RpJtYD+qCGF62sJDqPRmn6bgeshiz9TaJfuMwYjEsyFN+QaCf/s9hxWSy4TNS0xWLPOPPtCKVnTvXH/MTDCGmfPTn3yULTBbtJJM2vv/Xfpo7+9krhp0sNusKYZFdv/35t9/+uKWa4uqff2+dsbf/3dv/I44dyx+98sz9k/fvjoONgUgIZbDxo+in+naUEkRGAyCWz7rdhUH+qwpoFR5at8CGmG9v8t4CHWS+BOSCHcgYVsA4HMNRCDM+B/FnDDg2gz/u/MCw/T4vr4+iG5cubm/NzXTbE+PZdCJezGq8lzZs7Xi25xvMTnPgkpz7/OjR5vPxMxy9Zvgom6E6cut7eMBHh0/siPHreJI8j5dylQDWr06nAmFVUnhS1T+mk6g1k4zGA3Z29aWorIpGWZTTBU3GWra5HrLSQcYbt1h6/lAmCQFYsTbuRBMjscLcR+qyrCaIRsjDZaJTYaRp+yqJ59UQY4n74tTIUN0eycZTkXBiZteC2vSMf1JOE0kpBouSvb6hMmW+cmEtRI0CBJbqi2fjpZFYrHExjl/szWs8t1H67m3yL8Ffq+jXNl4fA++oZ8A1BhYRf0wE3pDBm8F+QAwcQMEBbja4InGwB4A4VvMLZE6OENyqvcdHeJoSo21AasbFOeE7vyKF7DocDIWwcIdyhYUJL7IBiKhWvZaGNQJIr+JV6QRIO2FfkIWax3Sx0z75kN9JXdo9UuedAelpwMkL/mBrabd5kZDKyw0t7GTNgM6kTLQmJz76+OYrFSqH/bmJeESw1jRWPWcz6j+IjKhKgqwbWrCz/NTbf2msKvXXXsnZ8UgoGioxEsyfSWVuvnVz6xGGmb5YcarhJXCwcgqI6PXTtbfOBEWsDLhgESFyF2x/E0/1zRbcTxbISB+WLwzo/CaQcsokbkqQbpyO82ckIV0IEwGVddVQdYPvzCAVSOs1DUznpQQwR8uyN5BhoAPTBifZaFh9t97RNeEiEmZ7cEWA43uOPuFHXLV/7h1dEFkGMiz0Yy988prg9zJGj914+Pru+Z2t9bWlU3OzzYlGvVrOpKNOKGCZisQbaD6IhZYn4XCeU9gF3HL/9h4TGe44dI+3vdP4SHZYONgKezt6Ljtu4JPtyqGKPObPPP9bZuyXX46MN7SC/EzmoYgZHTl9NlHMq1IyFQ/4lNz75nFAqi8vhUI1M4CJ/+B6zGzopOBTiTrqi7xwR8zPPrLbCmVV1ogxXaaU+jMLB2qu9/CNRioWUnXnIx+MYCY7Fs0+nraxqjnpUCBENKmoN1ZErCkYhzB/dDn8xCMJTMJMsOMAHwxIrPPsVYpVWaiNBLJQOkRrsrIdIKqm6rwPzwOuBqrR+/8Eovf/CSY6rVALfq57X+98HObjYBQfx74KgOGN4ef+LwrpXYkAAAB42q1UwU7bQBAdBwhqKiJyqUSlqitOREqcONADASFFoEhREIgEIW5oSTbxQmJH9iaBey/9gEpVL/2EHvoJ/YZ+QsVv9Hm9FAKUCIpX9r4dz7yZnZldInpjpcmi+NmlrwZblLFeG5ygeStv8AxlrU8Gz9KSdWXwHL1PVAxO0lLis8EL1trcksFpepv8aPAiZZI/Dc7QfPI3mK3ZV1h90V4ibNEyXRmcoLT1zuAZalgfDJ6lkvXD4DnaSlgGJ6mU4AYvJNzEd4PTtJbcM3iRlpPfDM5QOvmLtsmnAV1SQJK65JIiRivUoizmEhUx1imvkYOX0Q4JCrWuh1UTmhISD7OgHCQ1jW1KTWV2aA2ojj9cc1Xwj1MbPH1Y0bY/uAxk11VspZVlpWJxPV8qOkW2I0LZ9VizJYXXEjlW81p26q6ys8bqLvdYpcXbog+2OqgPQX1MJwiMU08HFQANEICEa6rzQ3F8ss17shvwgSshasCiS0Noc+hSQ3SHPQ5QxdY8bCiaA2gIvSVbJ6isNzXNW/4ud9X3VNUPuoKV7CIrs3vR5P96fwb7I2xH0Ax0SX1dBgf7cGgDSGF0YD/E7GtmzxRxpLVWUUo6EkEofY85trPBlOrwofJd6aEQI8dezb50tE9r19wTGjbi2aSxHjZakIPbpTPMF1jHdd6Cn/9t7Ek/50aLT+jc9peDxzE8RdEwnalQV2yEbxuS615ktAeGvu7F6TmPDmgKOtEqnGBpAnWAxroWEVus0dN2UeZC43kI3NaxMB2d0NY1XKmM9uFJ6N3fMO9OMES5f7j37InIJv0yRDXCK3WvnOIbyW7yw7XHCh1orHAaU7pCCvGUqYARgi2q3ACyEL5CzXWd8QIiryLSf10/uQfvH7ayOR6P7T5X7hm/sHGMt7LT7iRjcw4RjyWxXS41lsplDRGKYCTaLLoY2B7vi/tXgp1KHboyjFWafkeNeSAYBD3ZEl4I46HXFgFTrmDN2i7bHwgvVt6NFXLs1vG1YzJjy/iIyx4/7Qmm4+GsWjlgXJVTrlKDcqEQtgI5UKEdyl4UeGG/iqw9K9WPEb7ovf0HmDGZxgAAAHjabYxJDoJAFAXrNxoPgIoISwdQlBachwUJ9F3YsPMEHhxaw9JKXmpTeSh+tB8y/pHYCQoHlzETpnjM8JkTELJgyYo1ETEbtrbesSdFc7B/OUdOnLlw5cadB09eosSRgQxH76bWutBfV8aUvavepgNBrREyAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsU
d09GRgABAAAAAFtcAA8AAAAAjIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABbQAAAABwAAAAcacggNE9TLzIAAAHMAAAAVwAAAGBG5WHDY21hcAAAA2AAAADjAAABmsJ3mQpjdnQgAAAKbAAAACgAAAA6AksPD2ZwZ20AAAREAAAFpwAAC5fYFNvwZ2FzcAAAWzgAAAAIAAAACAAAABBnbHlmAAALXAAAS/IAAHFwGhhu8GhlYWQAAAFYAAAAMwAAADYRF9kuaGhlYQAAAYwAAAAgAAAAJAgCBEdobXR4AAACJAAAATsAAAGI5LUOymxvY2EAAAqUAAAAxgAAAMZ//2QEbWF4cAAAAawAAAAgAAAAIAGnAnBuYW1lAABXUAAAAxoAAAeGo6WB23Bvc3QAAFpsAAAAzAAAAT4ykUR8cHJlcAAACewAAAB+AAAAipKM/Mp42mNgZGBgAGLZR+068fw2XxnkmV8ARRiuTfRWgtH/X/5XZLnB9ASojoOBCSQKAFYdDNsAeNpjYGRgYHryX5EhiuX6/5f/37DcYACKoIAkAMOPCE8AAQAAAGIA1gADAAAAAAACABwALAB3AAAArgFsAAAAAHjaY2BifMS0h4GVgYGpC0gzMPRAaMYHDIaMTEA+AwcDBDQwMLwXYHjzFsplCEhzTWFQYFB4/59Z4b8FQxTTE4b7CgwM/XHMQN2fmK4BlSgwMAIAZjYTQAB42i2QXSsDUBjH/8/zjLyzYYXYC8rLlBQ2uZHSMmMzkcyFWi3t3p0rUiTulCtfwPdwgZottq/gwp2bLTn+5NTv/HrOec6p5486ZsAlSW51eh8FfKPF8oiwTskjzsihxDFmx4jSR/Qcndc0xskEmSMREiDtpJtM/59PkUE4xEhUV+CXe/61gUFPD2JaRtzeELBOrGoJXrvDqmXQqNcI6qWrWS96zIchTwUDVkG/FdFmLwj9ucR3JWyan87Ax3/6PGX2pBG0KsL64L5EMEI6dB2ie0jR21LEjiadkyrScophzcCreexKAiZr7oP3YUkjZ7fo0is06AEKmnVOt7AjT5yv1b3LOSY1iWbNImo3mGdGTawX5dnVfnNkhrNkQRNYkguMyglGmcMy34XslbNV4JVP5h1hbw74ATA4UCQAeNpjYGBgZoBgGQZGBhCYAuQxgvksDBVAWopBACjCxaDEYM1gy2DPEM0Qx1DFsEBB8jHrY873////B6pRYFADyzkyxDIkAuUkHjM+5nj/Fyj5+P+D//f/3/t/9/+d/7f+b31gJxsuGyqQBLULB2BkY4ArYGQCEkzoCoBOZmEFMtjYOTi5uHl4+fgFBIWERUTFxCUkpaSBbpdlkJNXUFRSVlFVU9fQ1NLW0dXTNzA0MjYxNTO3YLC0YmCwtrG1s3dwdHJ2cXVz9/D08vbx9fMPCAwKDmGgLgiFs8LCidcFADwWMrgAeNqtVvlz00YUlnwkTkKOkoMW9VixcZraK5NSCAZMCJJlF9zDuVoJSivFTnof0DLD3+C/5sm0M/Q3/rR+b2WbQJJ2hmkmo/ft7qd995PJUIKMvcAPhWg9M2a2WjS2cy+gyxathtGh6O0FlCnGfxeMgtHpyH3LtskIyfBkvW+Yhhe5DpmKRHToUEaJrqDnbcqt3OuvmpOe3/G37we2tK1eIKjdDmzaDC1BVUbVMBRJSoq7tIqtwUrQGp+vMfN5OxAwohcLmmwHEXYEn00yWme0HllRGIYWmeUwlGS0g4MwdCirBO7JFWMYlPfaAeWlS2PShfkhmZFDOSVhl+gm+X1X8EmqnJ849zuULdnY90RP9HB3spYvwq2tIGpb8XYYyBCnmzsBjix2aqDZobyica/cNzJpaMawlK5EiKUbU2b/kMwO7qd8yaFxJdjIKa/zLGfsC76BNqOQKVFdG1lQ/fEpw/Pdkj0K9oR6OfiT6S1mGSZ48DgSfk/GnAgdKcPiaJKwYOTQSsoWZVxPVUyd8jot4y3DeuHa0ZfOKO1Qf2oy6we2Je2wZDs0rZJMxqduXHdoRoEoBJ3x7vLrANINaZpX21hNY+XQLK6Z0yERiEAHemnGi0QvEjSDoDk0p1q7QZLr1sNlmj6QTxx6Q7W2gtZOumnZ2J/X+2dVYsx6e0EyO4v8xS7NlrlIUbpucoYf03iQuYRMZIvtIOHgwVu3h/Sy2pIt8doQW+k5v4La550QnjRhfxO7L6fqlAQmhjEvES2PjI2+aZo6V/PKSIyMvxvQrHSFT1MoykkojlwRQf1fc3OmMWO4bi9Kzo6V6XHZuoAwLcC3+bJDiyoxWS4hzizPqSTL8k2V5Fi+pZI8y/MqGWNpqWSc5dsqKbB8RyUTLD9QokLmA4dKGjx0qKzBI4feVQZNl1/Dxvdg47u4W8BGljZsZHkBNrKUsJHlMmxkWYSNLFdgI8v3YSPLVdjIUilR06XmKKidi4THJng6HWgfxfVWUeSUyUEnXUQRN8UpmZBxVfIY+1cGSsmhtVF6zCW6WEry5qIfYAyxgx8ejczx40tKXNH2fgSe6R9Xgg47UTnvG0t/GvxX35DV5JK5CI8uw38YfLK9KOy46tAVVTlXc2j9v6gowg7oV5ESY6koKqLJzYtQ3un1mrKJbg8w1jEW0dHrprm4AP1VTJklNAj+NYUmvPJBryKFqPVw17UXx6KS3kE53AmWoIj7fXMreJoRWWE9zaxkz4cuz8ACpqnUbNlA93mvtlLEcygd9hkv6krKenEXxxkvtoAjnkGvvhPDJAxm2UAOJTQ04BeE1oL7TlAi02mXQ4Mj9nkUVP7YrbiRPSpqI/Bsp1PuhS6k/DrHQGAnvzKIgawhNDf0NhXQPEI0ZJOVcbZqOmTswCCixm5QETV8G9niwaZgW4YhHytidefo1zdN1EkVPMiM5DK+ObDAG6Ym4s/zqy4OU7mhpKhw1BoYzLWwklTMBTTgrdF2++j25svsEzm3FVXLJ17qKrpW7kExFwusPc5BWipUAdUbVdgwulxcEqVeQZOk19UxNDDDX6MUm/9X9bH5PF9qEiPkSL7tcGCjz8EY+t9g/205CMDAj5HLTbi8mDYnvu7ow/kKXUYvfnzK/h3MXHNhnq4A31V0FaLFUfMRV9HAp2wYp08UlyO1AD9VfcwZgM8ATAafq76pd9oAemeLOT7ANnMY7DCHwS5zGOwx5zbAF8xh8CVzGATMYRAyxwO4xxwG95nD4CvmMHjAnAbA18xh8A1zGETMYRAzxwXYZw6DDnMYdJnD4EDR9VGYD3lBG0DfanQL6DtdT1hsYvG9ohsj9g+80OwfNWL2Txox9WdFtRH1F15o6q8aMfU3jZj6UNHNEfURLzT1d42Y+odGTH2snk7kMsMfT26ZCgeUXW4/GX5TnH8AK3FNYwB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNkkwMmiBGJu5ORg5ICxRNjCL3WkXMwMDIwMnkM3htIvBAcJmZnDZqMLYERixwaEjYiNzistGNRBvF0cDAyOLQ0dySARISSQQbOblYOTR2sH4v3UDS+9GJqA+1hQXAHdZJMsAAHjaY2DAAEVACARMS/4/ZFrHeOP/o//6TKJA/jogfz3jfRgfACWTD2EAAAAWABYAFgAWAHwA5gIQAjQCbgKqAxYDVAOQA7QD3gQCBGQEwAU0BcoGNAa6B8wIJAi6CU4JpAoWClYLCAviDP4Npg5aDzgQIhEgEiAS2hOgFRwWNhgAGUIaBhucHIgeAh7IH6AgaiGWI0gkOCVgJgwmQiaEJqYnICeiJ/YoaijgKX4qPirGKygrgixELIotbC3sLkYu6i9ML9AwcDDYMUYxzDKIMyYzrjQ4NDg0cjS0NS41pDYONow3CjfqOII4ljiqOLgAAHjatL0JmBzZVSYa996IG/uWEZGR+xK5Z1bWkktl7ZVVUqlKpZJKaq2ltSX1ot7UarW63bR7t93YHmxsY2wwxpjVBryOt5mBj+U9mMfAe4OBYZlveMY2BsMAA7xvZh7zxu5650ZmlqTGZvsYS+7KyoyIjLjnnP/8/7nnXnGYa3Ec9yvY4wgnctLnKI84PNlo22270rYLrffd12ph75t/1kKf5jD3yO5/5f4af5qLcGnu0c9bIkYc2jz0KfXomb4Fl/EPcQjh8xzGLt5KHvqUPnzfe937tW95fF/n4LsRvpd9wm3t7Ox8IZXwvYBQr+F0ptstP+q5ooFFz0QdTNg7UZcWgvJ3xHIFGSPkR5GsFIxaIlmtJlMV/Fg5kxD8rCz8u/9N4BGi6Ae++TuxfLZVKHLwLAr6FPd1/AXO5LLcjc8TjAlmzyLDvUU5QvA5uK3wBrlzMCacj9idq3d+6t396bc7bWenbyIumXBskXImMgXqNpyW71ETFSrlbqc33Z72O+HjURMH3TK86VmmouuabYlUeaDqKyJSNU0TJRt/wZr9jv3oxPV0XBJw0hfFeOTBKwhNzb8RLDi2+1dkHf8r7jz3CPcC92d9fwVRcRtxwgENI/kmklAeEUkYPmaPEyjHCdc4GQZeRjc4qsBPyl3lRJE/x/E8PKAkkXPwWG5oKfZsdmjBwj/kdP/bnN5vfdszJY5giVwdOMKlvQuJbBCTAvfsG25cv3zp7D1HtmZ71XIuY5vceeG8CgOKKkG5EHjMQ6gX9aPtVm96GXUyiL0hgpdUyoOf5cGQ96a7g6FvDQ4wwXv8aBZNdzuVciUQg0Xkt8KrzCNa6sC1qefCIexE5MIHywiOgz8Fyk4nK7ncfsEStnmplE/6dj7La5qqe7M72wewNNbtTp19S0SYjG8ks4v9Sy8YdivZLboHppslMhmkurMUCeYJ7/63RKICee1yLV4sxwySVJZe++Yb74kuRgtnFso6wpTmLB1dQhhVxfvBvSTLUN0NGRGCpHSxcLKNeVc3Tu2PJDcm4zULrbcvjE1dyMeDgp100vcttXN4cqUZJBGJx+BqqPdXicZkpTWVIqZYOvbaR7afdWjh7OmeSwgfSSchDsEQR9FnuQ+FceJA0DK/5kK39gNMo4PA9FwTgwlg5I7GIwUUsWRF0/D7LLuo0EevIHrvI3CdV3cPoHP4K1yeo5+JIDTZQL1WGoWjF45s1PdcZqbKOBtZsM0SQtsqqkSXXLljZLJxgpXuVCqneaTsH8ZfIrLsxg781KELf/FYNpGSRJHoE+nV6YtvNf/l4/tPDe79od01dAD/ARfAdzrsO51OO8r+sO8bGb67jKZDh+iEFn0IPI+gYup4LZZ0yrWTKiKzfs0xHW88PYZ/W0FIcnvveeDVH7x2T7NlYknCnlt67NL3fte5x2cLkcH3VtEvIg9/lpvlKv1ib3pirF7IpW0dwlhniMlGcQcONNEWYJiHGSBU4HnhLuAGwG+ZJ8LtdNueAW64jFpZxO514KJUhBGCISt0p7vgqV2dJ4Ywaxv6QUWU9FTCJRkIdLwvgkXZOmBikZBkwxMN+YAoZXjEH0J/6WGIsowuSRWFikrUNmihrRLpNBrXZUUqq0hAOBLVqEGneHW2JBbntGn2XDO7nyBr+BQX48b6NXAhbkNXMVrnOIK4k4A/GBF8lY3ADhyMDrvlgsvT2MDSeQC3gm0iiKxC0IWHzNvo5+IIPcbz0ic+GYujL3yBFyR0AW+LH/qQrDjotX+vyD/6I4i9HIfLPb27wn0TcC3HWX09oWIOvpZ7KECQHXqD7DAwKvUGcR6OJwziOOqWn845qqA4WYqRMNXikYaMnIBl3KKLkRQvxGsZTScqLs7NRZAxZ1PT18kC0kJbTnN/TlaQA9CU6UNIgOlOh08ICQceEV5KnBTmKLBePsdQfVrU0HPoOSKIf64n2P2H13lw96+5v+AegMObhz6VB/xU2dvn4II2Sx7W7UufY4O3vfNZJ8IiDB6O5bmg/GB5rlyfLo/FgmCyEITXrO1u4jL+DU7jzL4mIm6DDUmVDQmKtAG/sgiJMNbI+johRBO817rx+DVkoP8dIIT/xisI/RrzV8zVd/8r9tB/4+LcONdm0bkxSNLqKN5dLrxFSGjo9PA9xG3vfK5cHMfs23qt2xF1F8r64KEGgHAIydNDg6CSi+orjbVY+VStlstvPaIhrB9cXFB4L1+bLOQ7zZamEu0h9BeSFq2tnWhNHplJmuqlDdHPqBc2F0pEjpyYGt+Jx3OFTClizj4Q2onDRfSnXJOb7DfHEGFxBv9B5BrLw7EwA50dUA3CpWOeaxlckzQH2ZiB2B4QzSPII36+u4C6PZYCmCMtos4A7ivlS+LXW4gKFFORP3oUodci6E1WTKIEy5G4NjMGjoG+IvHBgY13PcIDXGDsOD5VeYJFwQjedCJZKimCKJrmACvG4J7a6M+Ahx3pq0UVY24coghDjm6CBWJwCLAsfANuH54BWMp5lk8JmMNjbnKTme/mHe/vfP7+pbkgjDqWtWDwu+UJhiyMLoUGAgZFmTWKQDtcA4nMWoUuOwK1m+XSIVEReFl+Zl005teNaI1sHMKCKvAJlIkAruvow5XPJ04tnEqcQ9ulqYDwAEg6XZNQu5NI1WvkwAYWgGxgAY1NUYSi7YOJ0Fuyu8tYRV/n1rgH+2oA8Yt6iBfYc2bgOTMUjCTwnHB1xBTgaXk+ZA8R9rTJ2wfwHOHJpb3jgGH1HcTtX52fnZpwIxLl1tCaCGbttUJMh0EIIZOBfHvkp/DcjC3AMPgZFMLGgCR0Owx9Wd7vMoM3UPc9J27lohOuVh/nTT6P148agXQ4qwf2egIYI5HEtUuW9F1X4tnjh6qKqq4cfHgiWawtXtT+z6XlRjpK5BTRSQK1JKRNu+mpstMUMeZh1OYmYokL32HwJZcgRRGyB8oL7XnTK4NB9d0F3EV/yZW5HjfVHy8C0qJNFfLSRibK8BZ45g5z5UNDrEUu2upMFQJnjAfEgGiEZ/JcAlgoui2gywUIQI89M3tG5sx5sLfY7YRDA3/SqN2FdPvwZbAIEhG6psgneUnKGHMIy+DhP/uJT/o8IsjuviH7h+Def2BRitLd1/67XZTBw7MZw3nYIEQRPLnibfTSX/7yfzgYI9hZ+rEGz89YjzH7O7urQDm+ws0x+0cRR1oYCxyzf4LZnyNgYIEAB8Q4REWwvyCE9C/CM/vfPkDgeIG/tHccHth/ulMqpBKGBvafQ3Oh/QNmdpuFNqSeNApTg9cOQ+G2ycf5QiUYmZ1Z/U96PSHC/9ZvYt38yEcQPDY1egvPL07+i0e1yv3HsEB4FuGSZC0v7Dx64BeqCGTQMsZjYwjzROGLa3Vw2cX2oYefNXEdop8djVVdyj22s3Z4gLeTgLcF/AvcFLjqqb4pQ4hHXQibVcAVMmTnBTgOQEa4KqKhUhpxckoHpJqMFMm3OdR/3aH66w/1vu2hqX/4VVmeKMAhPIOhwQnf7lAGaLnXHUrBrmEwD85gqbA8PIQH6OPR1duHEkJPD69IyfZO+L++h7j+0nRnYrxcTCdNnZtCUxITBK2hhcUQtvccvbdnfoiHYaJiyNCaJuOIHTbIAcNkhf5I7ClIEDVF96x0MrrY3taQvn9Nya42N5fHbi3OXk1lTm4/83asFNXjy/W+gtSlYmN8FUz6CyImq2B7QRQEarQOv09UBami4kz35MHlsamV3vLRy5/e94CMXiMza2mgI9I7ZzKLNRqJDnjH7jzeRn/AJbgTn4c4wdxInVrsF5aULWaTCLqtqIfvx0bvs4yN0ZN770Ok7Hyutw5sxWfEvZf3Bgy4AHHQYUnCma4UxPJsCqO/EccO/cDzhia2xjCuvOM3CP65L8joGXyJxuTOg7/735IIK0r3Z1FJIkzLQaZt7v5PnMG/CvlsFbgg5OCtubzGM1E9TFEE3+SZVDk/wKv9+/ad3H+yNRH38wKjECw/DShEqMXuVG6MSoDeCoVB+IsfADIPbZVl7H2RiQ/SGtCLCbTHOVBdQr37Yjkzd1o35qPZJpInT373jc5EMveohSFyr8ToWPd+cCcsRSYqmY5R8HUaW+9tCNrBORflqpnJQgr/Cs7Ggmo6u9qVpMCKbZY1ujB5fHZsrTY2OSkiiNy1/ZbdGG8rSMtOxau5shJppHOSbS1+84eWW4ZdXcgpVnSqMbkVMWA00ruLuAS5sM4tco/1jWnEEyBdvAQJnYU/i768ACyAx4SHzM9zQGFujHIiqHuOizBClvnbx/Ac/L2XHcpg0RprdFqNxbGFWiUeDSgMcwliogBD2G2HcmMJKM4oL5Qre6wtJAulUPJm0Ii3wae49F/+vYekc4/VxjVIB0FwWBIdX5oYHzf5wI2XbujyC+967Uvd3lJ0otIoimi5nBd+/5d/S6SKoEiTndl91BIETQcHw2q1smzHVqbTVrwtvvuew4sHlqJ2qkaTT/RyLNczr5nd/a/cL6N/x6mcz10YsGZvREmtkA3djUMh04ZIuXrnR4xDjd6FxHl6+BlmCPL5UrEYkqVQxzLEAEiIjIpN8MtskMiONzOpQMj40640nouhd8aDfCKWzb32wclSoNqJ1OBeZ3ZXud9Cv8pZXJvb+Ewe4fVBmcRmpYwnw7sGlcRZLC798D34lVF+9u6I8/dBH3oOpDALWXzITMOIGAVBe5pR1RHTBrtNoNvCNTwCwOyZ1NiUaDUtktexwphYJFHRvBY1sCw3ZIJIRVaIxNvoVwuxoo3LklywBfza9yGUnhiPxupdySBUnM3KpozNSdWkmmJR4AHwjFHuo3gCFIAGSiHoZ5kegLu/yrHq2elh9Yvg7W6hO2CgcIf53hJhuuj2S7iChL751yAxARyBbYiv//UUyRGTl3iK37b3ajDG1d3/B/0E/tfcJLfAfbovB1mZ8reBMcoPRxL5r/MN9a5Pvdd9Wvg7z50K/Qozh7l0+yAWfnGIOlao4r6FYw2KfvOz3bZtcpNoMpQZLKCyyDURaNLOXhoKE5PLXppoL/5C/knucMpfL0/GxFLJjZS2rr01iQMrNXUhGufzwZwplWZSKbW5+MFmPlNp5DJ1/I5iMpqUkOtJyeRkduWSFJmrx9zCoWgrTggf9Y1e0tWTddfTW5vNpW/+WKIcxFPVYph30rtfIfP4E9zL3Ep/6SZQl+duPbTUFQi6cq9CYFQ2ozolIL4RK5iSG0z1E+46nPoEK4nirfPntjbLxYjN3LcEd8+ebgJ3TLSXhyvlZTSSgpW9ytoe+MNbnd7r3Po2cQcqd7tY1+t2lnA3xLFlFJZGPEjxwHWziGVw0kVC8BQlarF060m11iykRLdwQNXQg89nb2LteMfSmz0iZ9sqCar7DFlGdFwnRM4VdGNn63Kkqr41B+9VdL9wI6ZEIuMtdYtldFQas8dkhVI1lpQwSqUJ37gcwbEjMLiHDqEjh9VGOs7LOUnEq9vx8++Iyp0jMq4WFSmanvCpkstX8qIoIj6RFWSJ2kHZi9lLc10ZRa8mkoa4bzvhJC84GEmRupKrR6Wdp25Wql5SSQLtxjgZK/9Jv6JXiNlqR8LcOws2+2X8Me4W9yr3I9x9/ctvedPjBNGnXSyi9yJJBGpK+E2gzVTg6Q2OIoGi6xwSgexf50RJEKXrHCRyiVwfVOsJEc4B+w4DxcBbH/zAO97+0guPPrx/tV4NcuWczETGqOLCtFI7REsTtVnWpqGNRgmlEJiQkJdRmG6mBynnWxo+LBt0mdgOjwgNH/7SZnWMUISbCDL8OCMCAz4H+b3DNBp8BXw5FfduqMW+Cf+OtmBphuErjp1UCEK/AaL92SPxiHD8lFWplhPtrSNdLTi64YKdFLlqPZur2TKP1XEDNJOZn7S1YgHyVvLsBEYeBmpfytQqhqzp+sQLy+2zKQFjiX/mBo/+37gh6rlYJlvPQBZH9Y9INTNa0bAlTN6rXHl1rZzRTZkqkhzFH0tEum1PoUQBhvgQRuaZfrDuCZ0eEXkxERdxXTUMUAG+fMDPxjRDvCm/sORWRKGQMWJmoeBoom7UekkN/ICSWMaxatVMxLHSljHR7Y5LCFN88o8vn0F2orqac5MVJGde+4kf8IHqeGWjsB9J9ajIA9+RfYj1jd0v49/BP8Zd5qb77SSQiXFThxjHmycPru3j8UZI2sC/yE2GDDcB+Ay0deH88WO9brXMAhyBCQf6mUVumI16Q9v1OneyaeDXvVCC7rkGSC4MrC7qM27XGgY4HNhm3gPOwArB6D+XZVsgfvrtMUWO5aogsCyNEDu2dWzzZr6a1dFzmFfUschxZTL3n+6d03FdMM4UZmXLu/l4lJVeUCStez4PphLU2FJKjttygC8rNb0y7xpuJ1GYkkRRimdL0Zi5Mh41KNaqb3rb8cMe5WcQ74s0pbax9PzBK5Z/7h5FmopkJUtbg2zB708oWKAKL0ZEasuT3KDG8YfkJfzT3APcYn/u9Pah1TlVEgl3Efgd3mxNYrzOwSsQkAPYxJdGJUCP27rvSq87Vl8KBBZcnQFSesEECivhven2XRU28Y74Go78MhpULe7kccuIYeLrwmyAnuxgov2Hn/348WUBaZpsrE9e/dia9eenmlhp8vaNWx7FVuH0K61sejLj+KYkT14w9PPlFJEbSdPEYnVqQdH0uiHzSq6myrxYrIwbzsKL9+Rs8QHk/egHD8/uaALVssWZi4kZ5L6y/5IfObUtmedWNUxSDZnGLM9U5NUjmmvnRSnWTLpRjUjpoJ4FjZ33dYVobnE8FjGpFcvkYhLRClEcsHHe3P1D/HuQo57iHuzHjm8fhuz7MIyxaWAY3831TqkIzjtI+4mhD/OECUr+5mjEDcbDvt2HNqspqQ8+cPpUu1WthhZhgsLfm1jy6N+mzMvIZz9a3h4MtU0MGpNWxnEhJNniQK8M6vus8sZmO0hhz6KDOh0zIegZtNrZbJvxh19NyhsHtPa1+uHvuzftzumowAvG3OKYXldPvNPDVLdNXdA9HZ4km1vGiqrWsjAWQPFoxMJ4foHmmqI5b0YsOSaogkIdahSLs9MqlhW1GbcyIu7pNzbOHPKTDyClQhOF/ephP7l+rxTsbClEKRd8MULbDYqssZgrYl5VFdnBgtSqsrk6yTDj6zOOVq0orTSVC7IiWEQihKixeMKH7C844D7lJyGt2WGM2LvX8e9CrnqVO9M/uQGJ6eLJY4ena5CZHrn/LOEEAnkKBBUv3OBA9gqMWoiYY3kKQTaDrAXpi9474mhAON78yne84dqD+1cX5sbH6nWJlcwrZeAFQxnDplVZCETvDI+h1fYqA95ejfR2UgunXRhbmRjEUNQbYBV8LAbmKIHtVQ8H+avT26s5ukCPeIkcWDZ0P26pyHCatfmJCtG3GlZDwX7lfiPy5k4hWXIJlXQ+1pq+2FypnFxOwKAbsZIJcLwzoxcn7V7KReKq4fYWxvI8gi8GvBJnK11Dn57aOJgONjcoxkrByWnvF0WGL7ikYc3SHGdmvTY2UcmvWHLlVMubS4tGPOh0RGneza7LMMSyfmJqNqoXkjwWtbSqKOfriBi8lXKjkEcmVlWzOZlvUlIItFJUxfX9mUR0ZivXMujSml+y4ClzOhiJxSPZwp8EVvgM98F+ZB9C5J6jG4SVd2cVmXDDWAwYV4FwQyzcBCwwHBSEMOKsIdVIDsrBf9+R4TRy7lschDiBR8LVwSFAwvU3PHXj+tV7gbWUKQvj6bDgC+b1RkA4KgeHyBgWBAeQu4wyg4DOwgs2/8ZsHdYhwGvE6BBKJ27PHULMTocl1RFUDAuKoTdg/X64L2e8Vk/xJy/69Mpsy5EEqZNPTR0eT/RjT59bPV4Qo4cvUJ9qM0smpC4B9Nq8pqHa0xG67SvzEG3t+pwryzmTN/W8quFIsl46mIptPaSk7rl/cuxcEMNXDiuFrOuS+YMRRArZbjQW8WtHEn68mifSUvVDO492VL0+hSUslROUVSaRIGSWjc0FlDqqI7/o/rGWMcqxqE1FUVVJOk0St+o6lVM6cpIbs2+4lIssa3jn8MbkGB/GM919Bf8V5Lzv4c71z0wiJohE4e1vef4Cz9MzEAHAO+E9kAs3OBH4p8j4JxBR/jpAtcAD4yTkCbiQIHKh2Sy89d3vfOWlxx+778rpk/tWxuqpJCvnlUah2xnh7RKGAB3FKtjLy6C9SgZELMiAsIrktpZCq/mt28bGeymURXyvnRmW/IdF/5C33CFI9lBiHFf2QAKJcSzNzgtIcWcmNohMEaDWeN00JT7fFymbYHuL4KY1obOmF4mYEnywKOleilYb+oWorms5DAoAH92OKWavmk4joN9C2hDVIGFRPrcYi7U3o7yQVklUOHFiMq/wWsTNI8xjlFgrmZYkFIOD5ZSglc6cnSUydr1ab7wBI4qwUNUBIus8vPQQ/wgSEK1KxZhoKtmeXAfgJI22hpCathZbczcvipEI5ltthVSDAjIzAin487kjj1xwpbqOJLlV1PRynG4fqStYkmKIFwWSXI2AUA9CTZ7b/Tp+HP8kV+LOcVf6xtpYIQoYtMO4Gh4K8/SeBwwrkTqTGGHB12C1/b/jc5uHTKycPtltT7A6od9wpu8WHmC7gWgcGSnMoqRcGUK1n8GhacF7utNsqp+9O2o6ACcZ+swE/PdftOZSUnltyydSaUXBGPPIurShG/bWoeLapOxjSZaFmbog2e01W+HttKn6TiWTIIoI+LtvRzUVZV4nmqqqlfKDD80vqqkUfqmGpHiSR03IiSLSDhYggzruohYIkqw89s0P84o11TOomMuYklQO9tun9teKVFbXZ0SI0bG6bMY3Vib0cj6YTB6sijYkUbz7P3afxNfwR7kK9zi31T8IaMFN5BwioG1EgQCxwYQwBDQU4O/1cNqMxRuFv9cHFXfWZKVzW5cunDpx+NC+lVS8mBdZO8f0Hg+fbrtiCJJAUUY0MygzSTYtTA8ml2/3btye+R3lV6b7yr29KscAdF9HT3++Vo8WU6mjheSqg5B49Vykro3Fizbv5JOJpIBszeIn0CtWqHVUp2QZkYioWn6zf0jPdBJ1hwqyrAVuzJBRY3Nh0pIQXy9WcilJsiMUwi03g9/tR8xINwbQo5LxJJCfqKoTFPFKVMdugu5/SmWh6pSy2fzEbD/dKtSqrfyEhtVI18m2DFehNuiAZkxfmxGK7UyqnSgXgWlo+TFKgyUYaXf3j0kZ/P8Z7m3o0X4yBmm7VwdV8uqbXljiRf7wISzITyCJG3Vd7ecUwuaJAA55YM0yJDaZkwXuhoo4SeZAiQ8ntsIgiB3iZFk6x0mSwWq/9BxHqU1HNa1/6rXsvWsZ4bWi/yzXYvfVPwDyUQGxfINTeKyA1/39V/tWF2IFtDTinnv26VuPPXL2zD1HN9enO5Pjhbwb4Z5Bz2i3p3fvzAmD2VxaGEzsISBoYlhyG1FBSOCtnuiyMpEYzeLoYLa/1QtV0h2KCmQqSqGwIrfn1hODWoQfRaFv+4wUAJjACT/n+UhKVAWUDJYvvRi5NBXNYRvJjGAlnzq6fM7WPaxcvZj2KmXNdiN6jiD0o25VSUTjSDCsmJQvgnbJHpsMnIwGenUy0xRUQpDoFtPVnJOIRpK+Xg90kcdpdMr1D+zTga9h2lp4XNWUySDp0EL/yixRca053dpSfTWr3URIm+nXCons9LIk35uUiuUpF8kaAarYowqmW0eRqlu+qhj+fCS/70JCVxHcF5Yt7NbdYjQwFVH2jXpeFVbQo+5VxxRSNG5HK2ojE+b9zO7X8Dcg7z+MxL794CXIqXlgvOJsD/QtGTaFTnKQCanIkAjM/QAQewJp4QZL98P6EqXWXleDvTdL+Y87zwjPi/2Tvq/fAjwUOSqC2yMu1Bff5szbJzHfjNx/9eKFE/e0p+rVVCIeCyQ2hXXnBGKIieA/7l6u6nbCdovbnhYMUZWyXIWX+N5tcBwpftbOBJdrg08HI32BE/jA5NUolgQ/IxHUnX6XOTUZy78SEFdScC7XWeqtzD5wIQ0cL++pSQNZcnNaNrxE4ECikOuOAog217jyvvlSVXCllEMJ+j7iJoiEM7XmETkST1mTc5UkFTGZm0UNXifklkQEEyUL4plUTVcLGR45SiGCtMjpSQmYi2JEwV0SK6loKSXz2e3Clh1dVLpqzpaw3si41BkLfSa5+2X+i+AzX0T7+5kPvfNVUKkfe/LGY1OCoPzcPaAsyebPbOyfdzWK1gegtA1gQWWJ3tCAaBLIXDc4wopnkNMUrAiMMagKVq9zKq+oLMUhhQcbynJoavEcJ4rwSlGcQ4NJx+HU9tFve1lFoArLmJgKGDBKpYOL08HF6be4+OC6f8ed/gMuidATd1+WAWA/i7hPffIHf+C97/mut73y0oVzR48sLzYb6VTEgvH7os6qbwGrebLuSyqOcu44qtxRL5oaNsENPW3EaNnhDOYwvJxAoxm/7O3JpBA576rKT+DXZ2/2DSNoHf0Mm2kG7u67vife0d7ZYrM/AMLAIibAaXvd4TTHkC+Qz+Q3ooiflY8eMhXPtY18XAcPtsezdtQRSSwtY5M0OsmcTrMpSiTBmlc23yM3KrkcoTzErCRZM/GoY0ULTdVILR+qj2t2Km5aup7O6najsWDwMlWWsVwu6ZLo9bZvVaWrDaoeXxeUww1R2jxcKTimalk5V1K1JEbILq74wKzVrmhkiEhZ2wdBn0bVKhJi5ThCiiIrUUOy8eWxlF4tfuZm5MiGKUUUOaYCJkVaaUlBoi+gGD3z8Zenk1hJClY5ZpfeccttX1MayZCsA6e2FwFcaVMVU4d+8keXijKWTSvlRDIZN66VykDMiCzQEug3d6was1TNKE/sR9YpVVqQ0KIsLsV0gfdyHZmXgXtQUbbHLdG52Ej9UCp8h5WzHp2YevAjZRoruwhBwIpiK1ATg/6zxO5Xyf+FP8K9n/udvn8Q8fR9Lz3y8GyRCvx7kMiRzQeQuD5gLlMcAuaIQMABoeQhl3OQ3FllBmN9r9NDZ1kcwk0UDZGFW/4ff6INJ/bbe+fwFNRiWA2ig2oQ/RanhmdBzNjveudzz57d2VhfWui0KvmwGjTo4RtFwesIKwVZ8HrPHhaj/TsKQqFP++FJHr0t70F2+q43VCATyB54dKE8bGMeseZCdBSmYW9kqEf/OpiNB75xdWl9zqC2lp2m1EtV6xR5vNDDfHoSYNdcW71oF+WjbcepF3dOLdhUUyXDEDQ3IbgLgakT0bdtKgu5JELW6klNtcumWqrorE4e0ayooauJWLvOplgtolaEBx4AdZLaiMl2piy8tO47+xZ//1o/gPNiTq6X0DQjmkykgf0QUgSH07OTRUlT5U6vLSNjKdaoZ9ZTmhfTo6BNDCwHCRU3Ts/ljxWSNlUVUPtEUupjopWccFBJA/KAkKBZ2UJGpE65p3gds7P4yI62sS7wuZhi56so9EENfPAJ/DvcE6xufn0F89ypY0AjxmqsF3uTIzwTk4D1oLEBLXl+JBLDSu2jD108X5xoMnEYziMwfjcy0Whu4k51MqqYL+O/bfgM9l5XLx8ViUb1gaG+KUygzjJC30MEgU0IUlM7dH7x0uWIJJotSXv0/OZ8pjG2crbkufkSryhjY9ZWRDQijcAQ5c5M3kYSnZawbHcqAlL9XkQpvHQx1S4pWqM4uZhuV2eKb5ySpFYL/zbIE4w12RAID3Y/caZeqwbHt3TlVCkryV5K1LJEUXs9PhIYZiRV6taTjgix0fBlNr+XL0iAG6UjCwamtlPpWIgUE1TDWnfzzW9aTukqQKdh4tn5UMvnd/PkE/hT3PPcx9BaPztdwkT66Pe+9508JT/58tNEoI8+dOUeHlTN5jnED1Fhji3a4CTId5QIhLJAFYkgXgfs44nIDyJVvmPunRDn0EDZD1XMP/UKBj+an//HXcG/6x76s3/fyTz/xLe6wIAIpl98AXE/9iMvfOzFjz1184H7jm13O81GkOOeR8+rozl/f9jEAZRvNO+9iPYabZh3Tb+u+Oxm0GhaINTOeyVKcGF2PdcLEafLOp+GhY/ynYl8mFRR604HBy7QGSyugN/KnXFhFAs2fMOvpSeWZx9r88BmIPgX+56MRW/hUL0+2zyQQlhd3b/WSTqeppUFK6JTAUnyTD6Q+XI2KsursVohFu+f0FCusq7rfNSc9MsTiRy4itTLpDOJmBTVWCuc1R1DfxlNYrHakjUqLxW9jAQcltUhMc/jSKnd1H1t7OF9+LGaH1/oes2NQIfPaqXoimcaii356aNxywv2ISxOZVKS2t1vYh7JIs8n/KgjKYVOY8yLR71jkZwu1bTFDYUnTrQmikg78w6HRgIvxwuyeiyTNGSMO/03Ji9NlL/5W4mooKSmlk1XlzV7KQk8WZJ1AFtiCoagwMBjv6oX7dfeY1VcbohZHyfvA8x6G3esf+TVHTZT8RAovloFI9KqAyHhN8cRm/ATWJkT2CASSCgvBAQ0UBBGGBZWqt/88tO3FuZYC2uTdWn9XThm4GE3/TIKGdYg89wJboOZiP9l8CaqpJpvWLlEuSqi4lbKF8/0FWV5ZvnCYavo1wNfBs7h//MjnoSTMZ7kFU/HApWdsq6QXE3kE+kYkWOGSlz0z4CCmMvufo38JmDg93Gf5v5HP/v2Zppg6ac+/N4VWeDx8UOY0OfBkvzmE48fJcL6AMFmOZZhRekGJwERBfPymOKw0wIIGStxC5gwCSA8MVoNGQpKB4+KL/+oC/h3XQDA73XnQjzgsNyHwnIfkKjwCuj1VwiXJnof/MBb3vyGpx5+6PzZzYONWiEf92VWXAGguLsLJ8SWeXQH6R95zjLrtQ1dEzQia8zBQwdr9cDVTFSeuN3yIQ6dGIl7mbg8LKpnyJ4Aadw5az2YwBPR4HAMqrodzrZ2QppVPoqBiESMJJGCvCGSzvHLgqQ+vi8GN3PxtGkue7IgaiqQeg1Rw1xriKauyzBSVMrnDCTwhucrYwl88lSxbAKn12sbMzxRE3EN/x4W+OkYL0WLiiRJ15oKL9qO4mHViC9cnJjiC0mTpz6fKGoif9Qax6fNuGX0ICgQUrXTT6bkhCpL0n/HKkaCrvq+KLlBLm3Y4+1jKtoXS6nGOYfUItUpzYD0ggQx5QMzD4UGxqomLhwM0smCI+lEUVqtfturdcxyXi3wRJvtzWr4B4FvTWIhLQmKdE3FVJccpEjR6V/6yIECiZu6JBlJIVH2NbM9ofrojANyVV9cpSrhkx0IIttsjA+w7J7dr5C34Y9zV7nH+g8vzmORVyUmVzeBpwu8yFIim7MBZwKnZB42IGJIBuQFQczxMgfpkpN4VtgbrRsdlmYQd/nS6ZOHDu5fne5OTQS5WNS1uavoarhqMxh2X7f3+hTCynNrNCcXlvHu7EodKkk07GwYlO5HRTvxrobVoYOhFzuLGw3HhSfxEnqblk+cWM0fPhVxN+svfLQy9swPmLg89+LWFY0Xt+7vxMcidkHmFUmvdg4FXix+9pwXdXLZYEaVkqXPPnvw1aQ7XmrM1i7dh5KtWvWQTrEg0Ixrj0vI0TcPlCuVzfiW6L33KTd6dP3xhaJLCuMGFcWCIypKpTjuyFpzQqKGvdUMilvL52+2a5lCsGBYjjvsIfkqCfAnuJvc/f0rBmDvvYcgZdTKSYKF+XA+DSNxg6PhRDgYhs3gMW48DHqCeHJdYkxFYB2vohiWa21mhxuPnTy+utLrTDaDrKZwN9FNOWyU77GaadiXM4HukEcmuqPhYVjtv7vrhKHCMmrvgQQzUaF8p8zyXR+yWHB3UQt/YGMGUUSXZvVgojHnzdtWZynizJrdsYxgRGhtTiGQeOau2rIkjp9aCwQ7qpVmVUzOHzfPir6j1mdj4uQGMJSHjma6STOhxGSEjmGcoh6yPnGO6sWnbuGXm7zFi/M9osh8esaN++25hOUnpnQcdURgNCBxqUq7+zTEBykYPakhqTI5WpckP2b4ZrU7oZ9YknnLTJpOKqFalPAI7UMpMZe16OEnRRRxmb0iu/+RPBhy5lq//MC+zlRZIBusC/Qma/K9OVykxRnc1jNPb25UM2yFTgl8lTl2Z4CFe8tehzNYLCjC/uxheRvG9XWzLSZ2b2ftgbgFRldeDGejwzqLPySMw5gY4DS8IA/Snyd2pICilUUi1nTeKm/KebK/ofLpMsWRh9DSpgrZcLyHlEMXBFHViFdFNDkrz84Z6qmLOd/KuArGIkg7UV4+QSSgCGzqHkmCK5uCIPOBIseUCrguPsg/jNOZRYwiuRbhVcwniI58JObAefDDxkSDFsEA9+Q8/WqX5yUJm7m8IpRa929nokvLiOB4SjKjhqF+oP7AC4MSDOZjk6AGCdIhLQuOk13tPfyBtLasGZrA88qgTzi++4fk3wKePcR9gPtw34Y7xfcCXLz7rVtrPGTDYXW6A0Ej8piVfikvMnSDhIkgeATEoufGAMmADoeNJocGRkz+E06zua2dvv/Iw29+5Y3PPvyBRz5w/9XzZ7vtHNDiMAB70fTIVCmUwbfbIfdmI7rD9Mv+dCp/q8xMWdmvt9d7d1cZI8ypA9wcro8gofZYRoVxfDuUfZd5FRkujYZj39VFRipdZNOgAjHHgo3+bLrXWHphfP4gm0qb9qczymw8GLPXg1aSN01vWiRB7TDQZcQLi6AbqxVZFmjqyKt2WboV8BePBImxgyWF/kwKvkcikOD22YpXjMfGfEN0MsWMhFBVmJtBYmq1PHekkMfXKAIW7iTLgVRwIq6cMbdzB8aDyUbETPZ6EI0qpRW77OFIYfJLK6n6mCJavud0TFHJZQoN4O4Al6U0FSL1qgVJ3zSDB3XkPqwdq9p1l8ff/GImZ59wGmbKDSqGs2BhVTfiPPazJTUK2HH/YaUxhvi4GcvLYthnm9j9Kv97+Ke5F7nPcr+NaD/4/E8/dwZIqvJvrj1ARO3dSBXX9mGG0d+JNHQQIdb5wkTyeY4JCsw4GjwTS52KjFhtWJMV7TqnibLGOpxUWWS1YV1W9eucTmWdeRcvD5olZH7UnhuWiiG5shVytgAu+b/k8vbw8jv91K/9yqc+8f3vf+XlZ54+eXxrc2V5brY1VSvng5rBii69Qals6GYASVF3WClzb69UAHce5/f8DdMB5A26g0N3bN/VfuHe0Zoz7LIZrOW+o/QM3yTcWdgOAc+/Y77l7u48GgxDSqgMcRFuw4ve0fCFw3Pwj2cisRoVH1ly5UJ3PR9hEySRyxHiRqiskI9ozrQS0W0lJh4YbzlivBuzdStmTSxOlL2xfeCThYm+Yx9szu9b9DNbNjLNZKDrhrpel3VdzScaXmN2brHVeWbREHniLaPjhi4q1aKBlbwkx/KCXt9ZVXJOXhU8jRWd7ck2RCHhZaJIQnvutR/WQO1H0La8bx+VCsmzeSqblTx15OW0hb8/kijNC/SsxSdLWMAYAtg6PqNo0eMbzWSQ1sh1UWcLFSXsK5qWNFmAi9mo3gJPIenamCFM9d964glHmiTUcJ1UzouYfizSiwqiJMT9WLLk9Nzi/Ixj3WM7otXIEywXda3bOn/M05MFStRcDIu+7pfunU/ryQQRIvMFNqcGPMVPEJGnqRzO/8hltVxChJhqmSAH8EDe/Ph9M2FvZ273/yb78E9yb+au9IFkCfTBew6CEMxiLJM0XIXfvHoYUyBAAr3JCbxwkwO9SeSwPEgYKxU5iYjSZbZMGHz6Muv1HGL3Sy8++x23bly5t7jvWr1ZU2iiUQp3Cxj0JIcJ+M5K4Z39ReEas0IAuVrshM1E7e5ttR2WXpYHSnqwjcP01EC1s0YzP5ycGQ/7P9tspTnz6ILHcnJIrUieCDR3wM2WsSj09+dBzUnnDpRismp5k0G1hoVSTTINOZUvRazjdjsjRHNZsVTcR7KF2XzSyzugU+TIwpGIcKlbMkRtxmmuRAhvxzTLiZvoTEOt511snqIHk4dsJJpy9jv5naNGSslMaTsaZGWnDXkbSZsHbSodq0ZlIjvxSlXIajCuyczC3LLBigDJFGjG+8cmdDnj8FSOzC8aSOqWepLZNQpxSsViXAU0kepRIVKM8/bFx3UiGmLSufiihjF1hYHWCHbr5Drwpe+FzJz63kMHAXokIBQcYZUT/PKLWET85jUkDJGzBaqCtVHe4Bin4gad0+E2Ezw/mpoNLQzC6TxHaYSGk7r/kJPsO0/a6VvvftdbX33+jRfO1aulsXGZxhvIHVTtb3dML6O7svMIwEb4dXv6TLyLSA+7BO+aPBvAzrAsc0cqH00STPeyeNA0Y4fXDHEOfQN3RLPe8wzSPZA15WBcJaRdLgW8UKkenkh70wc0Wbb3zZv+8aojW8hYbE6UXSexohqplUWIeIFOyVTLZ02TGGtHbrS2PUsTcPTwWkeGKBSyWxhHeHNadJ57x8T41Ll4YMEYuatzD+9/2ImsS4FYq4joL1BFeuG4KsdrloicJNECSZGI0C4nfFnJOPKsosj2/qbKV93y4j1l5UK34jqul1/VPSWemCsyHOVTKTtayHoxW1amZpYquXhWt2drCYHIMp9qWJE3n1rIv3rLdp8ra+l4P4+w3qyvPIZSD21suoBrY1LoT7vf2H0U38A/zl3iNvvrCbakDolcf9AHJYggXnk2hSSyUgjHiQIn3rHmONxAQEdbZ88c297cWF6c7kyUyxLrMuuBDcGmw8UqEPgAuaOJ1aEH3F75sKeLQmZWGbUesw9vbyUQTs7iLzYQlmXJ3tiPlQNdM+0m1ZSQRRoVktflxtrJR5dnO1pzO/fgfccvQ6pI56KBLLiBUxKQ6dL5mqZ1daM5NzHezWeKp0pFEwk8KuxHqsJPLEdpucrzOu+RBLJkPnESK3P9rU5TYUu1NHPypXccXbUFWYrmDtazls/aQfISjrlr+1bHujemT0V8SDc8GcRpcfcF7qv4a5zD9nphW1CgTQPhDQ2hdWDY+Obt/UrOM41ztFRos3XFkUC0mXO3PRiKgt1mr76K306EFzEhO+cpdS4dwP+H9o0/ochRyQMw/HC2sfsc90X8VS7GdfstPxIudoYv2jBYARW+7Mlw55GTo0WUiNvGnG1KAhfDsXCZZLiFBURguF+THf7SAv5rvx+/RPjemSxhvZb+GzoCfhlT/DMSirGM9I0PAFVXEPHZ8yL0S3gDf4kzOfoZkbD9iQLeC8odrs2zHFEpoxJ67W9QApURyqmaj/4af/g/IRUj/W/YDhj4t+BGj+5+BW+i3+Oa3AbbLSaiiITb6C/Pg+BOxKLyYMuajQOIFdg6vc5QWA/aGNthqxJeHrQdhTUz0HPMucoVZ4goWRwevoy64+H+QIXgqGMePafVVyO5LFuEiYhBUNuP8QcPVG0TnT+PhfPiD9uQoy3Is6mYEg9Ul0VI8+VbT/O0OCNaOtFhmImy+MhWR1sGrazhmemObVIsY9qbxviCiTqCV79cquhOKiJptqDUtfPOcSKEWuvU7pfR3+B/yc1z93DS57b3VwiebDgsAPxBoy3rnPfDks00Y22DPbrEgWoZNRV0Bp2c8BfBY4VruFmWdH1vqGDedHw+ShysKXwCjkIHraqs4IjXL7Imi/tOLvtmv4U1EGbgPEgkhILH0oRUoL42Bp5krdUlg3fwiW5aUyG/EjfZuC4XpdSEApkLy0rCpNHDJ9Y7At+uxyS5NYYvf+3I5KMZpEKykGRXeO1HFoogW1Qs0SjdPOsEWksjgb4cxsrp3T9GH0X/kRvnon2Hsf5yIaXyA3OzmgrgyaCOaeJC5XUU14eR8sTBOoNhcvi3l61avmJ7FUHQajWAa4F1OJAGaXWn+O7NjNLdB8lMoGPoR6eJrEdQNDGB5LxJ4BpjzTjmS7jsem7+gCVV9jkLc/nMIcI2ktnd3f0a2sXPcPu5RN+HEdrYv9osFRKeOLjV/hLzTLDdIBtFfXc0a83uDrN76wwXFTHq7GbDBtvoIO11b6/2i62cEYQ3/7gLKr1E7djsfZZwdpVHhG2DcDCiKnnRQSbBVq5YkwhtCPa7zsSMXA2SBp7NZRHOP6oTuSPk5GdveppTXKa4PctnNydP2lhrTGmCkBEj4vx2uRmx3LjNY/XYO1fLgn4jwgPjkMAnj+3+EfoY+l2uzq1wpS8UY4qAhaEU+9xQxn9uqMs/m8uMHjqLQqf0mNexzBsyucxe3WsCD3aHCR9z0MnltgYrWeGtWw/uuxgY3ZObKWTED/PISqlA8WREj10T+HovqyGi4ffbkGvZwlmIOLCslNdNHT0/ExyOKrje77qqQQTFabFVZRoEAJ3qZxtp1Rmv37eiEEUWsGyKa2OOFE+IUSIpIvO9wm6AbuFPcn3u+b7JvL7FevA3lxaAJB/6VIVtJQAJj94U0WAJX1gpvMI2USECf3m0vU71zmMIT57k2BKc07cPF/gdtu3K4XDDjfnZZqNWTiUsU5Uh1/bDDTfKlZFLt8K9Db0hl4aXQQe8hm3SAFqvgVhhgnlLdzCjwFJkFEgyMhfKVE77GropKfYRYkFm41stSVZ0UYzwqDVl56JR6hKtPa8S1E14CRATc3gWrC67qVY9j5GieWPvf9eYhMVL6ypfcJyVJ+dePl9FRga5a23TWJhQSxal6Rku1PP27iROA14vcZe5J1nueeTiyWO1gGKuy2YkN3MZzPbUwtxNggbFPLavxtUrV568+mRrMpVguccH3cDg+I6l2+3WqA0qjBVvuE8FI3fBsJc05HidVs8ZJ4XKCNuZemYLTDq9BTTdWWR1bWc0g9sNwN3YZT+lHwAA5zVgNIvj3STBos43vaTI1xpULKA4BJZ58pSlEZVML3f6vG1h5OLt97PyGTwE0XhgEo4Hn5oq4pEoTVQyDhFdjH4e5erakq9vg9ZU6VLi4HIT03wyYQCaulR2gHXtf16Pzt+/z9KsM/sBVj0b8FfW8Cz6dbZnFbJXtrplzYiYFkkrYnf+pKBKFN7H0mv5SNKy2/spehkO82gqxM2d3Sn0P8F3dyDnNuRwf77p9iDDhf21Aw/yesMt8Rjj8vaU/pBUjzII/J+18wwGkobl1VCXhaXR7iUL66pypmqrbHcqKi4bAKjpM75XX9URmwsTnJXLkQgvyNmA1gXCO61cNsO686gfX+qydRduRsY60IjvRUq5TKc9BYQKxDLJn3GeKGJjyVK8OLisnpQzs794WRbdfccVFYYympRnP9M7dEjHsi8apnqtl7fkXLI0wfYfyQRK7d98z/XTgsmzPQZ2v47W8Sc4nVuAXDoVk8NcusQqLABOoes4LbaAYUg6R3MjgL7lCms06k4POcWoSemguQjWTqnbIDNTH0bZHFi/fCKGkRlXXSzyCc1xkG051Qk97eR5UXJ5fL82pbmuL6ODSe81UVVA/SmxxUgkq7oERdc+WpUMUZIUpOrxgurq0fzK4etG1Ax5I979i90u91/wT3Ea14VnCAwJsWfoheYczlX3husyfG+YX0BWs77FkTXhNRCumzWxoCadeMkJbKX/Ks/LFcGQES/4ODWJMicxn8PKsZhGKSJuzHEwfrVIM0rU8QIr4Sj/+T5MKKAk6IkDF3/wcSPZRKkNpCHaasTS/R9/g5xO8pKCQw4TwLh/Cu75JHeDW+jPnj56WOK5jcXuFEHhil2Ov3bXHoeXb+9xeOXe/fv6S8VCPsu2eECs9j4o1cNDuR6bqrpjqr0NEcpm79k8F1squtc4xp68W6iApVldYRwxttQarnr3K8GglJ9mOYlnSTh0eeQPQlqR5WLUZrFtxK8ggU6aeJ8/NqbH3k1Rs4GjiSksq5MPFjO5yQg7qlqV8lIOSaybUVCwobPNIGuXJaRbBDDblnVRhlyVEBHE/YcR662kbBVnfIz6FpKtOQifxZTt4vUY0hJG9GWB5ANZdSNiZs6NJQpa/oFtCZJXnJ744UU2aQJ8pMz2yMm8SQLF4QSVqgaXZF8RRxJW5USIBfft/imawT/JNQALqg5gwaCcvQiDQLI4XI7JJoIHs3xZwhbhGqyZ5T4FsU0ReEqQqtqz01FG2QpJSuGBDN1Imm9Bpt078s5X/1U8J7J4RahU0IopVQKpE59qVX7oqft1w+QFJaLdiyIeuxdr9yvkzej3ue9mczrf9Z1veeX5CztnTq7Md0pJU8Q2t3HzxmNbrSYd0KZCjjEIxDYwpZ442MEgJLujpadsBWG40CCEtdDowdDqzJBhNgDrhpDnDstJDLZYj7g5CGU3Gi5o81oGCiuiLCWMsK3SYVcQg0q4tqnFNmJgm/k9c6XKtGbFMitArKILPXh6jcckBemdkESKVeSSy1NxxMcLioh53uybuTwiKWry5GnwhgyWCfGWhWIJgC6ZhC+WpJqUEjMpNqECqTDiRcGDrNnl5BTr4NmeV9Dvjss8MgSLCnElpNbArMGBzLUTqY2YEGBe1XheI1alEKGFkgqyZftZIju8puPnz5ckRxDQSSdaNVo7x5saVkxNM/TykSlq8DxfCIigUiEreOpYHuljZzp9KSIIWGc7d+hqbTyZFlQl3pxQmA2F3a/he4GT3wP+dKTB9Fw4xIA6TJoMdhgYjvQEk1swsB4M8hClwoaHDlC+idF4M+7H6oGiNz1UMphTPF4H9EnBGHbXMjCe9rhBILCyEy5gKMpmEpkZWsgKMhIR6BUiE4toktTvY79qo37fw276jILef89LK75giERTzfwMSNNYyzQ2V5b9kqVT3haOju3P5QMv1qSVJI/zK1u3EgC/RIAYpqKAyVjTSoixWB4iXzGKAxzmHtn9EujBr3Iprgc43MyZDIfDTILdETFjpLY7pPV+uN3hbSoyj0a0Hs17yvKOhXSJIO3SQ7HIwTHQUAofO1zCbE4U44SAtMWeLBAS57VF9Ns6LcV579PrVVGQFpqK0izIauJW7zTGaj0LJwiT902XTLlpE/X8I5OBgORB7tjdncIibnJbwMem+uMH1/fpKhAcoF2bJ+6ZGG9WfVdCG+GUKjBdtgkW4iLA4tEWYUwsqITQWAibShh0wjN0Fvd2DWMI4u9NiHoDSSa6oUBl/XkjMPbY3CmT3Cb29uYSwBXeJCtIkMerukDRopaTERbjhqDmpkxghZjXkRA474q259menxGZKHP7LLnelKVksvd5m/DJNFrcYsgnC5CDf10w6G8CACdlQcM9JRGN7LwMR2qYmI0JgzXrOCaF10b9XjXh8qx5jijT6hMnuzQzrdMkRNbHVc3HBwVVe/JJKRAqGwvVpkJNZvvTu02w/R9x5QGPqBZjYHthOiwnBHvNPANSxQoOrKfM98L9pMiAjbIRCicUlxGLE/SwfuECQvdCylB0PDZ92ehMaIWCZhhYdg45ivyQT3AUoW4kFuSwAMhq1H/psVez0130IJY3V/rHcSzdBSUNI0px80M3r32wL1IgrQI+QMXGB1NYmjGoYeGfOKDBULL41UFT/zJw89MQvys844Z0QG3AWpASBos7o2znvjQLWTfcyw+kWXlvsX44671EIOrZdHs5rCpMD21ZYcUHHa8VC06sjjtSRANH4/mspzg2wslOjOGg7juIKEhhu+cYcUD5SDmB0rfSUmFGMCCRYFVASkKJRlkR7gXU9H3Dzgiu0KSmImEQ6FMKSCbInn7BRmynEJNEhMxJwRP6gmQ4caDuMlKUyLot5eu8wpr3pw7MLWtyVAI5JNKwvvmnu19CX0FfgnFY7M9tb6V8YDTcQSYiN5mCn6xhtM6jwUr4200H6CHEra/N9MbHuNPotDDo8xjsMVUoD/fIG05+Ddm2d/d653CxZ7gxIjtm0CM/gUZLTFhang7XgEbRS8UeIevrUu0QL8EdCAhJooT19pqvWgVI+873Je3lGdMtVWUkP0uEiiE3TkTZxpg4kYtul7QMRsy5CpGIi366qIg8mZwSplifZFWJ5/wYJGojqwiij/lmLNGfndOlriXEBANfRoRgbdEiyDBrDdfOViNaVSKbB9tt5KiKyvyosftH6H34rdw0N9Efg8y1oUk43L6KFRRxuA/L5eGG3Ig7PN6sVZMJO9x8rcRqvWwNF3OsLpv/6XW6yyE3a3eZ/7FigYGAloXDOlK/aOMgcER05owlqweEU6ydVhOilSNHHCyaMaRci8fn4LZpLruWtxHq9QwZAvv4dy/xbJYPy3zkvROTYH7Do+STSCLEdWrnJqbg95CbyLtfwWchLjYgLjaSEBdCpzKchgpLSAMHZ1DGlvAO6m3w6WDKdBkxWtENuZTLGCWbRoVHYeejn10QxhqLNhal8SWXCBO6UBctzdi3Qiplotqgm4xY118Fy80vYg2bEV8QkxmRFOvbWXzJ9yoaL2R8CQmt59oLMWDX1BifQKm0UjnbP5CSeclVkvaHN2O5lBeV4GKPvDddqCNFFcVUbn64h94fgR4MuFnuMFfuF1ZXZnvtRibJ9kXcNFjhGV48CUc63NbGgXKJbZweztFQVlljaTqEgAnEyvZhuSZU44DgVNzT4F5rsAQ83LvfRF709tJk9DcE8SnhhfSqZVFJqRYiPFtbJBawclgHyQ3MX8O0bAEYHywWtxeeTszqxIrklYrZFXQhTdD3k22Z+uLbptVpLQW5WVTycYXn90/vXwikiiPQYE3leRKxeMmu2oYoNqPRILlqeAKVjK/EHSWh7X+2k2Vj0dv9MpnAJe4S9zSrJd+6vHNycboz2RwzVG5jHQ2o543rYS2Z/TsY5TsRblCNGz4/+4cMmGIcjMDg+eFnyIOGfUUDOjBoOOkMJjtDUsRWynrRUiUY7p4a5oVwQhS+4E+mHoUDgjiLVIQt6nqIeoWkyyYRIFsBG0/q+OGY0NxR0fHjyFiuuAhngHcbl7ZcFNmZAarIY6aYxxV/DJjEd6bQITgV6fp9FhaVOFHzNxbxEVFueKzhEFzy2sYC9XyiaHKilvQY6eQjrm54MbW0ZpNUgbft1pSYNaT0L54DWgGjIqsdi2DByh64p1gTbYtNSSa2X/j/5Cya8sxyqWGqkyS9/515Ybgft7S7H/1r9LvcQxBf96chvvxBpR4zOdIZlhXC/tVhX5bntmEkO5kwm4ruwA3hsOCOf9qATfRB0LGVQgUY4tuftEOyMWCcklCqpSU2diBygehGxSQ1UHUj7cXHASbg+UnSN4liiznISwtApFXKdpbigyK4cRSGY+cMaYxJStpUreCMgVGTUXDrTEw5GxVosxWXjMLSdwPmSAIFUAJnlglKtQ3dStuRsTHQe3zBBzCVLTEDNi1SXs0r61dFIlBAYUkSZWlmuljgDd+NuFZgEoFPUpPwfKKkh2O3sFvAHPA3Vs+ZicHYlQxW8A5XJty9dhDAM8w+bGYAj6o7eFQyLIyj2w1PYXkHxpOlnnDODfJFTOw0sJzJ2ARoLTKjbFuimRwCpUfc/7+ta/mR4yjjU9Vd1a/q92t2pnse3Tvvx87Oa1+Y7O7s2LtZe1aEh5M4TiLbihKHnJBNCAKsCBAiEiI5IKJw4JQIhMghQUhwQoq45cCRP4AzBzjbVFXP7K4lWprT9KGr6qvv+ft+nxWDtlqMxMgZ7hnUSSOdm9fLECbEGtiWWSIEQdHctSHOR5AabtudoHZVSYuWtvfbQyRagY2xIgXbZSB4dFf9vOtGku0KjlIMcaH0+D/2htJs3dx0gAckKaDWunV78WJvkUAmseTTdRp7ikE+42log3eoLO1Qj3aw3zvYG7TpPWTVLZWabgFkxLjniUWQuzpPKrkdsJMVtQwo8a0LlhRDJrjM4nXBjMs2aNJYDTyou41xFiVzL57v4Id6kVQFWSLbr/fzfa2gSU23NLc9VUAn140HG55y9x0nrB2DYWcNCXZpBo9OMdhPPENUsQi+Q/eDmgV189C1W5Fq5DVco6rt6OTavILgdLofScD42R0qm5aExLTkq5Li2KXH//bg9o1QwKW+LKJBsDemMjIBH+X+Cr/IxWyOA1zOLKBOF1vxipmjBM4Jmi/wvx9DXU4UHFQRFfnYUJCWakaQ9OEXVGFsFnXTqTcVSVFF1RdQxy/nC9XRZnand8HPc3+Dn+dKuernjkXN/3kpwF+WAtjAoc8cXqrhXf6XGi6yGJGKIJzUx1fEEpGxXidKyS0QV1G1vs5CNwQ/khwBjyPXq/QKZT3E2DxK9bAseSogHv2Ggyf/onfjYe6M3o0+s9uc0iZrf+UUhn24AZbokQyvV+alQMiqaJe4xjI6myydfAGTB9/aFMqtZ68VLeLLKoQYABWG0oGv43BQ6B0eW2JHVLSNEX4BSV8f0DADylA0mncwlWFCdIIQwVIzvzv/S3vHXIuHocIcNMwYuFUhxsiSg8qU+PP331OxFJfF8X5KxL2ocfWKKanlKWO1UzVNla3hteNiserwfa896YJfwz/lFsxXCZgPz/tKGNn8CpWVJlsME2PydBc1SBE1TOaK67lxUScbZTUFjpBIccoTZg0282kEiKSse6EgSpAQqjsFANq7xKRWGk6mjDmkZGmqYxZla70Of6jq+edsJG+PiIQTBtW/T5fpOvOzvmYktsJZTSGIMONnRIIyHAJqenyJ2hJrzbRjakOwqnrdP78Wu6/dAt98hvzjy9xyrTXwCP4uN2e6z2BrbXBOvgn3R54i8EukdImixvyUQ58lJFK2Qs5BNeaY3syOt0RND/OhaovapJK0VDVfqMwRYngwIY0EpVACQr1QRo+EvHYHOmJ6rGEMJaKxAAS8KtOPhcENZ7iwqWPn+BDcoA66iHoyiMMkLZQLCEeGd+Xx9Ctvs0YfY6OyOzvc+v6LhPkgsydd6IJ/0ijyazSOnF8ZRyyO5Cz56TJY5r1kS8KsTLHzgu0q0L4A8lPhHtFvPYcjsyr2dLLF29T2+91A6I5fTRODAYnZEW58uwSRNJyrrYEoqLJhYAn+Cu017j8HDzX/5bovCmaQimGRHpB9tkV+GtXcXxSrV5KEEFluK+vy4lgOJbk6taAQmNBzBdGvTF569FJqeTb6AJgzeLe1Cd2DxbASF+xY0/Myeus+NCPEz7NKfdF34R9y32D3Vef3dcQa7/hyVgk4nrZldaxRuKpjsyRelmtgh2pwP4t1veN01Vcv+VkemBW3wfSrdNupXynOdn2rs8c44zC4CuxEYbA2A4i6qBjTWQAVaufzrgF2d8QuKFElKCaxRYNW8G6e3BIqkxMXIYkz5azXDaNWAwJJtn4wx4gEYPONQVcDqpQqeSWtaBh65UK/Lqyn14RKIqB+FMcijvT+T9qqn3IM3rrwJvwk9xu69uf3WC52CYBhPBWrsTpLdpVzqWaQpadBl0uRD5apBni5G5drNIaUGbExWz7Hja6ynty/4vyuS/jVqs3ovOeDqYffa77hSq7gA/pt+Tcca3hmR/1gvxq1JbjdUtBW41Cywtht9okgBTtHL1h7nVksUkf0YVltzFxGyIRPsf7+Lzujs1aRCHpENpn+EOwHR9NZXHNb1boOa0qi01h/JJnGK8qznbrd3GGjOLRwvBMoRhLV745EqImOEAJDkovPU48kKbZe+fFxtVbwZCHaaXtEXm/FdVG2Cr5udMYVmThmpzNW/MqpTBV179BWknW1VF448/Hf31PJj1Kt5FDfJtKHAL2Far2br3/4xxNhzbUQKMhFR5SM+sMbVNse4LKu9agVMr1x21aI3V1yLH4Xfg9+mXuTnt/NEYsRlzwiw/MGKx7Hp9NLs684IQTPomSHl3EmPkU86nu8AeyCnL/OMgE8KdBYwdqocwnUtLnwBvnGyyQZmVAHuhltjIcGhuYzret6xQZeA+mi0M6HtlCsBg+DRN4K5Hh6S3b9nfJo7Gm3Tx80T65bmhH5FVW1Fwc4SNYI6Wk6NAfx7O15oUEEQNygiZKk7fsGilR6jSzdF/EwDpEeaiLQyobT7Sx61JeV9ZpZqX16+9SnkbUoHcQMqK4NCWB+Glfg/83dW85ARNkMxM3JyK/S3z3Qvcee5Xvd//feiL2XPWz/2XOPv4c/oyFr9g77739nch/JAAB42qVUzU7bQBAehxDRSEHQQw/00BHiAFLixMCFgKgCKCoCgSAIIXGgi7OJTRI7sjcJPELfoOpL9Al66cv01mfo5/UiSAWlQFbxfjs78823sz9E9M6aJovS3z59M9iigjVhcIay1nuDJ2jeahmcpbfWd4Mn6UMmY3CO3mY+GVywKtkfBk/TXG7B4Bkq5M4NnqVsLgazlX2D0VedJcEWzdEvgzM0Zc0aPEE7FhucpQXri8GTtGn9NDhHC5l5gwuZz5lzg6dpdfK3wTPQ89HgWZrK+bRNIfXphiLyqU0eKWJaJJeW0C9TBW2NSho5+DPtkKRY+wYYNeDpwxKgl1SEZVdjm/JPMju0CrSHGaG5apgT1ARPD1G0HfZvIr/tKV50l3i5UlkrLVecCu/I2G8H3HB9GbiyyLuBa+f/dnZWec8TAddc0ZQ9sO2B+gTUZ3RBdUgS1IGgARDtiRN5dlGPREcNMNyC7C5k0FbYxbeOYQDXpI+wDqnV27oWVa3/MeLSHVU9DFQ9jNqSl+0KV3ksZSlN9F9EDwWeIijSexLqOjpQ59A6kEJrgWiAPkSdfb2SZBeG2msFe0GnMor9MGDHdtZZqZYYqNDzA1Ry6NgrS68Q9ryjVXzG4Up4Nmikm43jIsDt0RX6a4zTjdpEntcewvE8HeMlxnzu5ysi4wiZEjVMx3o1yeYM8W3CcnuYmA7A0NOH6fHyJpcoj7lk4+Kx6AZQC2gE70izpB5d9K6uWGwyDoCbWgNrVVJH7+LZYzpEZaRe9R3z/hhDUvOHj5c9pmw8L0PVEH8fdkGX+Ca2u7oInbFGRxorXKO83hkFPVUqo8VgS3asD1uMXLHmuq10GcrrUPrYE1F88I3gxY3RaGT3hPKuxLWN27i59NS7YWI6MInUksYV8yNfeXwsYxkNZZOT+80HoifHb7adz594fpxON8KWGolIMgxd35VBjMBB0JQRK09yY3efD/sySJ33U4ci37uddkpmYlkMhd8Vl13JWovgeu2IharmPaX61XI5diO/r2I79ruJ6PJhHRV7UZn/RfjSd/UPcAp4pAAAeNptzUdOQmEAhdHzU0TE3nuMsdeniF0jiWDvvU2cOXHmCtyTLk+RvKFfcnOGV0K1n0+L/uu1siAhKSUtq05OvQaNmjRr0apNuw6dunTr0atPvwGDhgwbMWrMuAmTpkybMWvOvMhC5S9vScGyFavWrNuwacu2HUW7Ssr27Dtw6MixE6fOnLtw6cq1G7fu3Hvw6Mmzl5Dw5TskQyqkQ03IhNqQDXUhF+ozH+9vUVSM/izlo4XYxdh87FJsIXY1dq1qubwbW4ot/wIJJixhAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsV
d09GRgABAAAAAFk8AA8AAAAAh1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABZIAAAABwAAAAcacggNE9TLzIAAAHMAAAAUwAAAGBFvVmRY21hcAAAA1gAAADcAAABkgI3ddJjdnQgAAAKXAAAACYAAAA6AisPD2ZwZ20AAAQ0AAAFpwAAC5fYFNvwZ2FzcAAAWRgAAAAIAAAACAAAABBnbHlmAAALTAAASdQAAGwcuh+gE2hlYWQAAAFYAAAAMwAAADYQWtktaGhlYQAAAYwAAAAgAAAAJAdGA4tobXR4AAACIAAAATcAAAGMwoINy2xvY2EAAAqEAAAAyAAAAMgw40vMbWF4cAAAAawAAAAgAAAAIAGXAeRuYW1lAABVIAAAAyAAAAez8LoUGXBvc3QAAFhAAAAA1gAAAUiRutGicHJlcAAACdwAAAB+AAAAipKM/Mp42mNgZGBgAOJ3Et1v4/ltvjLIM78AijBcm+itBKP/P/+vwCLH9ATI5WBgAokCAG+YDOkAeNpjYGRgYHryX4EhikXq//P/b1nkGIAiKCAZAKMXBtcAAQAAAGMA0QAGAAAAAAACABwALAB3AAAAmgDlAAAAAHjaY2BinMU4gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjA4MCi8/8+s8N+CIYrpCcMDBQaG/jhmoO4XTDeBShQYGAE+DBLdAHjaLZBNL0NREIbfmVOiWuQmclXv1VARTaOtirBoxVc0RGpJsFM2lsJPuKytJMIv8R+wkOjaRmwk9GppJMfbxEme857JzJz5QBsz4JEqrzY1g308o0dfUMQT1iTACdkVF2kNUaDWqHnqjjSRJllSIGUySXr/7RyZIBnio846dRSYOyfHyOs9XHOKaT1CySzB0ytsaw0x42BFHyGaRUoztqk3cPQaY5EkvE6cKSFuyvCpMapnFhh/y97O7atZhBdxMaoP9C/zzz3E2OeZuPZXQs4WMlbYd4B1aaBPLlGRClLyzRpRVGUI/TJsW/QnJIEDtdzDAAblDavMjVPL9DlyZ9+5L0+7EFVg3nRz1oBzN6gX9qezR+4wR4rygU35xDjjR2QDvrQwy3dStmh/MWeKfREcAn8I4E/PAHjaY2BgYGaAYBkGRgYQ6AHyGMF8FoYCIC3BIAAU4WBQYrBmsGWwZ4hmiGOoYligIPmY/f3///+BKhQY1MAyjgyxDIlAGYnHDO//AqUe/3/w//7/e//v/r/z/9b/rQ/sZCMEkqG2YAWMbAxwaUYmIMGErgDoVBZWIIONnYOTi5uHl49fQFBIWERUTFxCUkoa6GZZBjl5BUUlZRVVNXUNTS1tHV09fQNDI2MTUzNzCwZLKwYGaxtbO3sHRydnF1c3dw9PL28fXz//gMCg4BAG6oJQOCssnHhdAJArMF542q1W+XPTRhSWfCROQo6Sgxb1WLFxmtork1IIBkwIkmUX3MO5WglKK8VOeh/QMsPf4L/mybQz9Df+tH5vZZtAknaGaSaj9+3up333k8lQgoy9wA+FaD0zZrZaNLZzL6DLFq2G0aHo7QWUKcZ/F4yC0enIfcu2yQjJ8GS9b5iGF7kOmYpEdOhQRomuoOdtyq3c66+ak57f8bfvB7a0rV4gqN0ObNoMLUFVRtUwFElKiru0iq3BStAan68x83k7EDCiFwuabAcRdgSfTTJaZ7QeWVEYhhaZ5TCUZLSDgzB0KKsE7skVYxiU99oB5aVLY9KF+SGZkUM5JWGX6Cb5fVfwSaqcnzj3O5Qt2dj3RE/0cHeyli/Cra0galvxdhjIEKebOwGOLHZqoNmhvKJxr9w3MmloxrCUrkSIpRtTZv+QzA7up3zJoXEl2Mgpr/MsZ+wLvoE2o5ApUV0bWVD98SnD892SPQr2hHo5+JPpLWYZJnjwOBJ+T8acCB0pw+JokrBg5NBKyhZlXE9VTJ3yOi3jLcN64drRl84o7VB/ajLrB7Yl7bBkOzStkkzGp25cd2hGgSgEnfHu8usA0g1pmlfbWE1j5dAsrpnTIRGIQAd6acaLRC8SNIOgOTSnWrtBkuvWw2WaPpBPHHpDtbaC1k66adnYn9f7Z1VizHp7QTI7i/zFLs2WuUhRum5yhh/TeJC5hExki+0g4eDBW7eH9LLaki3x2hBb6Tm/gtrnnRCeNGF/E7svp+qUBCaGMS8RLY+Mjb5pmjpX88pIjIy/G9CsdIVPUyjKSSiOXBFB/V9zc6YxY7huL0rOjpXpcdm6gDAtwLf5skOLKjFZLiHOLM+pJMvyTZXkWL6lkjzL8yoZY2mpZJzl2yopsHxHJRMsP1CiQuYDh0oaPHSorMEjh95VBk2XX8PG92Dju7hbwEaWNmxkeQE2spSwkeUybGRZhI0sV2Ajy/dhI8tV2MhSKVHTpeYoqJ2LhMcmeDodaB/F9VZR5JTJQSddRBE3xSmZkHFV8hj7VwZKyaG1UXrMJbpYSvLmoh9gDLGDHx6NzPHjS0pc0fZ+BJ7pH1eCDjtROe8bS38a/FffkNXkkrkIjy7Dfxh8sr0o7Ljq0BVVOVdzaP2/qCjCDuhXkRJjqSgqosnNi1De6fWasoluDzDWMRbR0eumubgA/VVMmSU0CP41hSa88kGvIoWo9XDXtRfHopLeQTncCZagiPt9cyt4mhFZYT3NrGTPhy7PwAKmqdRs2UD3ea+2UsRzKB32GS/qSsp6cRfHGS+2gCOeQa++E8MkDGbZQA4lNDTgF4TWgvtOUCLTaZdDgyP2eRRU/tituJE9Kmoj8GynU+6FLqT8OsdAYCe/MoiBrCE0N/Q2FdA8QjRkk5Vxtmo6ZOzAIKLGblARNXwb2eLBpmBbhiEfK2J15+jXN03USRU8yIzkMr45sMAbpibiz/OrLg5TuaGkqHDUGhjMtbCSVMwFNOCt0Xb76Pbmy+wTObcVVcsnXuoqulbuQTEXC6w9zkFaKlQB1RtV2DC6XFwSpV5Bk6TX1TE0MMNfoxSb/1f1sfk8X2oSI+RIvu1wYKPPwRj632D/bTkIwMCPkctNuLyYNie+7ujD+QpdRi9+fMr+Hcxcc2GergDfVXQVosVR8xFX0cCnbBinTxSXI7UAP1V9zBmAzwBMBp+rvql32gB6Z4s5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZgPeUEbQN9qdAvoO11PWGxi8b2iGyP2D7zQ7B81YvZPGjH1Z0W1EfUXXmjqrxox9TeNmPpQ0c0R9REvNPV3jZj6h0ZMfayeTuQywx9PbpkKB5Rdbj8ZflOcfwArcU1jAHjaY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZ2Jw2STAyaIEYm7k5GDkgLFE2MIvdaRczAwMjAyeQzeG0i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5uVg5NHawfi/dQNL70YmoD7WFBcAd1kkywAAeNpjYMAA3kAIBEyH/79gWs54/f/j/3pMomD+UyD/HowPAB7HD0EAAAAAABYAFgAWABYAeADKAfwCIgJgAo4DAgNAA3YDoAO+A+AEQgTGBSIFpAYQBooHHAdqCDIIoAj0CVQJkgomCuoMLgzKDXwONg8cD/4Q6BGiElwTgBRuFgoXMBgWGYIanBv+HKIdYB40H1YguCGoIpojlCPSJBQkOiTAJUglpCYkJo4nDiesKDoomCj0KZop5iqiKygrhixCLLwtRC4ELmgu8i94MEww3jFeMeox6jIcMmQy0jNCM6Q0EjSONQQ1VjXYNew2ADYOeNqkvAmUJMlZJuhm5m7m9xHuHh73fR8Zd0TeGXVkVVZWZt1dZ1dXdVd1t/pQd3W1WtA6Ea2WhIRG0iIOCdCDlQaYWZAEUg+IY5ZDnAtvWQaW4VoGlnt4sw+Wgd33oHN/84jMrBbHwOzrflWVEe6ebvb///d/32+/mYCFviAIP4d9gQhMkF+jIhJwtzlwBk514BT733S338f+3/3nPvp+AQs39v5K+EX8/YIjpIW7pz9fP3d1GhPgBgHhe/AY67SAMXlYIMQkO8nTn+/B9/7B91ggmNzmlwk7yWlCgC/uwxfovoAJwVfmt2Jy7tq1f1eqBQWRxprucDzo+x6jFqLFCq4OK4R/EvU9WixUnvAyFYIjLlVQCiEtHwvy+WisgJ8t5waxbPRHf5gg9CFXNP/uZ+GLIF4sCfASMvq88GX8g4IrZIQTU90zNYIR2nYRPjkbkQ2vaPCRoBsCQhaGl/X3XxajK/AZviFghM9ee62crBEaNN0FNBqOJ314syCaRowyvzgZhu/tFwujPHVlBzHsaVhVcPTWcVVVNfTF1KcSMZsik6SSN64x8c/iQeHJ6woWwBK9vf+Kfwf/sPC88LXCNwj/y9Rb9jFmW0gkd5Esku0mIujU6c+34W17YDYsMJhfBNOI3sSnWcTk7mwQskxvCJR6pwVRlG4IkuRJ+4ZZ+MduFAVJlG698X4Kk9AU4I77cAe7/4/ccnj1tWtT7/2vvuX+m564/ciZ3SMbi916taVQv+lW+EyNB5M+WDE0ZGjbIBrAT+toMh4Nq5XqAioWLDQZTkaDfgaFV24gj/rwVcHnxrfQ7I7JmN/Rm8wexMApqpUOmv09Gk7GG2hYKRbADN7+8ydj4oU3jirwtPDLX06eXtLB8TCScXuSy1xypGp3tU4QlXGAFdVKpDNZDYEF7YymXEp9TcIken7cVWopidWr1PT0XqAi7Klupbgek/stRdk99fzS8jQ7+v5SMhpJGzpBji/ldetvbp6stQrR/skqRVJ5gD68Mt28rYIDjqv9Zquv4WOXNzuqSdsjV42bEXitiIfBjSFO0ALMOsJBpfZ4lsl1FUv2qRxDGFyocKxaw1pVZoPVtYuXRsnsj6TbVnRSrzU1U4wmMq//yKl7UUeMnnjyvJWqgmnBnTfRF4X3QRyYQjz0+9e4xSEyvwB/P3XtC3nErTXk0UeZV+BmGW0WM0ligw9/Ml0yf0rHWLl+Mx6Gxt4JVMa/J2QFfxpJIfDgLQcJJ/mTMvw5yKfcOtwKM7ulUZFbeWakyRiV69qGjkW971uOgkRXKyyZNWSdS+Pfi6TtS/+p0Th+4ufXE5olMyo5R6vP/vZJ8y8eyvHffW1vE3n4d4W4QL9gCqjbDEb8kTNP6qBR+BsDcA8TXdNH0ZKC05njrGCfK3gk4279iCP51bUfbZ38oRdfLIu+po2+8forzude3tmGZxfQTwh/ir8obArJaez4xmKvXUgGliZjXdjig6vXEPWa7miQBu/0YJD+BHwswxEgdNEsilK2gDrIh3egTTQaryH+TYFHAfdNmIDxJMigLBq+M4EkpOkdCRmIKPGaortVB+CH9RQFfBNThxjJtInUhu8PHcuQNTWjafhzEnwnUtIKDEWpiMhBhJopJpsJDbmI1hmNLwSyaKwmDdWPax4iKcPARUVBNlOVhCKfgnF29j6LfxpfFnyhNa0TCOstTcEI7EeQ8BBYEyOCH+Vecw0uRrt+NOJxdEYwWCdvobwDQ1pDeRj8Bsqjx1mKoTGjr/+656PXf0GEcYmoireIgl//suu9/kuK8un/USUmVrn97uwdEX5NeAZ8h37BJmA/CHsOpBk8C2lWmDvJaBhG7J2ijEVZydmYxkYUqdRQHMXTdGk9Cx5E+42Uz2KVHWxhInt+MR7xUlZEn/n8gvDn+CeRK2hCbprGMBQkXIG/9sdFBCoJGlEJN+qwjmBkY27QdXQUHWX0715WEAAviiDPjSLCSPjMK3t/Ifyc8ISgCG6YOsKsYaKdYgTTKAxm3I+GyepKtlsoxqK5ZiJf6PJUxP1rbxv9Cv7f4H2sqS6hmVMlwsiLDMB7mMC8YvWPvgwg5EZe/1co6sOTfwrsXf/b7wVMEHg+a+z93+jn0J8LMaEj9L9QR2hrlhg0ProbcInJ060t8GFemX+GhLPXvthq8xd0xzDV4KoH+MlzGZ9uNofJEI8J4KQJrvvXBjU2HjXFZH5zaTmdGayyyJHJ8Z3j+cTKQm2JSJAVJCcfyBH0h0yK3d1wg/H4xKChu09tFVM76+Of271vlx47s9Kx4fWRHvh2UQj973X0i+hXhaHw4tQtxYAJVJCIB2ATss2QdHI2ooIgAgqKb+JM4QaQDPs0H87DMETvNKBpmNumuf2LwGtFgu/8vUuuTU34cSgMbx1LFs5DeDQlyCowdDbazyfzzLAGmWcCSaMPKBgcwNcA0rzHfPST9a/Zvt6MKNunsQoxp1vZjIm84IxSSEK4KIRQEatk4K6a4DSiSFAbPjU+9lVHwFWpaQDlQQptbz3+LTFVQkQzApiHVXjbP0C/KbR5HIpwXx5wH2/DWABTEadY4ZjxdZgCD+80/OuLIUviEBMaDVJl4M2hts+jEX4ELz5ARBgVvQ80ApePL0paYxWz9Cc8hqrbhY9Souuv3+s8Uio6Xj/r7qDngWqIYmIgo6VqNHLl26JIgpeBmwnJ5uzWtWYjX0wV+gV4tyr48feh3wCcXJ0ubagy2EBYQKIEr84ZnsDZn4Sw9BzwBCSJzwFhICJwQYRstHOlETSX+pQmmgCITQSmYJUqf90VBKOZM4Qsnv3TRMXqAh4NN1Awd8/QVBxbB+EYUW9YJaZcCZipHFlWsTJcNHEjX7EgUX4ggbH1wRu3WCzCmL3a2KqPi5n2UdEgFnus6TOMtpp9bHmiypYUXG7I7ko17zJRROTtWhBTLjwbwZqCsG7Iyfri+YWjegQV1GYsRiEO1b0j6PfQb0MUrgqdaYsn65Pgggg/AdxLuBa6IAyYXAfP9cjO0rhVy2czqZgE0S5Vx5PhOgIIHQHYbWAgkSnEEwqYEUa5jAYTnoUBRSCVBj4phsDorUCoVtFE5wT29d9AH/3oeYkTs2JFUglhCLim2sTXdfXMblF+4T77n3V5SfSzapcRWfq1X0sCLBPd9JRz534BaD+uwmN2zknY0O+8uuyiU19aEWaxuYV+CP2C0BXuTp3AB8pXlSmRhDLYl2yf/nwVIjMBHipIRLgjSIIoibc4eb7GrYvDiAQHAOLy6OFFQEavABkVb/Crz16bKvVKfeAXuA+UuY9a4M9OHjzXayIYaRrcOMwJoTMUCx1w7EFm7gHozNG1UUeBhHZJ0199FYxIqLo4PdE+Mt39wGCiUgmoM2lXr3Yb8SNnFxQqoV1cqSKJoOvXAEpjufHlm2tbvqgb4KrW8gBs2QZM/XX8o2DLdeHNUy0L0bfcxNyfZ0iUpYCmErDeO2BMrgawcZoh8JM59ienqYMr4HMB8t+tgysJQFDQ6yJhcdxd762XCvFAU4QO6siQdlB/5uVvgGIOOeHnMCMhZeXfp9FgHZN+CNAQAIxjE1rfvKSaR+q9STq3cfyVx+6LDMlEK4NmUP10lFUvp06xYn3TWj2SqB3LbPtIq+TRVz+ymU03t4OE6r9y4xdeeTIKVFeMFMDr+e3D4tUPK7FY9PXv2Zm2a0tZ33jrpAUmLe+dRn8JmJ0Qjk9VYL8C2gbtOE8+Ng/7F2G0YQayZxoq/Ih/doUnLpgLgWuoRX8z1FDj0XgQDfrBAOLQQsVhCAFA0ouFlQwSM2v40x+P/8lb9FPEe/IDdwj6ru9C7z4jQsbBdun11/44zmjqY7/+SQKvIFChtvfX6JfwT4DPHgcWuitcFN4kXJzqRyoh7G6j8D17oXrFPFGQezO5A+mLW9BD4fvufwXoS9CtGT2+NlUfuz0aJmIRkWfpCbzwAUZF9/95qD/CMTAaJhT+c8CNVQ3tx7NJFvFEOykwrnbGsz8DoMUzBI8GBxn4v9iyn1lL5VDkEdt0NiOVI2tnbe+rWk45twtkpI4bZlvDsdwv3gZt6UV0Soh1Rh868jUAbJ5DQCXwPy3ZE+XFIJ6Lp8oXM3Y+jn+YIWakygOXnlvTNL3nt1YuLfV1fLVaO9ostnUngvI4b7UHstcrtl+8YUGMGIatRxx1aUUp9aIvYRGiffbHJUkjUiZXGNeO2856rlJfyIQcJcV5Dvo1oShMhPF0IHBCKIn3aBgawnMhzyTPhdON51mhXGo1S5PyOF9NwnTEmuVQqs1mNpxLnt0G+xNeDHN3tX+QD4ommk0gelxEYmy5o1PJ2siuuM7Ji7byVOdk69pfuvKvLGrPLq9vrkA61lCtOa6bxsNIT1kiUfIrt1erpVGNya3Nb3j88g/pqZ9psaXF8/d0jLSL4+VbhiSEY+vv/ZXwPejnBVWICjdPf744q3nMqJd9ep+rzAoivLzgclSFaLnz4FfgiAef7hdDbvBiyFleDCkVD4shMzLpPlAF6SejqUolHqRJMkiV63E/hT4aLRa6+fzrX4yXK4loNsffs7N3TPgC4LgqtITFGWzbvIzx4sHLzr2efxQy4zmZFRBEabFU4FEaOfy9YSHm0ONB5hyoLp7EgPh2MrF4qRwLsK8Yel4TEauXIeMQomuRTBT4M/qqbrEQi+de3xMVo9jSPU2sLXdEwrASiZaTbquIqAZ6kPL3Hwvvxb8GHEgHpVeYZjmfBa8BAIapujIHV4LPDoaDQahNICD9fG60jkb5nP/gD/AUUXz9tddfQzI6Df+94YfnkOOAJxfRz+7/g//uhb3/ih7Hrwk9YU14fqp300mAkUUQRTwhvMHixoHFvdDi7X/I4t5/w+JTdXV5PGw1KuK8YgLOPtgvcewLaT6mA4yZjOd+D9/QuXMAVSpUzuZ199ZkbRMp5WSnHHWSVNODHqLJoNIP/HpesUutXAFnorE8Tkf9IvqzWDPmV0bH1yK03S/Vs6B3cy6YTrG9BZl4uVSx0aqdA2JVSqVz7uuDaCGbiBbzM30V3fsj/FP4h4QXhZXp4pOPrfQ8hULq3z65DsruJGcBMG/3YK5egFkQbnCwtsgOaMyLm8eaDeFFdF+a50AYHIAkuJcHIMnrOOBXwGIHMO4QPRnn4rw0FNZ0ApOMPBD7AKCFGXfnDOKwDMDzo3cI1JxehrpmjsoDFLt4iVRp+oWUnEgl1XS7VExK03WCDCVtwlsDhMh5XTIdQm1Ryaw3craN7t7FUmdR19vrqiznX1o5migOxtPGJla0YFhPgoDHyoiwfFqVRxdfwN938+r1S1ryzSlMoiiupFMx3/nSjx2Rux1wPSWRyLaeec/O2EhsSsAwZYcFvSzCpyrlU9vKrkPKVKLxK4Pl2uihq53BYtE0nfgoV62mfEnGcqEi00ghnfAj3fEZgNHu3h+SIf6C8ILwfuE7hdem/v3HBEIB4wT6EpKFb9rBWBa3Z3i0ITCJSIznOSoR+hykT4lyTJYlQX5OUAAPFLCZLIf1w7DEy3mbaHE2G+WYsfbPe4IoYEUEQXb4pPD+a1PvO7796z/43q+99xyvFi6Ni620ClCD5krGIrxOGOzTojkxCklQWEgZH5h5YUaODspMB6mYf39o7RmjyqLZ3/sVqUk56gezB/HnzH4FZfv1w0JYpmSzq0MRSDoQFYOMrueLFlJqu17cZ8x5vpzM5Uv0c9X+pqiAs5uJUxvxXsTR9GN96rT9qGwGKY1VE9UIAqbdlAk1zQaTTL24ecRWbk6p2usvNEtR29YMWbcSr3+niDJHjw/A91SZ5uxsM2oi4ckLGScBbuJKq4tWpZQ+tVig2nAFiy4oDN9R5KivoWqqstTv2opxzVAUvFHHFKM4cloVr54vP3F0uLaroXjSV+1YsuhbRqWa8GRVThZ03Y9MAseIp5L5NQU/qigLQWDru4u6zOz68XU1KMZEHKv7Y12zCtHy6x/fvSyBfFysqZ0GhtdMRym6yPFgZe9P8C38fcIjQnvauHl+dXkp4lgypJjtSR3kxhangPfntXXOm8fDlSuERptoP3sD8eUFmH4a0ZktwSwLoJPGG3jMxe3cmHMtEF42w0FGvbkDwL+L1eFBahpORsg4cuTDb49GJJdY3q6L7qWwU2gwVyfv+SApSM7JRV+LZlvNczBflsckVc/gE/VSDThLTFRMo9A5D1MJKjCbdniFdkhfuvi+77BBhClV1TBOBKAUEHI/+3Hl0mlDH6RUqgZ+NEsWhkxUVC0nxTdphFqrk158vdCyEPixqKScVuloK+HLXOsn9/4Q/ynM223h1PTEIyuYSsdB1ZwCcZeMA6ETtwUINJjyewdVDkkK04/FC/0hh4XIunnj6uUzO81SI88JlMudXfQ9Cx+wqGLo1WHpALjUrPoeOv+8dg4Aa81M4UffQHP3CyWHjxiNX7zwPcsamgxYZlxcL/nHt891gmLFURmTg26aGuPzMrYtOw/is/g0qDIRq8DOpFJNRpHiprV846abzFeD0v86OvLBneMW0lSKb1xA2f/nHV8byYyS/WTGN0quBVjLCkeiEl4oqFKk6Ll1nam2uz2RCIxcttc8QGtnuBQnLJbuVxStUIxlmxsv/uaieXTpLZJErVdmueoy+ObbYI6fFSbT4d2raSKQhbZjIQnU6vb1I5hsweSSA+8MtZuJd86dmYzq1RrPzIgVZrMV+ts846yjuZsNQ4iaLTxsADfywRdDXXcAQxsI/PYNDjwG8RPmpyFcyatJXPfOKtj4sVNIkknaVogWx5n36rKsptOO6qkEJ2O19uNXXnZkvXom6C/qipMr/9tzixVR21rzJZ8aR+8mAIrAeprhKlgb1NTUUGQkoqka6/Ulmior6HaNUOxrRFNv+lgGK7laMjc9WYyDixveU0c+fek4KKNKwspWAcZF8asvvHrzoiIPsyrRsNIsa+0hjJD4Uoxi9zwXBGps3F5ay2YRpZWA8onU9p7Ed/Fnha8R7k4fXYRJXQJltREDFz57ukQk8QaSpbcggdFt0M6yKMmQd5gos+cEJohM4ApBBDvfEbjIo7f2zWKhnXe948UXnnz86uW1lUG/3cxlKnyxaeLNF37emO43EP+hMPfdwj6/CvaNsIH8WZVhbj5vVkgL81HxIGxmARHGUvjcMHbgqw5aP0gtP270vaDTaDmxfjtip+vHFfPOElGw7a9FCbJ078ZJN0g/W8okJNmrOMbZipe0aiezMWJn7LUktYnnEYtYjsKcIrH7CfPi+vJypugXqGg78SwmYlFOJzzV1SPvdi9HdrJmozWNl7snp5Wsn62NmyDglymS009YKoo1j5yjbBCLYFpxks4dk9GNcmpUQ3bSXs4rnk0SGZ/YRE4R/9g4Hz96N5u0Itnz9qYbxCIRTcNR0aJSJBHqnqPA9X4G/4CwIjwvvHcaGTKMhNtX4I3w9nKgEq6wtbA0FAbQHJXs0/tlEAgloMepf+KKKJ6x5DD+BBFY2J0HvgKWbDx0cWe7Ucskol5IG2cF60mV07tBaM3QnlFI3CuoHzJmfFjjhpgcBP3QTpQNi2F+SaN9NrAvJMHOMyN3ULgUMF5Ds/Aeo5ciRDoaW1GX0sUCr2aj1EgVA1tC341z7plGS9pWW+cixe20/DUf6pw5g9JoaREjdXQZktRioiNdPnrZdp5Yanqx4Sk3pqHjx8ALGCZBh0qKiTHu+m9diAxpaimbxRAnSxHwG/Qx3OltPH5JS4/NJLK/8I1vm3a6Zrmktstwh5VZfIJ984UpTO7aTqXtNkVs0+ObNmUyQrThmY5Zq60VE8p8PQTtvR2/F39SeJ9wZXqphzDn3MI7r2Igc9v1WoWgLQg0RgV2DygeZWH9lob1W/GFeVXvjkDprBpPd772PU89efPG+bNHp+1mIdeQIQQDmOrJPCBCJv9gIE7Cig8PuH4aHS7eHjC4MC1Fs/gB7gfEDIPpMvgwBVXnlQEwcAqZIRIffKghINMUH8sxNVeU5RSmyV6gDDoXLbS0oUtGL0D+1Wxx21QVuaBhwswAR9au2PbDG6rk52Tq7FR8K+aJCo0Fiha1NNY1GDIWss2Iu9YXUZKvCEmgWI8UdCfwTE2kTt7GBq+4kNMaxnkmpyoWjfavHU1G2xtLq9oS3FB0VM1/KMdESavXVNky0rkRtpfHitSgwUPbH7jqqtampyANUj/O5gxNJ7HHBheHxtOgZaPnGdnsUlmRKIC4Si6VDCfQGGYZHpcZiEsPMDYHAv7eVD/mSiC1LiPIt9uziCwLfOULC5w88Dr8vf1FK+ugS8DkKyn/jOuifDlFvXC21CosVCmNA2n36bxGOSNslc4hz+YWQ0PuEAfM+9CKHEC5vbPz0lgYdQc+gVV17bxe/Oq8SocVzQM9JilSs1RdblxbikSi2fTrFSCemS1IGbpMva5Fi8mCCk7fP2HIsr4k68XGmYekqEtzBTmBP2WhtSYz2gCOVtPARLK+qlKvJ5FmB3/3EIQnNmpbUiWjZLFaaN9qb1/WqIu1tS4wemOlUuxeGJ+4VNrUQdekWUTAe3+99xJWYc6bwpuEo9ONIl8l3OZtL0Iod3kBEXIXFUJxJML/z81aJubdMFz3rC4PerlMFKhadEbVDpAorHRx9kDDyOF5K+QIlTCCCFCQMHtF5/lrHhN8PjntmJXND6sG3j7540b615lkkEi2gpivi2bQEGWCi9djKk0vdDMQNvmNKAOaKSWK0W8AVhU9l6iZMsJmEM/3J3FHYgjJgy0JiK8h0p6OncyJzXM3EzJVdMOL4U/4lln0DIWvVYkI+U5bEREtlUW0XFFh0omxVk/83Q9ijUQbCau/vGw7p9aHTx1PLQREx6p2bFUCy0tseYG5+WvfmLhwYnPVbx03jDD/OMCR/y3+HiAFHxD+/TQTQyJZaWNJeesRLEu3d3cIlZ8FNJO2n0Ls5OnPx8Dzp0CWgbso9wRFEhWOZpxjPCfIVJRD2SqGspWJAjCOeS04dPbYaYGxKIOgOAqJiOe4eyBmCVZA3Upk9iQyexKZPYnMnkTe+KTwIdem5v179UqntFSNdwow2c1JBg3m1PugoBNadF/BQjIacXIBJsyiEE65JOblD74uxDk5Xx8Lf/YPi6RzQWyhed0oxMXhBD1IYPrjSegLHe5Q58x88ghTrJQU76ecow87FflcTgTkV0DaXD11/rpJrM4jRaoWc7qU8jVNQsX6ThGrzHLkdDqfY+V8xtfVpClLWixux2o9cBs/5o5HqtbM5tBbVKpbix0ZJp+gXwX2ZgDmEtOVn86XxMdzvezgVkHR1pczxlhBZjcSj9fANkglS8uXzgwqqtXbkFBnwU+LyEW2m9eQZBRPVlu+J5cjEerUIuUTQ2B+WilqJDPuJEKw1sYl9GYsedu6nsla5BIgs1GERJtWxTAH5gEv3wuxe1f40Wnkkoqp8OiNnAWOOkZg6TlmtgQB4kCgEMxUpAiwUMRUxM/N6hiU2l/R+Zb4F90T5fXA9sHlFEkUPScAxiEOFFg6uOnweqA/+vWr53aqrWONCl/ERsODShfvpuIwPANdDgmTUCwfAOpsPZ/7w/4K0wPymGfjWbHR9wBRQJEUeKVlAaPfkhKpztJZETerKDasA1K94yxxpMUjniqLJsyrF89ejUTPv1vJRhKaIkfLsijKsYhjSi+5YnV45vQ9JktH1phhRGCCzYTedzUN/ZK2ao5d90hn4fKlRiQ1qss9Cn4VSakKUvQ7jT7WhgS4qqitGaKkIrFfirnInWh6sP1oc21nS0a9tfJA1g2MfCRSYmgsOuM3oKPFGP6i8MvCH04zN08fgRj92Nc+0gXsfRlBjG7//Jc/912f+fa3GjKdI8QIQhYRBqAtybx8BTmPygKPaPrCfs1rJjl4b1zIeyyZG5yX0wf/1M0EPiHynTc+hFfPBmBh8f4/59bDu8D67g++9uEPPfPUw9cvXTi5ubZcTyiQOPja0WGB6wGJzr6iJDYvm81TxXg/IR8WxbJoPBk/WCEL5tByuDA1S0thFY7r/7kbVaqVaqX6gEryQ+Thl/FPw8X98Er+O2Zi+YC+hbWJ2b2mVIYERGOJZEBYsaN2Y+3j1fVyIkCyUYzrmLnjIkWeSLsqKhcMRkZHrjDjyCBnikrvDIs1XUhpKGEUl2o6Tbqmo6iqE8TNXkUjKS2myVoL5C4+aZcVBafTfJGMiZkFSG6SBBpZj2Yy+QBmnVQiVJGz5oqcdXTLi4tUrGQsxXGSkWLMc9ddJ2VDbB+jFy9QtZYgjOq6bIiGjSGDleNJilpKpnDie7/1RBk0lOnEG5ksM1yzUglMREiiTKjXbsdtpz86pqBGqiwrqw4Q3iwTE3q8ClLa7KU1CASbJUsanX5wa1p2PM4v/KGeZGw0uve2pKg1aKOJEFOV8ljWvURdcbrdF98yVFWt7JxiCUapEmemslCADC9G9ORHnv/QZEmPFIBWTn78rdrWNlEqEp8CjZhh3PwxWQJM/ITwLdPgHYihp0GUf+LDZ3ZPQoKDuPl42CwbC9tPAdoAogHkGEUszHlMIPf2QS5Meu4bVN+0/5X3MBAZ4Sog5auAh3ce3gQ58+0v37/32O1WvVMBghHnfQLzRcDiAw43c6MHC8Wj8cCbu+tkeKgXZtJ+frGFDhYEwmfOV9w5pSKBP54LlUNBmUYHK7hBFL7dfwhvw8EvAgPoO1izJcVwkppZLBXzYL+6orjPZlSaSkrxFZFEuhG3mhXRmWTei1lWvEqUYhfT9si2lV7Vt1TqPrUmMqSLy+2FOO/+hGCpLbvJZMT1DIOZlhHH6U5StNKWyaxIhqB7shKjMSI/E/+qwm1HXXNAZ6gLSybNZE+4pHLtY2ddzb4u4wiOkXOYTrTYzmkxqfzy7ZypSqyR0OR4YykmqqlOTrVpOh/rJhJ+xIyMHwGelyscw7y7C11CbVOEwSdLFaorEpb9QjJy5uqLyzlwLRIAnpNzEqupNcmaYbAOPO1P8G8ITwsfn+onjmFRWGhBHttXIzmuLYBUgcrgDeLPSWiuMsKVtFmVIPrfvC6sFWS+4hKB1/JEvka4XzFwROGx2/VaqWBowtPi05RXDQphSpxzrrDjJjR0Bj0oOuG/WcKcZcsZbs2zJ+TLLDr0h32Q9aOD/aWCeTUBfa+2rKx6EpFSWZGBfFN6uzsLW8cbZqH65KUgtXu1lFRKci2JrYITBwnTNMxMwc5klmwiq2JCKgRWLJAgwR3Viaju7HRqmdWH/XSt3MGXSA44dzxFUYRJTFXhZRNve/KVS5lq5mJEJCUbwE4rQe5o+QkLm8Ocm040uimj1mpXVUkSo1IpnWqnKg3DthR9tMZbklMZmR3pH3vz2Xcmy8J8Hb9CSpBP3y98Vvj9aeHbN0dElL/nE/lUwgfy/G8+hCGCX3n5KSIxcfs99zFv3OOJsafC7PD6wT2Ft2dAuN/5B/IoJ9qAFPs96nzltH1wIxdTMkZ3eDIUifzo4YMeuGnaOrxekl74J+8RuT+kv+4DSPj0d3zgs1/32Xe+/dFHjh1dWep1NEV4P3q/Br5R7gcH7egzWrVf85t3qD1QzJihxixxPqjH4KoMzqI39D/vZ+EFEkJGqMvADWfOtYb2c+fsd0j9r6iZTPapfdgbZSEnZHkoEY+J1ItMi/kRKEvaKDFUT/gpk2EzksZSKaljqh8De29Vi8CjaOVdSxkvqoiypjpRFjaYowWv7hBNjQQyQcr5cZvppppQzLIGVAw9jHysKNToeo6XaasiZf2VOLpVGiBWqTGsmAsySxoKUOAY9ZRSq5ikS88EWPmk/OFvj48quXojbVjOpO0TllqJRAzeH2lnPYmaHVAOZjRSOu0H1eLEkFj3gh3ZTjoSRxwOOyRu5/NMiwRuqljQHU169EgTiaJKJEMU6cO7snhcRXL6oaWTHjFVY5Xj42MJ9fpCgYmVyWJcFw03W6dM94yFRlJBtFnuGa9/k1skSJjVpX+EmIBRrwr/bho8+kiRSMJ2uwmp8uQC5iKgh8jJGVxVeYcbSHdO5gXOyzFvWnmOPoBG+xog+s+9PKT/5X/4StAOSJDCPoc57XdF4Z1v3zy2sVavWYbwqvgqO0QxcEO8gR6EscOmgVl1YF5qA+87TJlhUY3rxHmx5v8fvIGg8xOSeoBvX4/0xYgmF91BhBrZPENabyiiyMW6irBWyQPsPZT24/ZynoJYsJNF81+Ke5JNxUSGaofIN/yJgnz/0azK0kGdYV+EfJlKYJouyjQCSFDUZanNQAt4xYr5342Fyb0/IovAkT4pfEn48WnxWUTJv/7YRz98EyTcuV2MBYYEwnAfWJm0XatAfp4zpmUFAZ2X5MPlcgGIbtgiyyjmbAjCmss/NFcccz7k8j04K3/v5v21diwJ3GmYNHuE9JWP4JW62Ld967d+6du+9C3f/K63v3T/qSfXVtqtUqGjUr9Z9sHChQ56sKJaLITUHSg5d63DlooZyr1hBXDmGun9QsPsugPUOlASvGoxr188uPQ+5lV4zrTmpQzk8/XGsJpB9kWEx/iS76i4wEC8kkX0HqAkOSCsWM6spbsq70x2muA+LyOs16MlsJYsD5sRlapO0sGxnhs8l0o2Y+kOqEps9fMKBm6cUDQiZ0oSJnU9NQC6hTVx9ZorYrLo9Iei23dVmGOtJOoiEQEhMUZMvrzrdOF2cMeyJZb/Kp1OFmSEpGiye+okkjUgyCJXE9SIX7fRY2h52e9G1kq2WtOBzppv3jIM/01avSDLsno0KvOF30hlvPneL6+YsWQ6Oyp4jkYN1qgmMVYYizi2qzC71nep3u/ZQQN+1/ZIkeRVo6qgijcpKwZfexBF+J1EzK/oNE5VPX+zGOyaOJ+OH7N1OT5sKqpbLiEMaZDokitFM4UI4N5R4GZ/Bfn8mrA13by8wFcZtisJLG4BiwJNCpKUL72g++BlnKPzCjCTBMaXm/fXYc7sbJ88sjEertcKeZn3XXmD2aLKnEA92Ak52C9pbqBhNAg588Jhrf7BjscDF9yvUICMRJ2NxMO3851yKo7tX/rGb909Nzr1mTQ4QfQb65Lj0aZNdCzaa2MzaA6PVuMxR+ktnP7ky3b8pZX2oE2jhe3dWs7xUun42Oii7131/Ljbqzn2uz/yyO2PPnP17QMZwOkc7+8eKEjFem8xKhE/U7Y0rLU33/31P2bjte7W+LiCTIvK1WS5EPcVEoT7OP4Qfwb/mPC4cHl60UUgoMA1745yIDHbiNDtLSxK0nbExsIWrwnTcNkkXEu5A/Jof+WeEPEaxKsp7ty6efbMsaNrK71OvTCReXfsfA5XZqvvGyg6R/HCgwsmM2S2DpYx5wv2D+rxDpqv9c+ikz+zuB/C7HQdG8MTb2Wrj57P1osFVMzTeK/Z0dWTCmp3LJUpGbekOufKithdV2X1wklJra1nvawni41llUpKv2ddzjbHixph/jkLH7l6sZnYyKHniycCeXV0gkTsIA0R1W4TQ8YMYoxlhos5z46YXimeVZQqYsuKgSX1RhljlncY5OoWD5VuQ/cG0ezaNCd7xy/biWaivJLg+7/2/hjm/hP4S8KLwtWpcfuRE0cHaYq2Hg8VKs/Y0ZkHAwm8L/KK3v19GfoPfcFlwpQLlxeFF59/8/WrK0t8ZXFiElYJq+kHOxQPlvCjA+8rqB136weq93B9uCQM+ZfrCY+mQN7Pl5rh48GshFKpHnYHgK2YpdiiUqvatlyRAqJWe7bfzWc0FakpP8GkIKdRKhrVLkkm/PgZtzxpiERF0Yd8omE54YNQEwuALrEUEjE64ZRUZYpS+b5v2X7j3DgelJGqRESDLLQADyqsuGCZ1ZO7DT9Z7mZ9ZiE5iJfKjmd3j7T9dMa1nYVFhFWmZpbbcffi71+VrFXIDFhOHRmJnc3VYy3cfFTGDrDIWV3i/ThZ6AOBw9moyBtlxTBf8prCE8IHhY8I3yB8ahrfRAy98/mzJzrVSlYWxFcQpEEkU3EuDXuQx0Bqcko0bxMOi2J3ZmLhQQFxuGj1L7wnXMByP/C+t75099GHrx8/ur467DcqvJQ2mbHvmQm/MtOFKsAPNf9BoptltNn1B4tb/huCM5STM0jcj8iwjME9q/hADcNCfthtNneh8pijatHvX8eyNRiqkuWmY0WVPZovLiRc3QzSqoyk1QXV7mskPyG4uX3/q1sMk+zOqm40mxk1FjMNNRNUgPigqpIclFTLieWSrcXbIOKX+zpeUmUc78uJXjWmaYzG8llflvpiajF96h21biLx+lsg+7mimBR1e5JnTInnjzWPf1vPTrue4yeSRdc1kYwSGwlqZ5MyC8rrudb41jOJ7DmXAMc3JJsFmcFGYafVotqxsRktxxRNUoz8iKK+/j/FvtHOFtTUMsnGGcE0n2va3tc/Ise7rHEiX+nO9roRIbf3h2IGfOhdwvcJvyB83fR9P/T+9zVLjgVk8xkkanh7A0L6VA0h3rujCISv9Mjw/3OCCoRAhQQm6ZouafcEWWC6zO6EzmCgw4VNTQubG83Tgq6Hm5mjdAcJP/PlT37Lx7/ha9/zVS89+fijt25cf+ji+nKvk88K70LvMvlmwQJ9QzkJUHYdHxZXQ3cIG6qi836fICP3wbQWesPC3IPeUeRu8GCbVnXhoFNrv91ROiyyzplX4P29ddUZoeeikQ1D3Rj6l8eJ3UHCnYx/qj4iSrVmGEsxVVNMx7HyKVshve2n16sVx2+PPONYwrk21pTKJlaBRTCRMVkKLAKZrerFRDUrLuSq0XSm3diNunEl38xq9nQ7F5V1Q8o2NMaBqFXI6vqp3nLVW8UnJNlUml2KUALLZg1A30yXl+tpm5Vdi0rAcyuygzPlzh+3qqIt+hn4IictTjLK8sQN1vur+C0NEKaJZjvn+9GhLvI0oSecaDWXcb3e5HyhPPDbNds80XQetkgLsEbidVPEwMZSOls8Xi7sHrlWpPVYypIjGUqxDdPYdGWC1aqm8g1r4kI+rkqTje98fhQUdSTaW0pEX3vnI4psTWyMFD3lgoZJnu2tblSbnlVV4Mcg83e7L2exiv1MTDWufmagNBqAilJJMrsbkHJSkK9+Gn9eeIfwlukL78hqWETCszd2j4gixtsFWyLalqAJ2rzxTCFYVt4UNvk9IYiMiJzdU8KA+auCTFS+LAB+jgjvwzBPzyDtq996/4Vnnn7qyVs3L186cXxlqd/rLtSqga9zVw1xjfvIrNg/2feXsJzP2/ir3JP8ATOJNSsyzCoZM2Dz+UEM4RISeOP+Ij+neLyZbR8sJ6MQx4rhFo3RfsGV3dbpyVFcPV/yQfRXz7htxFLUjGoer8QXjkdXjZQ7kT4fwaAEEYodbVEO5VtLtEDzFQM9r8dt01ivKAYhJL1YXm2qtF2UMimlmbTUVHYUKDg2rDZsyO+S/UESz/azObXH0J5Kd5YSSF1Ibjrama4RNVeUiBLu5HVrylI0SF24a3qESXznqIxW9Z236uAmMcW/LjLR2nXqup5eTLd13KaklA+yhCVbj9R7URHMYlE3+1wDsnhf3V9zquA/AIx6VXhseuv29UY85lEBvfAkCLT3vBvE1CkkQoZbQHiLN1dgJNyTAX94k80MjcCEIfCYvB4WLvdFeIv8O9/+1peefXr39NFppaQw4VX0qsKZydgZ7fcqv0GfV9dnfUqzsib/nP9r9v0h1jzQDHVoPc5X5n04FpoD2hwn4Hb2QPforES1gb71p0nC3ayc9MFZ02A1N3PcTlSaoyPp7ilzOApK0sKxVimSSnimjfVWZLX7bNsNjtaZUy7TpVa1slAou6WkX0goVjKSjkgT1WovZuqjeLlogLQxkrGSL+rJ9WvxpaZERVIYWW8zQGydHVU7Y9kwWbIwTBAWJOsN22un+uvx7A2/InuZXmuhV7DiflTX0LkPXY9+953aUmtNEYs0EHG11ljxYrWFwd2ff/95v2BISsTOFFTtI3cdq9qRvQSEvEydQqKIxXRtnZmM9rrmrF70Evbwbwi3hd+fJgEHsIsEJY5kchZReTQEFd5CIqPAY5SQx1BZYpRvSeb9AXfCZkbxtqAoczaizreg83LQjMfMqkd9fqNMpXv/gjun3YObkIrmW2T+kbtnt1y7Nk0i4ZGHz+xsHltd6ncbtVTCUiVRuI1uazPEGE0G807K8X4vPnegN24ACsXIjCdZaH8D7+GqycFaX6XKcWHGpMME9vEB3bSZbA8iZ5z+SEaKVW+txAq3uiYxViP61pVGtVwzqOp7wBm0Tj0SKBGZQfhSo2Bauw8VO6f7TSqxNJPaVw2lVYhFLuIzuEhvu5IuW1K6LCqxXKPeqtORZXQH957MqBNXlnF6ZNoRZstFg8rULbY1l1j/6omHCm2fyGpTReLpetJL5bDMbf7S3rtQFP+BEBW60zbwESzzP7ZtCGRQ4Cf3W9nn+6Ye5uLiXLXU57umEHP4tPFTL3jDaZzvWxv4HvLfSqRnMLYXN+JIcs+s4J/V//ZPKFJUzDD6AvoCQQZv1EN7f7v3TuE78O8LMWE47Snw5Bgi8LtdRE7OQIT7FnmRo0m4k4grSiycrfTcMt8LFayjFeRwUjEahIwWfirynxB+M5LGSyKLG5nIqokxHa21nkQqiRGR/w78t99KkT/DNQF9Gf1f+P8QnP1zGhwwIc8ioaoM69WN7wakfO75iKq96U2PDFddG/1y+4ttXb1/T2fyM08/3F+NyPPe0d9Bf4H+d2Es7ArVaWkRZg1t+y7I45PHet1WNsH44ROzxuundk+3MN8HtU78B72JdzRw0Mvi6ACS2KzXrDKswgTz3DQTaNUDXMwCbdpAo8oaKlYua8XtHu9QduMZWZRxjAUir9oiJwJ3SmsrRNV9hK5cQeUGQ0gnb7OJzHswpaxPtYs+MtvoGRZ0M+G5LIaqScgguojjD587tQGsPTAnY9sryRm2sVHrab65+OhmsiIZnfe7NYfIuSgemAa7/yzhc3Fl7/fQD+PvExaF8/xUiqNHlhspmUEe2prrU5jxna0T1QrmsRh4IUgH5oHsn69OwgC96H53/8J8QXMVw3hhHtxqwQxN5D9Qsq2OqpXnHIlYrTUHFXFHxpg49ewClSTnOkIODo53zinidQtrFMnKl3wUSUpqXPVacZ0aeTkmGRb+1DbMgJZr6TiLOpfMY6uYmIWghInaNnDLfuWWZrbibfyQFTn6mdfeDeEIv0VE+PXflEHmU4v9itfSpZTVuXsmT2kYZ1t7/yd6Av2KMBK8qTOIuookzU6SGQ3Dw1b4oGeOMC8pwcAh34XseLbzcByeIBLWp0FHkUr1+wOsa8sMqck+kAOC8KcM1TnP98NikV48jyUpl6zoZlySNjrofbV7kXXD0JaALSppReSVtXuyYl6CebHlWn8xNongwRAxEyYkWkW4g8P4MPZ+F30vflTYEfLTzEI+owsSeO92jJ+DMzfkU9tbG2t4BqnDeTEnG26vALuFjRTVSgfzEVSHo7BLIuhnUf9gz59/2Jwc9mvxfTJJAz2ZIqhau3HbQDl83e1pmjTIpf1w3y8qrRdlDMFMxZRtqExPL+QlVW8a/uaJhZLPctgyMB4aqlvbUU2xa792nh03K7JcjaV97dyFlivB3WJ+xefUSCw51fxib40ayaQb3Xn5Yt/bLHlED2P6xN7vo2fRfxCawho/BWixXyykE3R+Tk6Vm64MA93fxRN2nM2WF8JQzobuGRz4J6kUw37ssI4V0k30qOS3FhaBSoOeTWLIZETVmpFzlSOW8vS5CDLyLVWWOt4neDHHI4Ve3rSCOM09iQ1k53MlL63GcmZtcHRxgTGa0vr9rqbc3TRNw8gnJF9FLSDg3iflIJc3VcuTUmC1zF4RHcP/Rpjyrs46PNexORPfziSB6mxN17Bwcn4GFtBwiZ+vIoYnIDzK88A17hW7brLeLAT8ZINgPJpxY87IIPaqo5kkDM+24l5s8VaGQrVYDQ8sGvCTO4r+jKiFPTZXytyid6J6LqdFiZLrq1ohZtoqOHQmbdWK/OwHORKI4ltM4yZCEiGnkSgx7T++F2Pf+PkvxzTUvZBWjN5Ik+OyxLevokKe57G1xnJJBv3jfO4H1IxpfFhkXHATwdnroJ8FnB6AV98QetMFfiQL2r528vjq4rhfLiRj0Qj44BZfOwyrmBFh58zu7o0zNxZa/BCdYAJhiR/YpRpaejzxwOtNUBtplMXhcqq33+gbFsJCVOeElG/7nKyi0aRA+vPO+1DwRp33kAXJRFgVsXROK0YU3FiyYl0CMR3BMXnT3TCzTLJPnzeKqH3yrMd3watqFwPpkJE0KJQditc3F8nuK89Li8wxY5M7u5Dne8wzRJSwRSMVnrUl4da/v2A+UcAX/S1KJKytKRH0l0piVFNS01VN17rFYuSRRySNkNeThayavxajC6Mu2eWW3xugHwCdd1lITxPddi4bi0I0XLq4XGNzQDuzi8Li4kzmj2agPJydJTcIKwU8NOZQn+YlhUnYDL/fzMn3nUzmh5odLttY/LCpXxNPA3mIRBEGOyNMefkll5I9gDCA+pImeXRlrOSOOaCJmaItX9aAxRIV8KKE0qpFGOqWRNnrWYHZlzaDXMFg7e965c4LoqHw6nU/4YCqMYmoopLY7rkXTtpisyrlAurfOXtj5YJ3+rKKZayidBbljl14vtW4jUqY5pTfLrkcK8y9P0ca/k7BFlYE+bV2VCO423RDxhieisCbwIaF2SJ7NHu49tg/3AjNyebhqLdaMrixZav6klnHqE2ZXh0XLRUEsqSpHAFBg0u7NQnHk4wh7BAphp+qMxlSvqqvGi2C/oZRNdcv6ix+Y3cxl7AjQAmAwUgbxXJlfef0WZv6wP3x3t/sdYUv4+8AV5/Au+cBOPi7T0Ion1fb+QE1rD/JgHfbM5213yHAl/crB+Lp8SxlKuCPL1sGCQgTF/ATuKEriBEdf8BJEXdZkTUXHhuBIdgRA783xWTLNE1fAdxOEkVC+M9v4qJCF17fe7wYEb85EgVebAw0Nb74k/mnk4FFVX3WLx3b+2P0NP5+4YxwU1ibLmdiNlD8rSNLw64IZAtQTRDf9I8d+PXQxTO7p091FloNKTwai2/BHA6A/fn729iYicPDzzb2F51NDHA+oKzozyoNg7D/tDg7GWAIzB+IGKS4Abg/8w93aN0kYQudog0rOnGwmU3FiGqeY75ap1hHZlRrtRfkyEdsyAK9LqQ1deeM+JSIIIaUSOPjjRQR10vAsXwDPYw+9kkVhHwpT5jSDBg4rpHKrTRlpg0kQ2sUVcl3kRXXFpAWfc3yY3IsRqk1mDwEOhC7GdPetOpIjX7OX98MRvG4xjzfmHHhx8B/PeBsHeDCeUDV5gbqR8Md6/D/PvkCgrWB5kulG+Ge9rDrLJqG+fqdBcBemaUMv0HkggwyEzMmiQrDTqMeQxqVew1ZKuwENqIspjlFrA/1/Kfe9fK7c5QS0THiHkyNpcK3jccuJv8ymmH8HCZ574/wX6DfEt4F73WGv5fL9wZwjhFwuux7g/FsjwX31RSiPv+PM+gZ2PhRf94EMN9NPeP1s5NKwoaUBQxp+3BptxP2dXrzTfkmHs3O9JuRS08HPqAbcbSxcXSM0l6ybOnbigkW4YlH1m3VF6lC0csZ3SCGTKgVr1pqXQIUAkNUa4HJD5kEHNZkgiTfzkf0jo4A96VAMV2FEE2KUpZAz+vohmbGg2ivX7dd17XctM7KhIoSkg3aYLnllUJC82xRJUCETITe1LYd/cROZzGmyoYqSjHCXniRiMUCzReqLpZ4FqHj3bULHqKarFCWZM+8TV6DXOrKusUQxIBSFp2d7edSiZk/eHt/BkP6LeECx/pzmsIj68zWYrkQUdkM64f9kLyGxX5OXv1JWEtJww9SfzAZ94P9qZ+EOYB3AVULxWohnP4MUNxidb41l8tmTh8YzWrDniyVpY8qG3zfNWGEAD0hfhTjlVXDSiLKi1xaoSBSCZeKCFUvhYrFiYoqyE4GcueeitFCk0lpcflZWtes2itPOpIqSRgYs8pGIzeo64VjO8ckW0W8WoB8/959Qod4m0NEOiFKR6+4l+2aLavqrC/i2N4foG9D/0lIAYMHHlhKgaoL5odB9rthxgMSdNhIEKL5fNsrTEAZXIcruZlwe0DvHQOqunlBgQGdWNdphKjPX4lI9shhSMesci6OrRgAp12vKKKk5KIvv/qUxKrrMmrbYvzao49pmJ4oM9HsRuVf2ZCZmFKSozMLK6pi1zXgUs+Ga1T6Xgt9FqeFoyDibwi3hEemiat8wrbP7ZRziSBqUknFW6vLS11RODmr0bj7Vbz9w448Idy2ePApSPKHDiX5tany0KWj09GA06PZGtPooO0+GkYjB5FgpnB5kzROIf/g3ArIG5Dd/bCGAkySStxdRgeByg+FigYdHt6VYjSQSVDX3ISTTGlId6qMNwqwJ5glSlheqRhIjKJjx1olD1InOU1h9pCcRFqSUEPvWmq+oCO1de7TkC4TDnGAMfoV+a+TJVlP1NOajFJ2oS5bAFnnJQMCi1VNSSQGHW28dxUvTgqmPFk6ajUoSXwuksXi4otHj8hUcqloxJVe8pEtscqrHCmfn7O0uldGn0a/KwyFs5BTT623JMipZY93hIQhMZrtfuogru/CE9JCrtDNYO5BYUQNwkvGQ06wQ2l0oPwH4VSij8j9uKpifk7BTUjr5RpGrqjdalgIiUDtaimtUAy1qSxJ5wB1lMWjFlBAMYNRpI+YnNJH7gcnUsJUZOeJr6ur7RUVS422rOZYgr75usWGeY03UECiCWJwv9567m2ad25oUMmT1KPv60mSOxBBQs7PSnH2/jN6Bf0m5OPKtHiiUpBEXgQJVBEBeCxP8AMVkNZCeFIjh4zDHDtfPoZJOtwnx9E4XNQJy/WDzKws03lg0To8HJfyrWPPyEbBG+lpxljSB+2t87GjiCc7vm75vkpsZmNJS8XERotvcszXTiUXPczg/XCEHwuFNCmD/gMzclauqUYlqnRVwk+ZEkVmR2SbKZ5MTGY9ejau+gnwYOSgIDWMLHvOpNeetiioJlMBBsZECXLX3n8B3f9N6HeEp4Sz050i2OTc6a2CiMVsEiKJANzwGpvIu+PuzU5We44fIyXN25z4CYtX5h0URNx9/M7qcq8TK1UoDZrV/aXcYLZt9KC9xApTHD8Sgie/w7M9ZqnQm++4K84LLYOwgD47K5OXWUxSZHMuxym6QqjTN710LGIutkSFKoYvaY4tDbtMsyjaKTYwxsRLOqYTAI0iFxnWpkcdgBclTlTlUt2Ja+BvIG6OLc5arSU6aiiGnTBtEBhKZCCrVCplYsWFZtEEdp1KKnZSG69rXj9I8dAmGlDDAkyJjchJoP0swYgYKZ13MKq4kq9QM5c635PUdI4fw4NE2rGIoujS/rrFn6OH8dcAanemrSEA1lYpESX/+CGw/V5nIZIRuWPyXp7ZohHne4BgfB4Hk/Do7nCHfTUkfcD4OOEbTf5AVC2+JQqGCynqKcXbBc5atHWWgzc7XiigW0DorsS0MZrgr5Fkk4oyUaUIHR1Z0GNnb7slI2UA2fdxL4idEVe3c5tNpMf0xrvr8GbK3p/C4H5T2OVnaB4rY364986JzaVJr2NghdcjDs8d540gpYUEmR03M+9ACvohFHObdtBhk2QYYIWDFRK+UjaCAIwGMz028LiwDZPzGhqjz0Ae1pklq0rWRNQ87yiiGGUuoY122ZFEr1/RASNMFslLRoJo7qlIJooI1UTU665mRdxGv0rExLOPTwYxHRlUx8ampSDUMfKJRMG0Kwb4u5uaPPVIgVK+8m4tW2X7wq3kSt2EkRRspf1M8CZHj89y8gRy8g/gCOj4S0JiGlwYNgPXNpmwlZ8n5ul6SE/Cqtkg6oUKnHgz+uod9BWF0cJHj/ePs5sdsHAQV7MNqsBTijPeeNfHXEdLolwCVnfqlLNUR8hkjDz1tJfPm4SfYMMIlu4RkTpiKWtEY1mGSAB4x8/OKaU19DdJTlkUx0g1IJrQaKSVTBMvRN4P2ZxMlrx8UqfJx2/Fy3rCoBSr0f9Bu2WXFd8hmUi285b6moE93iFHIz7je3WF9t4f4M9jT3hMeCc/peoaQsKTd28sj7ou42etPnR2+yQAcF/B+CQ4/gO+8hT8+14pLzyGHhPDU6oOpwWoGT+/c/+0XFaY7bli88ozZQ9g8H7rUD/YPwMw6gXhkixkfr4fk9/DqtTCfvTBNqLJjJLj7xVzoohuXveTRwx5VqVAATWZKgKQikSLN+F9iao6LNGPZBUM5FkNRGx6RVVUQAzrhoaQXd5US0txRL4O+xl98inbgwhAVPGbeR37EUZlBBRQSqNvuvjqE2Cnftewi0yEfN3QFyoXa9iCZ1HenW3FCXrsMdWP+FEl3q/kFXP10pW6a2SA0ctergwS3HVkNzA1yad6fJUFSS0SuYv1iJRJSKruxx67aEftLMV5q9A4Ns77khjhMaruHUfPoP8oXOanvWkKBezfWlvtVWTpgcx4/pzrhAXVMVfbKM3jcf+QDt5csc8g57UUmG4z3C/UQfNg59KIHRhlbsLR7PYFZHYn4pKoPVuJZTJYVgNVSXh8UVo0Soaiep7iSoCz4kcQsIBAU/uZeBDoaEkbJ309OtAJPxfYUyQnghX08qBF+lix7avLdjxOjEzcq2d7WwlFz1NJVDWRb4mWVPFxWck4ijJsBDVVlrAklYgVDxJ2srliSlrm7JOLTPNkfigeAl+uoM9hG7AOKGdEAcyergE7rVn7qmMwC+sJBHUoNsIu3X54mkmaB/YstMNDdR84MK2DDitJ3HVDxTGcHZhfbTsDE3xONpIixlvbm0UNiT7Txc9gglUxYp1MRTVXxqsRYibqVsl5qC5p/PBdSQT18In+JkFyxNITJRF57njcMEQQ/L76vtx7zyVN+h0wm1iWy81cc+cbTp1MFZgeV3+vFT25wczjL1oLkkjTMmPeTGvs/b97DbSMfh1y1hmetabFPM+b25QvrkMw3+cHd94Pj5qb1SZPbva61UomJe43QhyWK8Ij2rP7LZNhRS7cadGcHVcwX6pk+3vpD0+DnvOJjkzs1Ympnbawgs9ItNXHeoCOH1cW2kNl9J1itemT5kCm9SQo38rHNVk7UgVfYnIyU8ybQIQUdFYWrZWaSktdWbR1fJOf15nSetO7m9LSUjzdfPI7RdPSq11DNWI9SU79ooZlZWk5G5f4jtqIX+2fye8yhfsF+qTwKfxlIS7YUwPPzxV3ndAZ+sGsnHjQMbrfofv1QFryFKc9hOMKc7yiEcdfNvWVGLOou5Ajoh6zaG7U8hM9Hn899CHh0/iL/19jV/PbRhHFPTM7M+v93rV3vbu2d/2R2HHiJI4dO2laOXYSqpQq/VBaSosKbSkqB8SHIlVFUAlxQBw49MIBTkgcQKqEEGlvXPgL+ieAeuWPKG921017w5IP9s5h3r43b36/9+a9yTVz0bGJcmmpz9Pseo/sEoFG0so8K4fxTvq5v4yFCY8obGuAK6qmeaZiWjXVhG0ZMQwkL3bBw/zIC1a5U/LCqN7VPRVQSF4qmvWI2atNHXHM0z3u/It/gLs9zq2CtPLTcb8hA4eY5cSSNY+zo3bCRUvDpCTaOzk2wdOGQO5rim3DBNFj0iBvX8Pyjl/WEdZ6Swxwla83NI1MNIlhVpKU7v4j8wr+GjMrAhO0DiKZD0RU/Il0RvnuM2VnSgZuoOtzS2/ebdVFt2WFuXZUOLurYYbkeN7S4njFxXsr8fa7S1WLUWPKB392TMI5vOsmYOPf8Ye5czl2HDAR11lPjHdWZXRSqsZmcuJRFivlxqvViqUs+QeDwAe2JbvTs8n4kwsGIK6YSfnuZMzohDQ8hBSsU9fZw8iWJJP7MtHAxK2LiIY0hj/vHOkRbmNLLpjUW943lNBu/PC+w3lzsYtPkbhULbauHzoqdcy+DKTA4oGitfbfixTTGPa0898OPNu+3aZCvuqLDjrEvwLvZsdbbnIHAE7RYn+Y9rJ4WV8l9CIgpigUTvtditQuCAjAM4nANRtpwcE3+VtFBQAlolQ11gKFhU1VYnnAIb2SHFbCJtYHm6ckW7rqIm1dky0MGzbzIsSatKgi1ZjM1UOvss6wL8uwiTI2qshhPbR5/zKiLl18/kj1bwcEBxv9dnKuq4bG+BewPnZ8uiJ01EgjGLPpwS8DvQzer6CkOweIN0zioJmg6ZGspHybp4UX7daTYoXQCUUfSYZ0QxgVl0OtZiqMIMcAnImXu6EWhhJ1UH4XfIpKtlusFIKRSQXfwh9UXFm17ltgArTRqsrzG4WHrdW+NwxEz95Rt1v7/rkD3lhFRf+ypdDNLSAMTbqyApM2lWRtrYOf/Qv87OncIaytS3ttU/DzJOOeNixPF9NgNEwa5fPi61W4SdA3O7qeoqD1pMwN8HRmmYJ8gYbR4R+44HWIicrXa1rcbrMLiAqEiB3A6v0tXjp1uOO3KJOM7jvLk7yKmb51UBSdt1Wi+0HxYuHOV264yv2LD6bcGTu8YBodBKuz8vGO8dDksuZsTHmpb0v0BnLt6XAp6J1fxM8IR1LAFJN2bm7PcTN0ta4GOg2BE53Gv+UugU6HSOhU2GAql+jP5vbTvgqz3EsVDUTODvbVqgiyigSW28jaEbU94fASXcMr6Gcdqj7/goG3U+mCBbsjRoNBk2u+UtVlSdfCI127hlFUkxADUrS35xTzi4DBMI3imllQEAA5zImOr17n4BPrFb9OPQstLJxxgCI1OLFq24A91kZNrxcFIbYdv7dqO/k5IKL07ynytM2ftphEi3IzWYP/oht4mhuBrKuhkFWIkxC6k8QzOJTUenFSO5Cabpp0h0fiFpRnypeycwteTQUTHlVE79R4fred9wzAQAgvr/jaEKYIyB/h3tmbwH5u3tNKlu0i27KQX1mvywUNQKv68xHy9TdadeJ6YMmYppgwjbO+BXPclcUcBWxhSQoizsJkrjjqlvGwcYoHk2WYtIotRmgWSQOrbLuvnmabYR9QrI84ePGNShnVZBUHZLMTTwg2Ng0iIlykoJKgDHDHbowMhdkOQ/poXJSZtRwUZUKrMo6ozgroPhI0plsqoXku67WDo3Oc2GUr4s3Lcw8Ck9e4RPwr9w7mnFYedAn0xSwPdW4slBXGdV4emHpNV2j100rjXswYyYu1KBh4N3c3u6+Lpvd1rQ0H7gC+d9PP/x8nzlXnYJQYx46RuD9nLX2e+w+dyV5NeNqtVFFPGkEQnkPElASiTeyDSdPtQxMxcHDoi2hNiIaUQjSKMb7Z7bFwJ3BH7hbQJ39B35s2/T39FX3oU/9Gv9tbqxipsZYNt9/OznwzOzO7RPTCyJJB8a9JXzQ2KGPMaZygBeO1xnP0xhhpnKRl47vG8/Qq8VLjFC0nXI0zRin5U+MsraTeabxImdSVxku0kPoGZiP5DKvPykuEDVqhXxonKGssaTxH742cxklaM75qPE87xg+NU7SWeKtxJvEhcaVxljZSzzVeRDy2xkuUTX2iXfJpSJcUkEtdckgSo1WyKYe5TCWMTSooZOHPaI8EhUrXw6oFTRcSD7OgPCR1hU1KP8hs0QZQAztccVWxx6kNngGsaNcfXgZu15Fs1c6xcqm0WSiXrBLbE6Hb9VjLdoVnizyre7aZvqtsbbCGwz1WtXlbDMDWAPUxqE/pjGoIiVMPAY2AqMGPxelZLeA9OcLyCFpd7PShEy1Fd9TnADUcx4NNNAfQEOoYpkpKRR1klofCXc6a78maH3QFK5slVmFTERT+eHwE4wyGE2gFqly+SrGFeC3aApIYHdiOMPsogavOFhVorLTWUSY6EUHo+h6zTGuLSdnhI+k7rockjy1zPfc/Inxc++Uf0YARzzZN1DDRUhzcDp1jvsA6ruEO/Dy1Uaf99LQWn9K57S8PjxN4iqJhKkuhqtIY3zYk133GaB8MA9Vns/McXbQ09qIKhlPWLaAO0ETlP2KJNfqYbZWxUHscAbdVDExFJZR1HU8jowNkRqhT3zA3pxiinN/fZ+ZUZNN+GaIa4++q/viIbyS7yQtXHqt0qLDEDUurykjEU6EiRgi2qGJDyEL4ChXXdaaLiLyGSGc9I/l73xG2uj2ZTMwBl845vzBxRXdyD70t2qYHEY8lsV0+PXGlw45EKIKxaLPo0rN9PhDT191Mp48dN4y3W35HTnggGAR91xZeCMOR1xYBk45grXqTHQyFFys3Y4U8u3VNzZhM2zI+5m6ff+wLpmLhrFY9ZFxW0o6Uw0qxGNqBO5ShGbr9KOjiQQ0Z+6c0/43wyW/vb4Jihtx42m3NSU4CURhF4fMXYNGqNGKHxhgVEJUHRaMgBBKq7BVQ7Bk5YsLMFbAnWJ4gec48yc03vBjM+xmR57++ZhMMXLjx4MNPgCAhFllimTARosRYIc4qa6yzwSYJtthmh1322OeAJCnSHJLhiGNOyKLIzf4sChQpUeaUMypUOadGnQZNWtg4XHDJFdfccMsd9zzQpkOXR57o8cwLr7zxzgef9MVgzERc4haPLIgpXvGJXwISlJD5PRwo1VS/2pb6M6fNay1tQVvUlrTluY7T0tpaZwqdIi6XAAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaRSxU=
d09GRgABAAAAAJBAAA8AAAAA8UwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAACQJAAAABwAAAAcac8AKU9TLzIAAAHQAAAAVgAAAGBG6WJsY21hcAAABHwAAALiAAAESre0cU5jdnQgAAANiAAAAC8AAAA6ArYPu2ZwZ20AAAdgAAAFpwAAC5fYFNvwZ2FzcAAAkBwAAAAIAAAACAAAABBnbHlmAAAP9AAAeN4AAMlw6l3ExGhlYWQAAAFYAAAAMwAAADYRk5m9aGhlYQAAAYwAAAAhAAAAJAlDB/tobXR4AAACKAAAAlIAAARwN+g8OmxvY2EAAA24AAACOQAAAjreXapQbWF4cAAAAbAAAAAgAAAAIAJKAbRuYW1lAACI1AAAAxMAAAdQbi3+QXBvc3QAAIvoAAAEMQAABzZZQkLRcHJlcAAADQgAAAB+AAAAipKM/Mp42mNgZGBgAGL3Wd8vxfPbfGWQZ34BFGG4NkNbDEb/Vfr3lYOXeTtQHQcDE0gUAGxgDKAAeNpjYGRgYN7+7ytDFIffX6X/szl4GYAiyIBRBgChbgZLAAAAAAEAAAEcAKMABQAAAAAAAgAuAD4AdwAAAIMA0QAAAAB42mNgYnzBtIeBlYGBqQtIMzD0QGjGBwyGjExAPgMHAwQ0MDC8F2B48xbKZQhIc01hUGBQeP+fWeG/BUMU83ZGbgUGhv44ZqDuQ0zrgEoUGBgBUlkR7wAAeNptUz1rFFEUPe+9WUwTFyPirpA4q2Q/1JglKXRFmBmJQUWDGARDIDOCq51F0HbHoAGxS29hI/oDAmLjgoWlhVilFEEbu60COp775k0c1IWz5368d9/9GuxiDvypa/zbJa9hRa+iad4h1AFCcmQG6KoAV9QQ9wixX6YttLYU48JylpghrhM9okv4JTl0nMciGCOROML6qH0nNH20zRxaRt5eR0uPiM/Un1J/gpbaRl3fwJjZpH0bLW+BPtpNQv+E4zX6UrKPjnlIWx917yVq5AZxUA9t7o8kJ3KdPCCgZ5lvikmV2ftNXYWvYrTpm6I+zbNtFWdvdcwzlNmbabHbOnmP9qbaoe8DeYhD1hfjiJE3YuoxDjO29GSR9zeEiUT6Lqwz26MXtrcZUm+C+Q/wWnR9E5OM41uZrJ6h5m1hmbqv3mQjV8Nj1/8fxDpx1/a5r+Zt/ACbwM9j0jfmftb2u8n6MnRtDwM7i7DE82oEmG9/9gOvHJZtzvAG9AU4Z3dgFfdld5i75B9WqpzzLRznm1/0c8xIXLWTZforLlE+IXPw8nr2kyPHhR46RAVXNGPqPb3sy+MMMVXiWWHOQOkHOC/7wLinpW7We9shKXbQ7afd7ULm2SWTvxHpTzjjZrZl51RGL++XKvr23fG/sO8V+Rb635CYTr5AeVHwv3isL5IeOj0yH21+Vfc91phHQ2SZQ+UkNjiT98SBgov+mV+4yPMN8oKw2Pdi5uzLd0/0iIBIRd83TnSQjC2RrxJkK3d4T/bJ1SM7pE5xZ+4AvwFuOdLHAAB42t3Te0zNURwA8HN/vx4qj5JSuZdzvtfvXgopj/IMPTwjJe9UeiDynCXMzFttKeU1kzBXSJg8xyasNP7gD72uvr/fann94a6ZMftdP8fVMLP539nO93u+Z+ecnc92DiFEJD+6nujI92EUr3SO2kkcwHMN2U5cSAxJJttIGSknFeQqucVnG4lMXpHPuhBdghAm1ApPhGahRQwXS8Sj4nGxVCwTz4gW8Tx1oe60F/WnBsqoiYbSBtaDeTFv5sf0bAQ7xizsArvHqtlT9gIIiOAMbuAB3hAAfYGCESQIgrEwASIhGqZALMRBKmTAStgCO2EvFMAxOAvlUAOPwQYdRg+jUbom3ZbuSQ8lmynNtMb81vzFrAZGBF6xaZrGPZSkdjquOBwNDscn7ojnjhqhTmgUXnJH8W+Os2I5Fagb9aZ+VE/pXxyF3HGe3WX3ueMZdwjc4codPcEHDJ0O8x+OFEiHLNgMO2APdxTBae54xB3vuaML3/DLkWLKNr8xf3Q4LtvsHNKmtWrV2h3tplalVWqntCItX9utbdTGaYavo+0V9ov2k/ZSe5T6Tn2ttqttaquqqLKKyh5ll7JVyVVylI3KOiVTfiDny3nyfnm3vEPOkj1lJ1nADrRhO7biLbyJN/A6VmElXsKLeAHL8Rxa8DAWYxEWYgHm4T7MxRzcgBmYjEk4DxMxFqfjUAxGd3Rr+dDSYp1pnWqNsU60+jZbmk80SU0BTf71DfXLvTrf2//QdC7kJ0Yn8CD8uYD/KydnF9cubu4eXbt17+Hp1dO7l49vbz//gD56Q99+lIGxv2QyDxgYGDRo8JDgoSGhw4aPGBkWPmr0mLHjxkdMmDiJREZFx0yeMnXa9BmxM2fFzY5PmJM4d978BQsXLU5akpzyzzseSnekrO9hadOyFXUZ1peE3ObVc0L2rswmJK2W1PPySCoPa9YeKCwuKTq46uf+w387dPX6zSRnU27mFrLhGw5UKlMAAHjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDZJMDJogRibuTkYOSAsUTYwi91pFzMDAyMDJ5DN4bSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzm5WDk0drB+L91A0vvRiagPtYUFwB3WSTLAAB42mNgwAD9QGjCYMK0joGBaRvjIQaG/3ZMokD2zv9fmbYzHv3/678FiA8A22oMewB42mNgYBCDwhiGQ4xTmNyYGZjPsHCxuLF0sYqwJrEuYt3H+oxNgC2FbRm7AfsuDiGObZxJnK+4UrgecCtxN3Af4mHjceHZx1vB+4Qviu8CvwL/LP5/AjMEWQTtBKcJyQhFCV0RNhHuEn4lckQ0BWhNjNgOcT7xJRIaEl0SXySlJN0kcyR7JFdI5Um9k86QfiNTIPNJ9pFclNwaeT35NfIvFLoUmRRDFM8oGSn1KSspT1HhUUlS+aCao/pFLU9dQN1C/YYGCERpTNG4oqmnmaUlo9WhLaX9SueErozuFD0lvV/6PQZCBkYGMQYVBssMzhiyGWoZ5hjuMeIyCjHqMDpiLGMcY7zN+ImJh8k8UybTKjMGNChjZmFWY7bLXMm8w0LFks0yxXKK5RmrEGsN6wU2OrZCtmfs+Ozi7NbYfbPPsL/lYOYwzeGTY5DjOic2pxynZU4PnCWcg5z3uKi5THH551rlJuS2yO2Je5j7BA81jxiPTZ42ntM8N3l+8ZLycvLa4fXCm8fbx3ufj5NPi88Cnzu+Ir5+vtN87/jZ+NX4HfDX8p8QIBbQFXAlUC+wKvBCkFRQXdCTYL3gguBdISwhaSFHQo1Cq0J3hT4L4wsrCTsUbhU+I/xFhFCESURaRF/EgUimSIXIishLURpRBVEnoj5Ei0QbRQdFT4g+EsMU4xDTErMnlis2K/ZFXEjcgXiW+KgEhgSdhJiEFQm/EksS3yUlJIsklyVfS9FJaUqZlrIqZQcA1Me5mwAAAHja3L0JdFxXlS58zrnzvXVv1a26t+Z5lFRSaahJY6kky5IsybMdW5Ydx5Ed24ntOLaTECDzRDMTAo9AGgIkTA1ZAR7QDd3AY2houn/ouRkWdPN6oP9u4O9uSDM0Lv37nFulwSTAe+tf6631R4506w5V5+yzz97ft/c+pxBBQwihLxMbcUhC8sdEHiMyUCybZbNQNjNDbz45NETsq/86hD+MCFpGGPPkfyAfiqNcMy1jjPACnEMr8Cb2IiKEW0EcZ3BLVr4nzYvBoq9SKw/5A37bIpIoiZl0IU/ouTi2LTGdXx5MpUsyrhEs8L4QT+p4MJ/p718YILcne1MRTna3XsNzhEg8vnT1+7kB0p/NDfTDhxGUxzvw98nHUQyNoUQzymNM8GUBE4JWOIyQmyz1BzL9gbQohote1grbok2AFlQr9Rr8NHCmQptU+5VX86XcUE0JLWmqpmvucFInPFa8gey3XuQ8GZ8f2j2cyB4flzVdEhUt2jOkWJhXBl/kPPSluTbJ3Q19OY1ehnY2F6I6QXgKyxJZ4KE/hk4EEQk3ul1E1BQiyaJ0gsMYuxdVLMteeenyrbecuWn1yPLBfbuWZrflczO5Sr6S93rEGMi/nqo3SJ31UJSsMcw6t/GSDo0bZyTLwJtfis5ogTB8lSLe8jLDRFSm79rAk5i+Fug97XdwztebAWxxSjFFNEP38rtuOMFJuS5eMumLY9fzXv+Z07zfT+67Hw5f9Uqe685zkqWb+2444Rz7dO++Y8cCga/yWNIEQeO4++4LkCBchqfgd/ssvtnj1qKvuoXTvYbvp0Tzv+RBXvfpcAhv59OwjhdnQStlywvH2gP3c27TJWORdI5V0GesWqauc4G8x51RFII1gziPdc6BvnEwRl/GLfJDtBMdQifQnubOAczxB+a2cQK3siPNYWEpQAgWOYKIsIB4jr+EBA5zAr6IMOEwuSBiguDqBXi322CS2NzS9UfD3kipGxQvXMxZomRnqpl8poSrbYUUpbSUjsOYBPzloQlcyFPJw+CN4WrZLvsDbF6Jmfb5SVyDo4xNH+BE2wr4E/BO3kq+YJeHYMxx66YjDUJcu0/kUolCNCDBpFMEOxOTsXl0MD0/kg1yDaHbe8bi80mvW4mG/QoJJ/vFPadlvHZcCkxy7xjuJpI/7P3Gidu0Spm4Tu1JFQrxUE4ksibYLvnyJd7aMTQ+c8o2KmVRSp0wfakewsu+XDArEeK3pa/o55cE/CZrh2X06/j661vcnlHlb2TNBqnwaGrtyzAPfogG0DTaj06hg819ORgsASOuhGG0F3iQIYhYXIUBQRKHVsFowTzBq0hGqiarJxHVikNI04QVBZ4Qdh8/dujgrqWufK4rnS0UUy6YExg0uR8HLL/NJj3YJCpyOiccSdc75gDRi3DFl8+kJSZRerFaKeQxu3nz0790C3lgaGjfkoaxfCSS0KX5XbWB7d2FgyeswEt3uD26ScjVzwiyK06OuRS/aRhmKBGMFFR808Ds9u5s+5nPbLlGThhJAXSMpAtvKOpYO3twtTYQnXCT63ymzovCVVuQ4rJAvkCCwVM3BYPJrl1HC2rrroGJ2nWPtR8Y2HINxDiw9jw3AzZ9NzqGbkE3No+DB1BWwKbvmAG1XQXdTcEcERZ0zOEdCBQZc+QiUhRxBYmivShhav41mSDkAXtECL8iYJ7380sI3XjDgX3wvrt37Rwfzuay3T4Qf7iIqYjKdkYyiBszgYFKT+AySNPAdGSYpenY4apzBBZlqAYqT/2GJLoxVe46qHymWqgw0TPh12ucRd8d5kEJFySR3Gievc4lHk92pwZTngS4nUFFbBDpSOPGGwLqodU95z0k7JqucFySGIcbxCuGzVSPnT7EC703a+roYnL2k8mIruQ1EvYc+dti70xVOzzBy1iI49/nuEb/RF8j4+HtrpDXpXA8r/Y3B1xibbbh0ruyZrUbS/Lu/RG9sU/BWPHMlHLJ6jyn7b1VU0Yv9Tdekqnz7n45vHPc2Nv6+Nh8Up49K2qclIW5gNEC+DcBfEKUercA6D31tODiEPVwiDm4vkKaEwNbvBt1sBXmvepV5r4WmJsK7HCLgmqoU34Yxc1e6uiYSzEMuf+AaAgCdUbss0+vSfgemIcxFGzaHsfLw+lL4OrPBvwZItpFH3xCZw6A7D3OURGD3GG8zpkvvd7t4SR3f3TXe7HEedzXv9QU8MEH/2YSzIHorpRf/83Wl99LOJUjja8/WKiU2ec24XMPweemULwZIfCxtM8IX4JDdBYjvw+lcIoTrWIg7WiH6XGMHzSlNjSG47jTIOlI2Ij7ztwR1AwFdFLkWAOE8N3Fws/cvDsZfRPorfmWqMvNKwKmTShXCv/XI71h1o4deAg/D+2YBTuvzBRTMjgJvLD4XHTP4abFvAEH0wTMPeg6xjpZijThQcyhQ/CaZ+Z+ld62Qu/cvdxUSl3BUheDIr7OYNm1dTuTSTsNZ6NXoFZJpK62Xu04XXqnI1jHSFXz/5q07IR9Ky/L/njgZZiMN0kgYSsSf6ud7Eq+8AXyOW845LPP4gOEAzeh9lp+4orZaY4cwGdtbzjsfZFr7bG5m5sgd6E0KjcHAH4gGwwBaesFRzjAXlQiB6lEyDIIAZOd2Ww2Z5m027gG7Y7hVBtftC1nfgIzNDGJU9UKfpfcBd53AQDBM88QxfIp5JmnA14B7yAnbUt4+t2OR3/304LPB6+wYtkS9+6n2VxZa8AE+R2URKGmn6LDFZglxiLojxcv9XexWVKv1Db0tTNNYKIQaj1Aygv9+Z5Q0h8ZcQmiYii80WMRERw477Xz/QfzA6nM9NjQdL9CpwsxCmNSwMPJQ8580dF7cAP7YbRBbxEFxAfp+WVCp85OR2FM8MnFejVl63jwPRcvOnMc/n8e2m0iX9NDz6zAswZeKthE9NMW19ttbjd5oRDnlWpAT0UVdzKQOJgA7NxthaJ9CvEF2RiJDKN4kNk01mdsIUXfjbosvySqjnmt1xD+vGwZXozf/2Wv4tV9MGD3kW9alktpnWpFS16voXPPADbtW/tPYpLXIhv1oRhVc0Q4BOrNcay1frzUXexKUqyPHQfaGdtqheLOALXOgAzBOscxwyEVx4OqRl7+sC1kRt78kZLXV9o/LlwJTRZiloJlcTBbC3tAgTjyWhz502L9tbN3PD16ZsfFozUR3zwcs2fuHnpLMVkshc/LC6Fb08O0q3vg1w/J61AIVZtDgKsFsB0CL1wCWMERnlsVKTVYBqwAyMFA4J3gzpCVTmVN01TESDGVT0qZarlayYAVq5aHJll3QuCX8Hf9rY9b+oNkeN40H13SDD9PHgbr/x//YTaGZY1v/W3rbxtsPEdAOALIahIdWXzOBcYihQAECoi7CG0g3E1wi4CwsArayR9BPG/wYDnSm+4ROHLhBW4CC9Lnz/cWHAtitcULRn5D4tQpOuJtUHRITaCdovcQ5kUdJ2nDzX9TzAwEZLf/ZHO2Np4ojkSmoov15mt1ReW5Bna7uNZ+TG685BnwqjvGfWKCE5K4lSt2ucM5q9BvBnPl6W0jkZJvrFfgiiQAkuZuvSDwoTDHrV7x1aux+NgilngAuM7cAHxBDBiXeTTXnJnCVAN5IQW2g1sAfCWIknARwfjwhKNzQpQQgDsBAeLgmY4ddXQs120XunL9aVmMbuKUUrv3FDcU8kwezL6swzBwDoW0g5qH4CqIhgnCsbX5PZd3H7jdQx5y78mlRN8jN9021U1IXy5f6pKj8a4pn+yLm0MFUVQTkkcj2Vyy2Fso96bSRfyTmQPjI6r34hBvD/T2+wPzu6a6R9KlgdxAQOBlbSQwMlw3ZUwEnxdwL3YtVHsLQaua7S4y7pqEX3HyepRAWbS9OZ3yQ2/xgorB1iFe4C8ByxNETNXhhMTUVpXbapuER5PZZAYeTZimvw7KC6AqCtoL3aLqm6oCLCKjbc2Igfpm7LJdMEUpQHzmw2/y6hdb3/vQhziR53UxxIPCLS8vf/PxHRdAoY81vvENwAcELv7lX9JX2P7do5jqNYyhAGO4D93UXB2HMZzARIpBA01A5mDwkbCQx8K8M98oA+LQRQUeBNByAeafKPEiRerAycBwACJeQeCe5CUwgPMz08O1/r5idzQcsFUZ7cP7VPDvdccxsmFsELAX1PsxQ+J4DeoRmWnchNaZXcukY5iCnzaBYuicjf+DqZ4yJxRGKnGXBpZFdvlTe3okxQgIhPpswrnnDuzepQkKr+y80xdT02AvAGn3N07d96bLiWzPlK4U/7EnVTMxn4jrPbmunFaIu6y6wmvcB1YOgNSESJTX3B7X9SbHjYxgEGTktuOrtyn6SDYSSBbpuHfmQj/aht74MRWLAkUVKhiKDIgJIx7IIowzT4kNCFWkVkAUmTfzA8hYfM6GW3O/dCsgN2qKPYubb/6N3nJ5ual253KzXb0pCWwgbkNpsBTtKIHjfByxs1nUOcdwiQT3O7e3iVO1hPEb4/5CvMsyRI7jrEgo8/LRZDSV3Tt51/jwY49gj3AuIeeSsR5sZ0MRw6PIWA7Wmx4JwO6SbvoKyYmeIMeHdf36/p217cl0fOXgE48/58IHgoFUVz5Z/Avb8PpT8Yklq1r037kj62CT50mJPA1yfeBjQBYJlSo1vxFEQSQ5QyVBeHwSDIq+CDcgP6LS7INbos4t6OIL3gOXOZ67dO097csgPZgA6WjAMj0uBfXjfhF0V0i3qQuwEyo6YPU1b2UMU3IYGAIxBRyq4whaEjFKFrB2Xt/Frb5BlMwGTicSijoop4EnP0TIO5WSAnCLeLTujFt5x2PeI6CX4rSX56jWKoLEE6B0nPBxff7u+PaqOOhwOtCz16IcGkJTqK/ZU0oZHEcoine8N4833HelXJ6qTPUVg/604AB7x3YEHKLFGBdVgDYlm2TzSWBOnGoL3OgbqrEp6lBg/4nA9c2i1p3fzQv6uKKVGoL7nuOHXmKpSmBBVuexNnJITt0o44g8ZzQWcvhdAE9KO0mxr4YFT+FAyKzlBCl8tOYLLRycqAczyfBkQZBqB/ouF4eXLNyIWmKhdam3lAvjo/7e8dEG2phbr0W90OPRZl3DggijxgNCBUKLeRg8gkSBMO9C0QED6EdhtP3cUncu21UoZugUqFsS02T4qaY7UHEC1zrhAQfdOEjcz0FvA0OOg6WGhj3wjUIk1Zv2qSEBC3Y4VJgq3iQcq+8syq8ruF/X3D13NJ+Md3kjA15xxMOJUiFW8HtE7aW5sBZ0u7N3+aSw7oqMPixfGs3i4DvG93zzYH5mMtFTwIH+8QqHjVVvcZc3lCRu1QhAnxiGxL8PGDRBmWInGuvZHI0t+AssGuutbMaT0i/jy8HMUJChy67SVqiJt8+U20jzD7aiTip7wN/op6wNJTTQ7OsGzUwCciYLW1rDr1A0swhN8nJLpd5gpgAKd22jRPaKhYfb0dgqhTRO1DJDCe2mNvbnDCWRLffqqmpgQeLypkvAJODKbmru380Pcur28uSVHk0xAP0RLMhcvi+c4USGT25Y+x0uRhZRHAWaVmiDc8LFs31eipwFCxBhLuuofy8udxyOjv0uGmuLmbrc+lTrk5yi8Hg7nsYiZ5gK3/pm61tenMWWoAy7zLc9ySkuXeGffIJ4dZfCv/rV6qseFBjfJqiJznMT+LeQCwVRf7MXzDWmvvMETFaOHKQDuSxQxLRT1xHSg3rQMuFeV0Wk85U1q9thvsL6C0s6FLAEfBqfBj51dQCa2T7GO1WfLTvh0b9TbMDbnJzX0BZZhCmPkX6Jf3vcKIzDDv9mH4TzhazDSv0o0JbJvbrX4sjUXY+3PsNJXmDfj/KKwrU+2fr9g6bucRHsG517Ky+7dBO3vsIrIAvuybeBDKbg075Dfh+VAT3XmmWvE/GgzBIRhhAJf6FDOuxF0CRhBRyfISxli/39eQ8L86c3UHE7DCAyQ+sE6WrORG1DCeazbIvrJCNgUj89XiD6zTteOZSYHk5EFEpkBd5n8QLojLcRJLruTqXtNCaJFEtT5PL9+EeFpCmCKJJ9za5UIZXn8jGVYn1XquTfOxMqBS2fIAhg5bHZnWiNbUphsLj/z4FTfwrY4gkaeTtx3R4OKdBrRUWqAhaLE4GCQu9leCmrq5qLIAm0C4knQQis//b6xArxgKduuH750O6lHXPNRq3c0xUNez2GJvLoID6ow6jlhjo8wPKP4dok3kKIHaDEYkdsBm7YBbiSETdF5ZglHMPsYVAs9pYO5Cb/o/HBN/32gd0ffbP8httC2SwP6Df6wWd3N07fpxPiqvW9fbWqX3lPzBwb490LvRj0XPT3Dl1/u4F7J+72K9f1RQ2Thjhf0d2Ihvr6womRnueeft17VnY//JqnxC6ZCBLhBdeML/rEbUY45DkzO7mA9btODs0evlPDacBcoss+dVCO7h/dSzzzMnffg1wcZwcDg1+A/5nMu0CnxsknwVJV0VSzYWAXUohLuZGG5BdVmWab0LKuATXBIoPcdLD6qwMVeKLU113Ip8yUuS0Iv91ibB13g2S9HcTktS3w9pn1K6AlNKFCT1LnmRFt3KXfecpQKpWfCpwoBGKy8NNKRfO+5m1eva9XdfnX/H7c23fgpsoQOQW4HPDqOVBCovBXH8ekAWdwOD5cr8PxD/C99/yC0ABDATr3b+RZlAKeXqc9c4Pigy6JSAIvc0JQCM8jGtdF+iKwCcD9NEZCgAhDGweK3V15eDSVTMQjZkoFq+errmsBm0cs3bD+CjpmCpReFbFdhn4HKtBJkx4VvvtPysErBsFaPjuLjckBvx7Riv+NX/vZOfxUd1a6/ui+/coNkUNnz964qqyQiw0sLDVlvykOxpMmJlrK8nSXYpmbTYwbZOjW/hGB/Acm1l9d8ePWjzCxO3ivRX4PNSjXp5CMYB7AGeX5FzrxUZs6GjZH/MLSSH2wvyufSgTstLgZ45TrtTZPAtZI3Y3zQxXaE2jjAKrx68F+NgOmfX/1gd3TehAQK4BooA8i5ku8hKVU7141/OrZWm32NVH52EBc4no4aebIq97/Nz6CH3zju7OyR5gE4yCpA6+cglElgtron/OQvVOt70ztxZ75/kEN4BxvHJo58sxjViAI+grjyg3CuFrAFYvNLl4En8A6SFEqDUE6ISOEIqGgH+6yTIrlA3T8Ng9Ye8hgvNgodRDL977P/1vdNW/EFm7T/uV75/CAvDi7+0hstmuQc91ABwfHv14efOCILzjqZgOC8dWvYtHdN/rmyejRG2AsqN79BXkfqqAjzUNIBXehguUCXskJ5KIL1I3GNij3AOBMTmhYlpVlpCj6ooR5XjwKZMQQwXKVB3u6spk0U8Cg33QbLpiBPKrgCrVcmMazy2amSo1UARRtyOlD2RYJjXPQSyma+QKwzWL/VC/xnole0mgQO2oWknOrx9MJU22QIr76wLlz5DwJwzQi6sRM9OAsvo/kR32tr/u6exQBt37hy2d31glHWv83gdnX2+DF7wNfJsaevQr/L+0+vxv63EOztUiQJVmQLgLBVRVJpakohcjKCSDwHL8Mlllf1BiJ110bsace1NPdVcilU75UnkagzJSxyZps9KbS6Ux5kwQoo8fvtz78pO2CnhzjQlxDVsv9yRPN2FgP12hwPWOxR7mNliu9Y5Oa/BNSGLZaX7eGC+QnDdSO6f4ntxPm0T602Jy3gfgPAzKmpJFbAOhBE20Xwd/IWOBF4cQW58s0ECjQjvm5ycbE+Fit0lfMpo+kFLAcOSeO3WZBZUZ5WLrmmqm2zukt/3oWCDpPD4camJpQxwHBfeQVw/e+4/SlAKk0XrKwkzP4/c2wwm+efSKnTPYW+h6YTcdi6dmHuyZF/Hp39EOuwWi3zWl7iMAJ2rS7NLyw761W4MyBk4UIzrsVsmU2ctbI0YBvPnP66dOZ+XiEqw41aJ69cepAELxCTGEyo/PxKMzHfrTSPAxj7SOy74SuSBwdbZemioJAh9zyGsyT+G3T4257Eni+H/WX+nqLdPDzbXWPRWHmwjylSsA0IbBVE8rtfBmo+cYLs7zuYOApUIfXW2990gfq4PI9+VbLdQ5nzrk6Z5y/rW+foyoxRN3H979Pf1/9KnMlcuunDehXCDr3VmZnBpslieku0CXaFdkJQSkb2kutTLu1psZam7ymsbRJr/G1Pmvply7p1lPvoH/XPx4+2NE/Gey4Gz6zFw01+wFkMn8FFkREF3mKvlY4+Gh9Ee4VjjqG3F8w32Da2TZTc+JDeF1typv1pkPdKjWA68/Gtag14+Pxa9yR97sGdAO0Qt2L+diJwdEHB+yh6aFLuTgRmsbUF3/sDPrzXxh3L8X1iVBBThWLqfWxPwDt3YYONQ80Cz4wcnjBJbOxX9FUpT32XlNnY2/5PG5jY+y3oW3TUyPU8g4NDvT3wfAnE+EQYPn2uNsvPO4mS3NunhbQt3ScJEh5M8ggGWDr9i9rAv/0u7Zr3keUpDdsEOnmK7eoWIiUBx4q9avel70prGcz+HMwA3s2tKP1P8nrXuMI4eRRVc5vn/4IZppCsGT6sp9rdGRBHgRZhFGhmaXBdeAoPKHBE5YSXkas2ymncykat8Vc21JvKMmQEycpkwcTVz8PTbaffM42Hh2oioe64xoY/Vjre/y60mBluu+k2P5sPgqfXUX7m3uyWOfcmOjANkHsnH7GMbw0C60vGprEhsLjdgGExlJnLKqoWinDIBSdKQhNjDBtNtkYrBthCoB8NVbnkmpPOkfTOcorCFMxkkmzLMGo8UNDOXcOq4IcWb5YnliOyCKWoVNm669NmJGmZzb2IC/bfvlnGulIWxj9amvtymu+Oiqsz8cAtvO5d023/pyXZbKv9aPWvzU2250e1GxOFGiOcUERCFU8WRK5dS+zotOali1uJgVaBj3zMy0ztnSQxdFRgI2JMySedrCvkNewudGrhx6WgTlfwOcU9ppwKvAizuT+5TvtnvAc15rF+FGmQF9r/SkvASizeBzFrqv/1WBc5z+5OPldsDN9LE6xGaZ1QlFdMNFY1VhtC/bcRE6E9TqLDXj2H/tuGHQ9+jQARvfO0x8oaI8+4yGRPvz52k2nar28eWcqEk7dafLktT3Y/c5H1GxGvXv3Sex58kErtHfb5cLu3dtfU0t+sKCqhQ8ma69BDuYifwayjoJlGmnWkIIEogirFDYzrqUvOtkkdSOblEkl43B/1OwZpPqusYxSZoucN8AzTFMfgzEbSIxO27fBdD331x+fi78qqyYGb42fOn6uX961uHAwUDJ0SSw6kiZi9FwyUu2bB3r/3Qa5gHHre1jUYqHxiVA03K5VmuRyIOs6ug4dR0813btmiCL3Y6RUaRHSwuJzhT2Hm4MA1hSiUHotIVmRZBoZZv2DQVEUx/qGFjvhZS9eijSrv+oZlnMFsk+jTv7Nzy03IxgdP7ayvLQwNlIZyqYDtuXVFFTHdY3xUr/txEMzDi7oxwObR90pNejogxuzsa9Watx65QfAi6E29U9gvyPTPEcjkrZVHuJ8mkRyMTOg+rZndB+wROxOl/KOomR/+5LfUZ/4wHnN73fndmj/PLA4WBwIp7rLAOq1SroxpGFDHeNdl/VktF7t8xpm+aDfJZPt4Tle54F1dtRp5ZzqKNm+HbeUhagmh2WVLORCscr0g6t3ZwRR9wTjkwbW1fk3D/be1/JFIpkU46WFtee5I6BzU2gPWm5eF8Cyi3pDmcgiCNuFZNElr2obGqg4mFJlGkiFLa0gSfJLoIs75ma3wftMNScb40P93V2ZVMpBmKGtOrlJJZ0qs0AHiDmMpx06YVCuwLieSRW3SBjlA89ayONX+p54C/U2n/966oGZDNaKmVEskm1uXpBF74AVopWdvUBeqwXefrpflQTRUzJmRs/dkt6fH5/ZZe8XlbYBMRaLVZ84mItamCOZpj4waVbiNui9KOqFYQk33T6z2fAOeoQ11CCHg2tYMA75B8xgB8s+TxqAZQ9Q7kvLXDDFsMBDBGAjlIRsih4BxkBMjH4aNNm9c3Ki2J1NWx50AB+QmEK26REr7aLqV6OK5cgljq0NTc2kqfZR3dxirvIZGrzsPE1lGcd4uT4+zz/FTa9o1uqsLAs3NqVwhKZhgNoLnG0Bg1RP7hsaLySEJ7nmdRpxF+9V0pfnJFJzbiKy1wa7+pJyrbIQJhnsvWVHKjs2K+B+IRiiHjj8kRBH6ePidYOlRJ9G0th7fNqwuvrP2bhPGIQ7QsvngZcBYzaXdjly6wbl+0/ybpRDOxafS4NZCK37b8fMtf26wcH0DyAksdDk6tYry03N8fRF5ul9tM4BkD4lY3mHsG3A1YxDR+1Mt03ebTdU2xoyh3uf8AQ/+5mg54neYXPIstUGfv+PRfFHWBRvSqd0AV/9BnUspIAFPZW+SaT+EObLTuYPJ5qjHkwrRzrRG1cneqNvmCNu3R1m07Sl/hxMCZ1WAzqObz2LzIpSNkC3v1O2AOCbOM4QK49f+szegojXwTZWlhafC2F8jjwLrfyTP5VPXr65PCF97Y9po7/1bXVq5HXKX/yZg5tCaz/jFqHdOVRvVuKYFhbxGM1TEEnFTkEkcDDa9HZ4Bu7MBWiT7awvpbEWO23jDOzGGaqm3EaDE5ihFWjsHvvWVTAZD5+Ly0JZlOPnHl7VfI8+6dUPH7/B5Rqyjx9mrW398c+mqQJO/wxXaXO//c1I9MrgtxjmCK79jH81tHUPmm9uXxwfjbA6KENXZJ5mfSmq0lSQtUzby7wFa/AetGf3TjBC22emqQ2iAbPgRMi832w3voNjOYPY7bgiNde0QtwgaTYIla29Stu+SQx6tPnEkBeGhHuj7w457Y26ibRyJTKeEGTBH1BkEnvkYp8Ic0ZVDD+vCInxyOWjmveBN4b0vr53NBp+feMVfvspEARFu60/nXv7bqIC69ExGIbjrW/fZXLQVSKoZPfb5/AAw2etG971rlqhfYifwm0uA1ac28bsN3CDsZC6mRss/1puQK31xDo3KOVzjB3Ey2zcU1u5wSShEcXNI16hFSudskrRBpVN4I0ZV88X3JhGH/Fc4IErbnWqubpaGj51XvO++imvvmN07K6+Ps39W1c8yv3797mNRuTKOc37KriUy87u2rmzr0S7+sgrpve8gXb6wL5nGBu47TZsW8v59zJBrF48ezN29NsHctjLON2O5mx3SGZyyGJ+XmvLgmk4FYWLeTBD3+CVvQioMRhPwOR12nOfuTXKWt2sAqyXk3hz38GqlG1yzPeWJ8AlnX/ZLZrv1e+0ABhrJevw4cO5vOq9fFKXbzl393lo9F+961O07R5zNv7QQw+xPj39yb9ket8Em/gw4xe1ZlkED0ZACS4iQovFL3SiHzqtL2MZRINzKEVlNld7WUoCNxvBqSRzBxabpIFRMobbISuWCaZBqyTDNqhccQxiDO9xYRWrvIo/23syGOSI26V79iylg55CImHi1g9bP+Q1gu/mt+0Kv1zH+FmMiBDwAPz7+6k3ZbNYC7iDYyexTKNWMhGCgHjHMBZDjwGGgD7dtybiHPkhwLauZo6O1DUJJp4lmOCChCQwjYIYKAZMh8nf98yZMz/n/nniF49NdHytU2fm3VJn1p2m2TJfvp0pDYNDpL6wgprYNFySwHu//H6Ag7qltO4lX9V9ElFKrWjrlKL7wOW/l9lGEX16o420SYiDRoLLoY3Ey7QCdmsbfQ6WMUPPPHOGfHjiF8EJ7gJr4z1Exp8lHwfNEj8KxmoAnBL13OsFxve8k7wjjbnxyclxDqfJ6MvxS8lgIZ8vDDp9RGufJ421//z1NX02+DrSmCiXnZxOcu3npIS/iMowp/+s6Q5gnpsoElrEDjStXe0xSGPVHH8G0fSOeKETqA7SAg60gmkxNUA6SUJHnWNWrUB985DzINXF3/jJZv+vfkjG7WdYrVUI07KGAEb1Wqk3m45H/ZbpViRUxkMKIKNUukQKnQw46HPZyShl2iUhhXaBahzHMC12oIAoZ/mHak6UhlY7/Hsy02VxWu3owpnB4u77vQO1jE9w51KJHFk9ev+4LQvYyFqKxrUeKjZGDCJz1w92cWrQp1a2j2bGvCnRGqlyAX+ikI2N9DcCESNzw50GVvxBgdyV6IvYvA+flxJxOhYxGIvDoAMR4Jx3Nl0CFnA65eFEgbQpUIpNZoklRa4po2m7switt3mhe2Dar9fbwH3LTZugrnwiFg5aXrcuiyhCIjJIzDdUG8MmDYPGMEMYQGAytG4Z7Batt3Fjex12VytJ/DEszh46dZdw/7lDM7Y/kSDCoI7fEdg1NiiLkbw30DshieRZufX33XefkU7fPhYNYtwH6M5stN5fL0o/ktIuqdQVmd/DMNLP8XdAF4vojqbajQXkpTW6bSXMAiwmSDhDi1vArK1j4iCzaxQ0hTjWfXYbM38vft9y04dRLptKhAJuXZVQERcpkMYOPPaD9duSl20XMIJUOrXOmTwuTPfnh3xRZSwmyJbNSXxovr/3yMQNjW13fCTXzOuCB792/4Gl/W5pykVLX4g6E3V3j997emz7yVQ2lwx5CV0XBmN+AsYccCFdP5LBIg/zD4s+TCRuAQYQLcvOWLaJq4f2wxlvNg3ah2SJQ2Mjfb3dhXQyYHtcqox6uB46BzCtDTU9tFe2BQQgk57A0kZNJksCUsIEA+ysHKFFQBblB7SqFB/HKysiG1XrSQurzfnHhwOSZ3VJiRwcp6cnB+ckKRsI6MQwYv2zJYk8y/Otr7W+JpiJhOj3S7k7Bxv+zOx1Gs4dP07H/blBItjWdLOvq+SJ1pR1O4R/iL+ACmgQ3fGxrnatGa2KyoMuczyH+ItIBCsmgoUVBKbHHhraZwoeomT/xW8Mbr4RVB+jwYFidzoRCZpuUP0CLshtXm9dmzdurxOwrU4Ep8HSAIwSlPHXvLpdv+fco25yaPJIjzxXHFX5J97S2C5q1TRdwjCpHY30ax7ua49Kmju2++yKx3d7s4TVrtGTpkiUXcBYsl6PJrzmnpAVrugwB7rAaH+B/D5gi4c/ntGJKHXE0EvrEiXxDAx5O5WusMChjKlOqNhhEm1wEmn2ObeDLH6T+5dZHTrDM91ddtaeZRFe/ZoIb3USdxa2rBf9M1Gwuk0afqvoLztvKNu3bcPEc2EXCYqjQX/XaJfBdVcEfOncdRR8NRtjY+ropIi5ZCidyOcSEXOoIIzUGq3PMmzKo/haHXzSl9AiQPMb0GX0ZNMTcxMR6C4RhwTCSdQx0Wq4CnhWjpe4Vced4Hblzvohz8srdNGhnxIrJoWwALIZWH8M0Ius8LLzfKfwhylKcPMjy83gTSfO33Li8k2Xjx7Zv2/b9Gh9sD+XKWq0UJ8tCOhoTAJvqjgs5Os1iU6ouNSuMnfMy0amM9mZhLicz7hxPk1luV4O7CukwSR1ihVYkOhUJijJhZ76uR0DrlLdZ2Sjfl+YF2TCESFEU+4S8GXSM3x5uiT5feKhE/J4fld+pvXnM3kMsxQ/RFMl/019pYK9dtd2lXCJZKA/6Q2nBheP9/gCIXdvfymjSoWR0UI1KGZEX7cds0yvCHxDIpwh6JLucssTuWrA5bLiQM2x5O1d7k0ODyd6DcHOSvgRjEdrNSmv1Ty+mpFMtJ7Cogv8Xt6yA5rOsApgJXIr2LxhdKC5F5g56DjSdbRiOIYOXLvjtFyySGtTKB0BksmAK0H1KmUcfSwnlU5GwqFgwLZ8XtOlomEy7O64MDvQzuaBqO0NctEu/HOm7wbJd/xbF/VmWO464ArOzgN23a7oFy+AOmMuECnPq/SEceFWOEHtHji1d75TGTLJwLD2W6+gcPyhV0jJeKNfuXCekQwDG2Dt2jUcOE8+gVRgXY3mmIn5uU6lmZuZ8GWas/IsskwAW49m8Eu6loyzRBswLy2lp6w0TVZuWowsUbN+Tc+gE/PtJcnhI0fEhuw6fV6nHQiFXOTGTjXPA2CgX07b+MY38S6R1SOu/d7aMPayNpbQy5tqF+bFJGUSbe9bQDxlhGc2tRvAxLLE2g2ThBGLMHXAXfROkRcu/rpbwQe7NJqGjYb9llZylay0fE0PgSRZG2t524VsjD3VJnCJQG/PdHr7aRHzgmf89tEDhUSs28Op2giQbMHy+zf1W279UdOw/IuVUrw7n/BFyZL3T/5K4YU2J46BIBZBL8dobUB3ISjQsMHCYG+UE+eQy4VWdKagG7k+z6KmyJwgiCuqRFhlAEGjw5XyQKnYk6Pp0ngkbFse0F9ZQmNkzNgAWPVfypH5A5s4cD9m2bFrFJTBrTOVhOK+WQobtobF68Zco8MX52XXys1exe0eHgnY22X9lpsNuaOkrR0Hik52bEAZmHs9U825edO8sFlJHb/TB33303wqNYfLDoRsr4+CeehgDNvnNnQXdFsSBeTn/A5m3KqK7dYWKXKAOXT+nN6ZMjx/9RVbPxdsAfcs/hzah843bwYGZeEFAyw2WiHY5phBtqyNFz63rkgCdWNe08Oy1zKbLBjt3b24sGN+bvvMtump8dFqpTw0yFLX+exGytpjgLPfh/f5aZupjejUk/7GhuJFzzLz8WEskslbTyc0tX7z7MIme7HJgPwKi4I/KR8k+0cAGGhzL2JUtr56/PF1GZJbQYY1muPnsYQEJ78IvGoFG2ypK7Ov7eMXMKsYVctMXDTRn+sYHpCxG3BkDdfcHYkFav8rsupIBedXfxOTCgIo9kxaL2ZRne4yrPhfJA5Y0QK0SJk39fi84/HbMXOAeQSlkkG/S0MW8QkUBnfg3OZtE9rLvZhXppAf6CFWjC7p7X16vW/kCyMnK6PnxDsj090xv1szondEDU3FX8Deh3tyjdVIPj927/Lkdg0fTNvm2MK2hplOm41tzRHG5RrkMIxJFpj18eZRASuo2ENU2YuJCrheUWA4NGdoqLZ3jlXVYWiLm0oavDx0pr+vK59JgSaHQ7QTPo8BI5MlWde6w3OWljCc0Y9/eRyEDnlzoAQzJUTeduDkHc1t52ZGlC0DcW8kM9sni92ThUwJRqVbyN7zlWYzLb6HjsPzz8M4LESK0r9LlcTQjavO/hbQ3xPQ3zhw19nmNspbZYXWTBDaWQwzmHp0lU1tupjtmg4mE4Vcoi/Zy6Ly/nxaE6PF3MY6DqckB/5usjKFoXp1I6Xhx2/rHi/d2GxeOuFOeOb6gWAPd5Tt5XsHBfdIvjHa1833hAKNsbM33a4S16CS6rr6Sdqjj+x9VssM3Li0/ZgLO34AfxL60kO9dUYAEJ7FSISOiKK0ImNJ8tAaj87hVgtp0RV6KTPmUQA8I6fu2KnMj+FfGpMyOLiAU62HH2/kJE5Wp1R8SNVffr49EtyHBJx9POHBuULM9HCEt+6Rjx5anw1yNjvXY0Wijv8CLonfDvx5jvovC/M4iznehSWuBlyaX2AciI5D0Jkn7UPKD0QsCKFFSjTbxwKYhOnm6HC1TOsQg36fiebwnMLWOjnZNeenzZMmnRrcTqap6qQyA06ajrLOgiixBGmlXcoYx/900vB49Nq26JwL+7teVi55fYrKreeWuErfqbJwSjgVJr+7lIv4VXoNqz6b50VjvNQANySKikvPNAStJ90wFYDAniMelk9KpKthC9BM8IhqPR5164TzXvSKcL2vm8nJXvsvfA95Gfi8i4vPxQHdlJygILB0wnMXaa6Ixu6whyWUWKLSs16eGaIMonvLA0iCuw5temzTvTTVZBXsPPAplmqiW2GwPI21Xg3krK9xt9eK0UwnnH5X41WvwhwxoopkuRpELOf10MuCwgKfSiby5Lzxmcbr3qRgPsIrPd3JdE7KVTXuoPeNv1UOBA4zjL32c+YTJmgupIZ50keXjS1Izo4zzv4HrCqdDjdbe9w+FMDYjI+WB3vy2TR4zrChoQkyQUfeR7fyaI8qjQ9PwoSsVCttXa7TKoctIQYG2/pJ2w1cfz34ASypRtadral02Tmo9x8ya+N7iw9rvb2+5NJ+nQAd6AdPwPMf/phkunixmCSuJhHDnvNU3z/xCRZWSCS0giR0V7SH7pMNFgMPr10lM5jy5u5mvjfMc2heElmOagVQbJvZwfwMmmYmWPA5FT7rWztgVnefdnKom7MVMEhgfmjQHr9B3zsni7Nefswq+2ShxCu+sjXGe2dl1+pFXRmolrnTOBhkOy10yQ/3Xc5RZc5d7ntY7qIT9o7L+B8JZrVra7/gctDWPTQXOFKLczRNtWdbo5dH85oqSyxbtaKIAsM87cje7l1z26ebtPl2eNHa67omOUW7IKTFHmflU8Eg0KM0K1rcnHqBMdtyJm3HcZkVbJGLxgExRDGl0AyuhrCj2oIg8ZYukhOBchCLepcmw7UpyXUDQLqB3l7TlyUaNykph2/0yqEQvh77IwMjIAEKNxs/adB3oWXDGvnRyL3jWBMEFc5SYZw/3zW4LIUllibl/6U6fVcbg9vgTBZANk200JzT6C5JC9mEm+Pmm/0wpjAAAsUuKxLN5HoW6XIMtqGH6kSPJyeobysPlnp9GT+Iyu9jharlDqyubU3LOSGuzKZklOTfnIqq5Gn4E3D53+vHDijSDdFYJjs9u192nTjjVaKZNCbZTE42jsK145UJrnmwu7t9bQ+2gkWfF3qXTvX07D1M+1ns6e2mfyfmub03OSVqq9gfHWI6EVgbZvpbR5eb3oBMFFyvEqSQhVTUxZF5h4WlkAImWjkjCTxdY7dCcRxhzkg+CjAiLLP12XQpq4IuvvhNy02jPJj3ZewUSCitgoAClr9cu1Y6afBN10hnPRbKQKCdORDx17OyZY5cgVlw8lZdCQbOBmOVAcmZK2fO4ex4OrsUFjOxUI6buckOcxVXX+6+Fhv3f6xMXqEH//R9blvMnDLseCYZkh09SMKvr2K6vub6zpJTltc6c01ay7M5rRWhUeIXzH5tuW25qVS7t9Xq2fYOFxProV5ES0VoTJTlvQwcayOQOkWLTuLLBig54PrsZ3kNk9bPi8P+XFYSEglsfulLnEYeeJnWU/WMu+gZkXyAyOCxXYRrvRdjURsciPjACH6FpldsncMffMqDBff2QJA4fZ5dE/FPyQ/RIbTU3HEd3Nkfo2XpC4gAoybCRcrIsIjwKhIRXYmxijie5w4hp8iG43fzaHZmarLYkwXnqynoEH9IZgHgjRVrDOw6w2gHnCIlj1MO0tkHoZ+Mc/nKBO64ePDZtXrnpzqOa+OkWq/hD5C4HOElyVwNgl/WptIujF3pNC2tFGdqpiTxwQcaeRfFGEQ2g3EraoqiGbXiQVOmJwPkB5jwPq+EhUEtffo+cSJtYmx6ezLiGhLiOYIlr48nXcFu9VF3IhzyGoBeZL9pKzLGMt3LTVZs00+jmYY3FE66Hz3NZHj/msRychpKNmOqQrhrV4UBBdSw5qwKK5geBl9M8Sm/QmTLVpWfBfG38Ld4O/SLheDmMbmO2qMlkWCxDxSrBsCKRufBPFFdQ7QMWOysGliFseD4Q6B6NN3Ac7v3790+MzpcHoxFgn6vRBd01BxAG+X8Fs08OT8Ofmr/2FEsRontxhtTjgWf12P21QKr/vC0635qu7jQ/ZPd6ovJm7hyk/fHeE7y3kgHTMymnRGb0uiAVWEcyPdJV6T/UXfy1wo74X5U7Q52ifBCxuIAG75Mj5eOX3qCSiIGwyd7fWyNHvoK/g4+jFJ0pWWc2XNDIWg+hPEcoolegkF+MDaH2huKILw73ZOjW6D4ak6maRKz3HmnVAlYDHPSII9vugxfsjuQzrh8PN2aR0onw/nNr2P4EABCbzDjMjmFI7NSIrBxHKa85QYSwN8hnwB98dMVlXQvPgcZu9FS1pdj61CRtb6vjT/A6rMtWuaP1vqT6dK4bCTP90+X+rOJPvJbM6W+zKhFyK50qZTO9pI+Jz8/QT6NLwNfBbYKOoNcLK/l7I9E2StN1dIFTojszOYHnL53U73wdKrCUzn4/AMC7sIFk24w6Lcl0vrX1r8G8G1El4TWLwTLEi5exKplO/mUp0gQv518GnnAkkabIQTzgMPH18tYyZJ9qLBRvLqxprZaCdAUaZ7RKkqKa+8NHToVkco5LTqSzn42mBU9JOjXtX2aTh6t13VPoigSO5D3eKI69gbCCsBylnP/NjdBvg4Mfbw5YpuEllXQ1ZGXKPDDdNhPgKZIEjpIM3TSMi12lmieuoAKZs7KZFNZus1JwNlux1zfd8cJ2WxszWOyA+kQ23mnvQEP1txBubM1D/uTYbvv4IyzC88zz9i+9Q16Wt9mf+k43bs2iD+z9hMUQZlmspPPX+1kBMJ01RJcC08N72XlBtVynEKvBHayhBmpSuvuGDv6TkjqV7uwduCtPeVRN08Sb9W81fEyQHCOCzR3uXmMy7jfrfk4OlbAJrh/J8+ivegwutS8lcfA4HhZknnpInKpiupSLto+Irmx6mov2IH5eMLrQKFltgOAx9AoEDpqmbqT0dm3D6F9h/ddd2A/vO3ePTtZdGxmqjlco5Eef2owbJu+TMq/KcVTr3nr16xLKonrC7DASZoZ1rmM3V5xDv5gfUVTNeMU7fhMelDG3fpLTrvkSjn/1nyTvNxZvSRHkorbVuNanzKdLZkBXW80Bs1SdmI5VY2kvIQ0cC+++tW97xsAbPlcplqboxjpenzHsQYv/kCgS5oaU35QVIovWz/DougPllytr7sO6iL+gaKnC2ctELCzDuoHd9yBG/gslh58kHL69639A/lr4gU8Md509fekbY8MtA3R7BplgDrNGPkY1ma7UYB3htl4mZ1FS8sfD5e6vesbhDrLg9Z38nDjztaG1H0y4lPE6c7mA4X8+zwa7+KvXLlyO8cpBkwFOLxCiGkoHHf7lSuXwEmJMcJfghvAIvzY5eXIlcuX4djr4mSBPifInMtL8O2Xr9wm4LgsiJcuX7kTXBurnf4szLMfohKaRDvpTgJ+aPi2idEY3SuFLETCYGsxs7UvUMC+MD800F3wenjqDQsVujtmZylUe1UtW3cbWN+5plNJmpYwkDqxHToboqzCB2AZSR1W+40S0AGSHEskB0ofuPOGOfCLWHeHS2XXS/z8gid5+u375k3ChXFfcdpzZcDWvVHy5NtJ7E5frPWHOFKceWLIkJtxXCjgwOD07HVnD+w5FMXYF+iJ80vynreFkvdfb0d2BwTSQ15pug7mju677obc8z/GntZ3l2/OtMKE0/13ZeaduP7af5EK+RTwrc85dSneOcwrYSzzfWCIuIUFmHCRrScXAGfxC8vO7XUkA7qSuYudlCATIlss52HVK8CcVaeumUq5/YJmYcu/8kmWqVQ7NTBsh8KQ6FSfz84M12gq32OwSDsPlmgP3kmrz+sb6ditWyqxQvOAtQmg02RJrb2vUKazzcf67kohwLYl4IhPnDKU7du3i56zS2XtVREw7iVV9p4RLh2txAKpUDBpSv1eOZpLAFMQeG8uGO4qHZCAwCse1XYSuo15c2AY+44p3r5MJgAsb/Z1R08lo6lQMhkKWHwlUNt1KGZrhhcYMeePjfb3zUqtv2v9A63cBR1Orv2ci+Mvomm0iI6j/94MAPhAo1iRD9HN6gAD8xkscEI7FTWCFFmTlTOI1zmdRl80RHSNnEAS0nlJXzVUwiKq8NbBRRemoZh2SCvSHHWe1S7+rz+83AzPbDu2smfX3Oy2xZnFqcl8PpfPZCpZVvLnq9CBWDcJRWyzOtyNIhIalN1USVIvVztLdzvFSLm0ZLPAILbW073VCo2mwHPNz16YIuLksRvPqvxb3iIs7toRFFTTFgR/9dKZeb58fSn+qjRXXviQjQU9HMjkPbRIKZkn1i3yVyPBVncxU80UeIMDvPrmIME3rg4SoXT+lCkSfffO7S5B5BRPYqnGFzX+uMsYSpXFdJeR1VysdKmw+26NH+1Otb6bzPkDSUXOh3isTorM/jzFjZODIMcgyqJKc7BdqwduU6R7anAnEC8IDA3TCcALu12uTCoWcQVdwVqWbshSxJX17Y/ywpbtITZdwIfHi70jk4Xe0daas1PETeDXW0Mjfd0TY8XCJP5/esbp1ca/AASSnP0i/qarMdLX1Rh1dOwxEidFQEMlNErXJCnAilEdXHzEIjDOrKrZ3zGUPBv/TdkEjIYGchkvoCmcZNkEGvNkCGQdO9GUHQMprAuBysYWq/UaRyM11Uo/rogSTg/2ZzI9yZRyst43cuNgzpXJFJOp85W5Pywbh8KGKnKHDz4SLUw23Xw5h7/oHhsNYlKvi817ac5B4cfG2Ottdy9P7psWlYn03t1J+7HXtv7AaF5YSSj44ASrhf4pvhV/AY2gO5tqkm6DinlWR+ZiezIBb8FsqQGPBf5CpzLK46yVpYgshFgx1QvfF9xyHyumKg/0dMWjfp+uoRE8Iq1vuuGQaSc5ZGDwi3Qnw/bOZ9R9iHTFi0Nt2BYN9OQfDc0APMSCS4mKCUOQPKLNSZq1uzo0B5p7zWl7nzzQK6vkKva6DI8YHfCIhPeEy3Ps7C+wpbo3n6V4a//a8/xF8rtoAR1F73FM/DbES3TfL1o6pMiiQg2CrEryCaRpTq7XvciqidqHqsq8KRhul6vjTSPNqV/1LnQDA/YmTIT6C7/HctM6dHDXzm1TzQkzmOqyU8PpaVb2T2FWe+vHjgUZYvHWDlrLFza2N9iK19pLGtqBjTL4aifntV7FB8LoId/5fn1/6NTTAzsKB/82UNpV+4e/5sIAyIiWiXQlTkyXh8W0x+DkRkPmDE9aHC7vOiAtzXq0xtVvKYMXi41tB4cPjlQkCccZ/hLEbY3lR47uep8Js78N3o7mI4r8A4xFj9vwJ9XW19Wk34DRYWAOqzt31QXsG0j7k6888dz+0Ux/4tN/gDr+4Rj4h240jrbT3IaKVakrTeM8wMGBYQv8RaQiTlC5Ey6F0PoRJ7dBCSuoKc2tgZ42JjAtW9/e2F4t9/UUcrT40fYaLllE3YBXN/bCchbP/ApTXhC5LRso16mH3bDf2dtf52/8zq1zsjxz9oUM9su2b79ejBwMqd7E4imfgCVPEGeZnRbvOj/cf8+YJI39kmnevh2/GS/Etx3Jjh4PVsYr4bTuGGUWO1r78VodP40/j+ro9CdCQTeHUadwLENXyCO24wQMxU2d/UavKdvIbroL/l14wduWm0o211uoedkeqWDhNs1qtl+Nw806QYytSIRxBm+9hrtlvZALeiXJLVq8JGRqe1132GRokA/ssePx9O6QVEoHEwFeV4sBciMYrts9Li4TzrgFwquh0jb3IijQH/2hsq2gKlJJNxPlWCASE3zbRPyI4v7/oJb6QSCrnyJvBL4uftTD0ecbJEEmcY2Gy5y4ev51MCx4qtmcwpwo6Jh7C3kLmIaXqLqAg/AfeGE1zJHrrqMone33SaL4h+T4r6/P9gED2wPUPbptG33uB/gn+E/I55BJoxMyAFUKTWwEDgmZ2CTMFbXhHy03Y3McPxrtDqs7lnwWFoZKfsA0nyuFY14p1xUMYaEx4hcIa9MleO+98N4GrYtXKetkb53GtBkVNg3i2M04zKWeiO0bGSaWb2mHGiYvjfZ6ZmZIKNiVk0z2XjfhH+Ovs/qRnmbB5+FY3M2L8TyNqACVOg6v3dSPulSBR37s553IJKWQ7bVMJZYLA9KBE8M7hLLmu2HMNscPlTltlkxPlBQhFh+b442btguKN1+m+9ESHf2YfALpm/ejDaClgIdW9nvbRd/OtP3CwkAhzikDfh/RB3KpXgknfekci5XgMgmSwd8kVoJ/XawEj/5vBEucvaxIF/4OyO//UJyMfOzXxMkexmv4B+QroB8FFGOc+eNtTYz8d3pwdvlj6WQP22q7hAssWOmEnenG9RQmbT7LznxSzQtZYsSwzCnqgIzNyus3zsRLZgWviQEO3y0kZEx8WSLhsDlUXD/VFYGXTHZX02ultePkS8DUFz/GsW3AHKfuYqsnadw3zJYkDDnn2rFgeq6pboSGl5ebGkaagnzYx204A7R5f/2rky7g7zRH6QXpSC0g9H/uc8kCxx3hdFNXBP0XH+SUjf0G3gcaJX4UPmTgBTZLcfb2Wl+purFFygQNl4Bh0NKJami6unlvFB5LLn45k5D4q3/JamGGwXI8TD4JA5FA8sdiYZ2QgWLOkpz1OqjOvn+BrZr356g2iFKgXOceVlqrrRs5Ed/OCy4+HAY2hC9xpPU5/z6leOfNt333NhfbuoojbxUU+oUU/NXzEv/T/Bs9S1//PRhujq2PnwAMFUC90Ab1E6W+bMhNuIH2ZkVbl5fSpuQ6pTab18ILNB0O/wM5sS/2ve+2Ie2+94ZUFh/47dNjiSRp1F8f8hzfp8TuDWfS4XtjSuuexhcbjS8Sc+cRbLzqcvfAAyt2ZPduFiM4eJn3v/m+mb7HkpKUfKxv5vav/0k6Df+QU99GroKcumA89M3jUVvfCCvg924twXNyfzjmve24S1rBf8cJBg75RUXg/g6vaN6Hftur95WWlsjCUqkPxogjx0VDwJzgkq++m2P5vT/5Y/LHX8ENusclfP5XybsZSxoFeeVz4RC8EfVNlaRd8ScwmEMHriVprUgmHQC5pJhsUjZXKDuCC/iT6/BOqinkPp4jiQRAZatVs7yJxM0NPN1otD79jNLAnMZFVfwRLQIHuKHgP/szgO9na1XMKcoIB1hggfvTz6RS8G8NfYdTlVGFrpckPByo3HfW93B4H4q9oA6/+KYuXPXabVx6Gw3QV3Z0dWPNWos8C3/Fj/oJvDfdbiPZj52vBhlaLy7pbiPc9PpGSVQIDHbA6AyVa07esjKGSSvR+t3WRzksZm97DO+deiNgVw7vAA8UpiLC+p4DuduPXL4g8YLyUGrO63W5b349d7zQq9PL7tbzMLl4RUyffOCGpQ8RzgwC3KDAFabMdfsl/tEHJUVWbo81PR5C5HzvIVqtzPoB8+D3gGeJH80Q3NZ/+l0mnS+uCVhShhF5SdwoA0p2qoCcIIBN72kKR6aW7ggDpxm8IZLadpjXStoeS2jmgGw/avhbbw8Yj2I+lGsK1h64RHond11alUg0dHdc3T/qkSUlgKUdtSn5icdZgdAT8lRth4QDisRyqty6zLtRDU2DDgJx7rEQtzGuVdoaFrfctHcPW+/DAIZdtrOVjYK5cq6S78dpi4FjcsJ69kO28ajx6FK1ugR/jGtet75HXMHedKonrmJpoGoA4I/3pKCdN2Ntou9S34SGb25c8/JbP5WNoUp5yFBePlqXuZ8qxtCGzJ9F+0DmXZv1slrYyFq290ELsEob5xtpNm3lUh+qd3bpXE+NrqNWOkTkfqf96kL/HRI2JVWTNe6lUp+CyYDX9NMRcW4gnDrQCy5B6ZNeyquypkomFl7S09Uj4EdZd5TQ6OM1ml9TWfzLNStmzwx4Je1LX2Kbj1zCgu/wQlaadREieAGrYclbf8OEJUnVarsmogz91cDWHqU6xvBsbesOHZRE1zaF5Nl69Y3vhqLlfh3z4VAaxhfhzk7qcai9ZzV94Or0geturx/TwH7UunpDhUFdJCI0q4G9HgKTW8NCLirJrcdkKZoTsMaBx/J4Md2dDG7UBwshYZtr5mwXebcdSYyfEgy/e3rX0HRGAuLHCVrZQzfzPX2a1pdYhjJ137GuUu5Tn8qVuo7dN6UYFi08OX2a3uMpawJHa4YyyjHj1O6L28N0nSP6GU0T/HocPYHpOsefOesc2XP83b/pc/zd68+N4h3oecBlCZoTCjNwAao7T98RH2qXuGO0OxFLU+zjtTa+n6e+8QUOMGEkVmT8/EDW9sXS+4MuIK2bv+AEf25+UDG29dyxPygSVZdk6ZrvOPk/9/0qBF3AO0iFffYIzarTRBN0nmNfpUO3mka7h2upRCSU5kEE+BoRsIgO/AvQY+FXXcTdQxnbG0sfsAFIiCEz1kuLe8J+MDLai155e26Aye2AreCgy7DnuzQX1suZFz6N/n/2XWw0z9qHPw3cZQ868DGjjX3p0ig/CIgXCRIwohlMe7Gz+MmPBCRcvuYqcYJ4EyPF7nw2YCsS2oP30CCebxOJKtcKm77Vpb0peKBdduxwDnED9xVJG/jVKg2+XqObTd8XTwPtd4d74gKWsEKsVKzPTSyiwCsh3hOJpdOxSE9MxKaFieJWBcXtVgTVrbAyCwmaSSNh96SjdkoklgfHuKjcTCUyPZKZaspRLoY9VqaWsTxkbFrypM9d+pwty/bnLp1zeXVDdkt+sSl4rM5etjUmt1n0CroKaTIORP2+64kikgUZixpWVFFZBTDHMRVHvvUVhDbN1agrSFXD6tIrHrnrzlvO3nTy0MGFHduna5WeQiZl+7yuDoGOc9S8OpH8dXNA1xt0dvxnoZNCnlrn9e/JqNGpynKIedA+5sMq1GBv+kaYaCf/2P4Snrxlb6QgmRaOtwswm9mIbLhlnxAUebMtcBO4bF8gmk3HRG/ftee9YiyNM7WeKE+I7mcX/EAq+GgxHMlkouFfvtATjuJvRzJE4BQCToyIveVkIt0jeZLlXhFeu2wY1ozVvtSgw5VoX7EyrdFR+h0ztEAlMdKgTyVGEqxsSLdTo+n1S3E2zPH1a9RggwXkv8i+jyaDqijSDNKvHwRyLNCCSvq9NEH4seks/uXvpsn9Bmeu+f4a/M+/+vXW77fp/hWvYN5mUAovkjLwts17EnSxyIXPMSlkPdrLKMq/FSqc9AWiyvwYzz3Eu3t4Uh5KqS5v6z7RDHIcceEPS2kNO5z4fxK89rfkL1CKxrAoLuUqG6BhY00V2/afqUwq/363y62LnoLl8pRylks3XTzRP/jBQABfssjHVZ+iZ03Na7gkMwcqbmg8MbBieXXqTlHf2k/JA2BTj8PnRSgm87OvX6TLnOo0z9iD8xlmStorji2pTItW3dja5Cc3kEw7G9A2MhsTo7NAWRLv6k3OlQ+doYVKuuqSsUsmvH9qh+HlzE98WTYFXhleyv2/nX0JnBxVmXi/V6/uo7uqu6r6mL5npufsnqu75z6TTCZ3QiYJEMgJJAQEwylHOETkFoggCAvIoQgLKocgKyvitbCiK3911ZWV3UVF/bO6Lngg0/P/XlV1T08IIfwnP5iuqjfV3/ve977rfUdwF5bzAQapVijh904MjODSJkVsShT9w6FIqT0bAqtEFKKmguLfnfIDcTEaG2dokpGfm5xKLzV0Rmgn5rFGYPDcdoPlZRRMFOhxgqBncoMc9kd7go1/V46Gm5IZ9s+cVeUvf2ESwF+mfDeDXb53aT+1y4OO88NN/0zinjr9k9ZI9Layl17sBlpX4/Jq9UmDC2nJXpeDXF2NucVGt6sHU6pOogS2vcR211vt8ua3kcoSPzOzpmM8I0jBMctkMEuLAxvR9WyjdMG4HeuSE+meZRLG0u4lfo5jlK3XajhdOJF8o3RqQdqdABYghWwRIyW23GAzAaMn72/tjffkdm42u7cV48m4n0c8s2qlEu9NZZqsrIz0xjxRA2pHfzCKn0VIyMe6ImBn8axMa5ETKeIHmdwWaOgS7JkeoEmlNE1oLUfC7JwRYkM9MwFU+acSKAWmxdFyN4pfiWF9MBzwh4JStHM0F9ZEVploVBSGhqEx1F8TjTQk/Lad6A2ZiqhbQbvR6W0zPz//hiMHJn1rYJ1WLBkJwzqVuSznaimuMdRXDYBcoFQ/qHuhRPVsgLE8q9TFPHKsPb/DpE8ap6X+LRxN+i1/QC9vymSJNBLAvN7XMRtlRIRY0xrcACgC5BJRxcLo+Hgh2+FHMdMKmbGsvDsmnF0CCyMOz7Ed1YJC59TK7geWxng0IodTkWXrJjdH9WIjq4o4GltKE3XBilcMPtDUGEtNornGtvbt18ofPjkJdLl8Po9/jF7ybfRth/keP9uXpv6inlr7mpJ7XOd2SXFDm2p11fpABBVLzgFnyS2G4GpvTivDcq3LkUOXxT7GqUrW7NAmuq7JBqu5aXlTIKAtP/f05sYYKhSCvDbcKutBYVQB28DmwruXKUyAAfu8sYSFdWfMHjt+XIDnwtfvKQw+aCeZGU7h7s6GgojLLs9MDDWMb0t1ZThULCYag8niNBCPvoGYSpjpHgnkCic9rmCFl6n1cmUvqyh7y+3FQiSVDR9/bik/Vfn6QIPMzw6lI9POfm2b/wPTj7/ju8F3L+Dl9hv3raZ04Ihcehxv07k5UTBODKZTqDXXXM09gmm75UTc3QzXFI3l5qrYr/OGegjVsFNhAfDmqAF+1//tuMCznsngoJz3OB98XRHlnHVxcu+8YNDmoaTAciIiiDERZzHBXp0XAA+iPx5JSsG4prOb442YI220EDcRQdFU4vmVg5v6w7mZj7MJziJsaQvPnSUhA4wOxKViMa1Ry3UnkmL3pITUPYgfDRcaV7TahAiSprI4McoaidkkG0I79iiIyM0NF3EpHoeQxag8mxNg+foTrZHIxvMftHJtcc0fTMaS3Z/qTGo0HSIQwliTzfZkQ7a3s7RqSdif5BBmdt1NeJaMgVrI49P3s00pO2xKrBLLYHlJN3mBJ939woEx22w0Y0jUeJlxzqXRp8/k1TZ5eFU7rZ/HBLBns1E/xwGQRQdAFo1X7WU3F4n00oZuDmHmvPgZrxieu4oO3qmf1KSrRAO96iqtOTWQF1jtAqd1zgzdiI1a1xmqKhfccN29BHNgxzKNBOVBm2lgc5LImSLHgRDJskw4J4A2zFkiz9Oa8FwYi2s1xh2B4a+4yk8RBh4iploEwN5SdvUKhrJUf1HC0SABVtcN7FlgVqmMSIL4CcyJ0kSS/BbIgFwI6pLeHCs06HFewVyaYMkfkDJtcb3Bb8K3GeYVIj9SlhM9MIJjAhNJ9pfJlkJYMRqyDVyUFARYnWCIxfBusyUpBy3NLq0OgCbHDJaUeE8Dlf5ujaXfk2HM+ZoA5w0y9ec5ERxpwBPHV8tne/EAZZrh7Yh7luRMs7KzsnOfxUmWQTg2dN4WTdtyXojlmKAlccHBxgC6C0UUw+bRcR8OagCOsfF8m2gqsc/fqBOMtOAxy3K0kLtPmx/D3bDuXQBDTqfrnqm2iChTG6S3ttS1YD1Gpx8YnUKTlgWWGOsuNmm0BIF/EksiF6zXCSvIWm7nqIQUwxKQNL4jh65T/CaNhjp7LSCe0GrcvLpuf5CwnOlX1OyMUrm3cq9loRPRicpMVnVxNAE4GgEcFQC+RhVR/lJON9VcnW5enENZGuty1mzedVLBKLDV/w7dFUyXLSLjRoZjg+fMGlQ5prXC8ew5QZY3HYTFIoDQXdbfDDB4GydhjMxSpG24wOQETGNGaVNc84INBuugLm4iwcHdqIO7DoAto6Aq74MN4MTI09/BuphHTyi4y5pr1iiGdoxLWLCCPIOk0Z05jWJTX39BhAlIPDEvXmcQdrWLG8DKVi6IA6Tymcq9FD0uMoP711mSsvZsGMjVaIriaxpgaqP7GNUIx06XHbyVykfC2uGIDw3XCOvzaONDwfRIwCO990bo3LHvpk+8QHqA55l1Lmm+N5YPQ7x0jlrlLcD7vG8G5tijHEKzqMc6lGB53T5kGap5XjVpQ9eqjp4vDIM6xx1CyYuXiHAGTyIXrjXcAbCQDpH/qLYuqihoi8j7i5V7vrho5TRBXLwB8HMe4dN1HAXe8EPfEMyxldoirGe2+rKm19Wa55wp9FXD3qrN8npcNpu1QX+lh5sWGdZVjiP/OXcVRiSrcCJHbFDv0r2SzvHTU7vWgIWiaVvPDX8oeuW3plfd29bK36fpDPoGTsGODjZtmonAbxRiiKSNrdo+42cNJj0gabIhLWW2WWc/NDJ5fWNW8OAeA/r7oW8E4LapTVPtI1TyjaGFXn3lutZ+rn3vhjHBnKp7O0NPZU9UdWD0ha2oL35hZMl4wzDBoL/ynLx+99JJntOl3jSPkU1gToopshyaG7uDkK8HVFniEVmLxMipMaVR4NxKL4NpxmD9K09cNaZJhAlRjhXp6LXb8vbc3Vci7PKbFMD/Zd9wFe9e9LLt6831Fasp8Amn/ZIDtZOp2+yGGbmOw95cHjunyM0TtEoY8xo+73B4n9i9TuEFfz3iW9t4/CkH83OvUsw3b1p+GMwPiu/CPMX7AtwWxbsX4oA4Hz3zqR0uLgBb9AjH3eJVSwiMOZggSWiA98oPtla+W8O75hd4ecNh0U4w/vbNEoe/rFO8V95ZW/lzZC9yES/K2nvhvTXdIOLdB2hIeY3PD1I5FPD0D9s8WlafoTFHdHITohnQ0HlHz/UPgh7EgowW0EOWddPRsn90o2XV+O3zAHcR4E5TuJHXTa8dva8gT4+iqvpDOsY2c+q6InMUgv2u1pJijmbQX8mq0bDROnRkGc+0NEX8zSzTkKjJ068DvBMAb5NG8QzK+NFiuWpTgwrocaCLyy3ozg8gYlF+bUDh1A3ldGbYVtCp2Q58tCjvboykbKN9kGmIMWyz39FZf+7oT9RfY7E1/ck5xR9lF6xPt3WuqzeZlSBWqW+U4ZhPrKDM3gQ1kc90jEnoYU9nQiQIqjUGGPCKT+os5gQhWp7pE1BVZ0MR5zs134LOZnvWbLsT6ZTLcxSZaecrZyuz0nh7Br6FNVlNEFZ8Ar6bquIyg97wvlIoLS9HBYHjjE+ucL6Y5YnOejmOEzBPujdoXERcqepALqOkoQqOiyrBhJw1cdWeh9DD0lgHfKcCOw++c/lBhhoyKq6EKqaj5wh9M+WoxiPOuHk1yGWGkhtBSKjqEN4cddcWcGudciENL0SvuY0dqllWv0O/JTIiWGQOLhcEjXXR2j4uwfw32QhMWRJkOaqs49U3G5yD0+UlAQmm5fp+6P7/HsxxEmzJQjquUN/PkefJHgn174sE5lfvuzbfOAKePvn+6zY+/zLMKevstTzFo6/mDAFydJOw2LTbghNTFYTeq86oNh9vazraDXpa0C2WSMlWCc04WVqVWyq3aq1FkG6EYwY6/OhUtI/e/nLlKaE9LbGcxaqCuOragaEE2Db6vieKOEkEsFr1ckFGDG8aMpKTUQ3RdhMNGclpFYjE7mEd7K3AVTNxPycQRuaZ8NUn0DklwF64B+TMEjonSv9sJqdTJcvZY3qId5w4jpjRA14dcK7aib0WNOJITzqvAsroAZBS3w/KUmOCY5hEo0SLgxDCiqZAbYrm0RZJpfZu0lQ/N8kpKrvyuSTYspwqtYw28wgLX7fxhUprn0jYvlalErmTIFryNiigBpRimFQ6hImGGwnxi8LOJzXtu1v9hDRijeBQOsXRlAohuLBew956pR29skp/bkhQj7XgXuS5+o3gbQMY7fSbH3PsWLg1bsMyzUitSRmMHSAMWIriE/sCImIS1+3taRQFlbU4Vkq3C5WnKk/ZNl09rXMAcyBRI8VWrXJr5Va4GfAjuVA2eBGM4sAJV4cZXmaxwGX39owFwHDVh7tFJIV0FUnZGHIc+dEkLKu7XqPOeq2ndn0T5VejPF0DPVA9/faMcjodkskzVYrrc3WCJOpxjRlHPdDdkjIwX/QlWkyYAd2VoetE2I6eNsVdp4MbTInmnnAS8HEWSeaGg+6CKW09HSIsmK0KsEa19cZ3I1rHG4YEhcprFdB8sjHLWTOG9U/f0BxjVI5nGJ5TmVjzDdN+lnFWz4pleZRCDUIIbHY2cFUlUiMC4CcFWMs1sJYbHJ/dCZtaEKa2kCMN/ChdZSp0SbG9uIuaVsfcqrzF24l5tuiczNG+mLDArmcpXSqj05gMUUmgT0a/kC3dFOAiIwqIBQP8CyGMVQbtWTvVxIt0FBsNmkIlLZjBKOuM45um1u5BnGsTc8CjvnCchc8a6pDnvsC2TSlNE3j9YAdOU3u5Z8rvb0imIyoPlMBICnPvGM8SFpRd1LRiYr2fgzGBQiomSbFUIUBH+ddPrGgCHYdhWFgtUCYZNHZvZ+WVTLNImnO8WeqJUP6bAJvqHsemOh7wNbvKw1dvTz16slSr9aypct0BRKausA21OBxTiq8LprCbcy5/gDc5iNXRFsIQAA9te44QDnOyuTOqglWYaBwOynBNyPM7eIPf8XztqaYtPHtuGzerDhLSkJXlhnaOy4ZlPAfcWUJfmgYWbemsgHuD4lWVP1wlmkYSC6xugehZ/pQkPbW8bgBO1T9e9pj6uDJNuJa0PHeBHCtzYoct4ysdXyea/wO+xDnPbwT8ZOOWhqu2AZ1x2jMwnYhHyvxkxGYz1BtcRn5ZAIHYlEdbWhslxVANhCuvsIKqCeTgzej7N92Yzi2fwbcpOiaRjadsWxMxQ4o4dyYrwC5ZgVb8Ea049t77KAzD87/HN+Fvg665EmBYUm5PYEfPt50kBbc5c33v7lpXleo6LcS3MKFqPipooJmcF2eFPlQctpGCRGZ6fKxVYQXF35O0U8TYvdrfKpxytt6y/phLudAZg0U5smXdkuPHC2F/mGfHUWSqWRcCIRN9r6UN9Un5ttHxVkXR7HQhbonK0s088h84vWfJfcdvlYGmptO5vZPDlXuWFuyWkaZQfIuNQVgkjznG0ekQHgU8Z6n96NgBdMN5ycxuXCYYT+lqijNMaD3sGVh4dPuPfmSH2Nd/DQa5XinQpOaHXnqJGOh4ViC0NrdvHjlpTmJg7iKDc5ObfVjwMb78/FM4ALQ/7Fvr2+WTntqxfsVolMZ4Obark5BKDzZKXvMZSr+lajKOH4Vq54MADfAJ2hGcBOsOpCjHDOaamWrflT73WKAIW+JuOSRJmA+2J81kdMd4Lg3cgWX5oBKUAGLMN4ZyQyu7B1uSDIdpfW9a7epgmGsZYCUCGxnMzI1YPquhqbEoSTQkA/7L5Wd0hUsmQd3quvpDu87t6yxKjAo/Or3N+2mtj2Tn2geu+lzWlkDPUUmIkwn+GVPKla7Ztl2KieJZ19JqKHNftNtTsU3G64EOG5R5hPdfT2Nn519naN38IOwE4clwSMKengYo8FGvA/ABXEB9OVDUcj1GuV9khsTKNSDkSiAOnt16Avoff9fJUwj9J4M/w/E8x86dAFo4AU45++CDCJ8X2/KV8xn0aR5oYcf8Q/guvNLXT/08nOtfKw8iIALXUq32/qXNWN07CwW07F7vjmN77fiHj6HGgdiHQDPafy4flledERLefAuu3npTMLaOJ8zIOfvhat8F9p47G+S/XfVVqhrRTHeafR48ZRq0UfcaK/HRHWGZIZ7qRPxX7KCp6ABrHmD9jm8Z0NBWoKEN61ZMh2s0BAq7p8Q54NP2HVUKwrwLKfYAzrp9WGvgO5wzCDuZzs0C+lmY9QFgGXunI7I7OTmQFQQnxhrJttIA0xk/+H/oFPGGxmJ/bYLrxk/G4nZ9qfiwEHp8T/tOzsWGE5KNHhk/rrWLzj42SClGFVkUbAm5U3/L/XXVSFaozV5pfQiLKNBwlh8QM/Xwo9ML+HJ6TbvrN7hgR1TVvxpHcmsUeGczzjmad6caXkc1KbhzNnvaufaHZzdpGGuzJ3xUPONU2OH7z+HDykq6lm/C1ZvVtTx7v41nMPGvmz07ELK0czYeJyIkwlcyDnh7lgF47vXCcrpVIGjtjVeYONg+Cs2DofptuT678jyaRjmNpgGVryzkTLq6Y5wZwRFfK+Vb7lxb0aJ6C373lCpTQMVqZQaXq22s9vD2Ci888AAWW0TkFWaAX9jGi+ouoPvuZ4PW/Q94c8pWYa/2bAjQ2GPP90tFkuT6ncslH/qGENLAPP/8PxmioQbBzrkU/ywE4qZyUqUhbxiayjxwaP8H7nHV8YP9fzd9cN4342tAb6Gf+NbA+1amKWx8z+hCxpijSTmxPVTFoCLLcdHSuOaM5zb3dImqOTSEKGeljNkJHkYbTNQ5pIq8GbcYf+fYAavB5ESjc4BlZZxoTmCZZRcNGOv0M3VjUNwMptAXPprpEJlsKC4jzm93yg2hLFIybQ0NE5IeDuviZEND/QDbz6H6MYGI7fZ6b0AV9DPgkTHgkVFLpbpUsNomtS4VhvQ1Z7iQ1fN4Tx4rzPbB8V2bA+bOkXF06abbNs7ehp4Po8GhvSee6cdDQ3tveuW2TZtu2+TIyOr7YW1qsa2HvPtd71z8Mroma+ZXMT9n+tzzJ3r2U65iGV4V9C34zB3ODpwUU4NuH29x/O0BicXPoNLVJhGlgIHmfs0Ius6iU/eiQKjlMQtMFf5kieDK3Tj5ViMv6hpIkHdWMaASoxdfkOkJGPZNzP+FGUXf8JUcfWaivz1F9Zlaxzcv6aGHJsc5dlahWiCv6rQEk8wxR2DqtO2xVldy3m0PNyrYUfHEpXppdEYL6hySgn7/OVvsgMwNbsh3rTrD4Hj9hCWEVx6clVeekG7J6pXm7nGpZ2qoR7Rsif5lDF3B4MCJNsstndUYJpfDZJVla8KalLFzJjoZnzxWRh/RdkUl7qycsH5obIsfe8NpmV46RzKMvulr8Y36NoJcmBkf6IRd4a5ZtSRGXXDKwiyrGjXb54Wr0GiDWh+JppqCUZsvDHsl1/a5PQF+8+nZxPLxGR1h/6XHn7wh3+beWjEKt/JtzJlrSgGpLbd+gkdFdXqZP9C7OiDOJcRg/zESXpPN66E9s1xZXoGeUj8SFE4K8/nyNsFOiLOn52Nd3o3tvL1upP+50a0i9ieOEfCotlpjii3W/XiywJs78haj7wOLZlRe5+7/Miz4/fhFhz8alK/20skVa/8rIZ/bQMMTioyd9i6mA4j6EyVko4TCCLLEoGVXT8z9HlQXyS/SjphOwTywH8HAGEUzRBYxq3IsWnfXisovkChjQVL5xXWuuMc592zifatZUTq9aV5Aj8Lfab400GkCBB/Qqe0tkWcd99YWkvoznPV7SQqJLPVmCJYh3y/zLCfwEj3Ql1jBlP7DBrOGha/6GRtClsHQJsVSpb3SJoGJY1d9y/gf8VZfEuANigtnKT7XHvfVjriQRnhum6YDivxY9IPZh/w2cGTQLSt/Ku8utgawENBVDndiDYuYx3P/m8esZggYo1OfP3l9HNRg5/v+UPu+sHf2AVNCJaNUl9BVDW1Bfc3jehQkq1S8fhmRJLBr7Mr/gJ2PWFETxMp/IDysGSKamz8ZGR8ngqGxuHPuj5iWsRRE3EdbmFa/83jnfFfx1qTYRwOwilWfC2UEITMURx5no3zIYxE8d6JJIzmi5y2ZNi76YphW2DBDIgCx9rTxC5b38wjU/fALia6Pahht62yYPQa2xGlcoCvxQjjIfv2bXGEiVmgqc9/8OlvzAbk4oGe6EedMvsc2QzQ9wJNIVHmnBTyrgU3V5nFOE3l8jwOO9cj//XsbUaUiSIERP7n7/BUOLPj4KjBrj92yjsLC+wEWYoYoMEunuw6BpROfDzrlGMBSsmh8IF1us9pTo1xVmrwgIsoZqUFaXAj4c/+XqR5zfrc5DmvTYAY1QRBDfQrWprvSkbYWgcklEy2LH2qRVP9MZ5vzqG2wFRlmIBvs3fq1V0tccUNALnX5zVRLa/2DqfFUP1Ps0eB+NabkdGYYfdzJH+N9VflS5wSkBR7cXR+qD+QzuU2iunNZQCwUM2MjiULn5KygiPLeTb099Dqfn5zlT48Ft35MxA2hYq8R2z0TjqjyCde5VyfN2FX8Peqr4Glfex09L+gbC30l3CM8t1pcySvM3Twe05etQmxXUpJSFieYCuk4vlWzUp0sMsWI6I/ibgByTYDtPW44lUi2rlQYpBBibc11NE4NbymwSjGn27Lr255jRtCffAO+VcA/Vk4KPlwna6vRjQnBLS3gIYRfFNoY0khfuXeQKQ3iXmpq8WlAEa+1961mNTSwnG0nCSmmRnTbUorrVDDcBSUxuHvZBr6tMT3aB7cYzAoNNsfZydZ8uX8ihU6xrLmut2NGODHS0oe4PJNgTM7gVJbHQ20tOBxWpdHerUUmETGzg22M7dfFN9sEFNAMxa2h9EvQdw/A2hZ9EyDXhkr5Vp7aO8GjXWN+UdmS2kWIf//Fl91qJlRnnuuyLcb7jHYfkSjuloKm4GrSr1Iu4bi6XX0tBXNRgE6Og/Xp6SA+x69iLgK4Lqi22gCrWhe8FOxZFPH03qMd+ioxOWvfxmikfPzqpqZM73owaRCvEqLuW5uIlk4Ymcry6rJCWpZNSd821RDp27qypfnQcb3bnXGd63RBxUrn2t2cUmxXlXyGxEiYyAnnRjbGolwi5m+ovNkVjxWnOLnYpqn1Y6QyHdOcDMhGxIvBfRVwYYJOSHWy7mbRxYVV50GqRU0kyEJeKvBGz9fXWx7EVs3N7/2Fy7CZhKaLcsv+czs7853n7m+RRV0lLPwTmcsvTzTEE5dfbs+tdMZcdz2YLZjlVNLRes5ZdKQm2ZdfHs5mwjAIm8GwKCdmI4IQmU3IoqoYtFSzgE8LsWzoNGPun53np2igOYj2JhgRDhqnhQiBZ9W8vtNhnj8AOy/sa6O5pXFDZR36fS+yRO+Kdd98eDKsTB0S8776cISHtcXh7Q6/ygNM33HyIuN1sRPBrPMrXSqn3Q+9o7h8iP+AT3O8c3qUxjz3rKJj5t4/UJCM6VjlGgfOrqaTOpDrH2jZkvkDBfSN3DA6l3445UnOS8pGAQfC8zscmEc/P4McNwAz9cl+ZwKTOynwlX9xc/AZj7f91ef3NYAMl57KN5mBRXhMkEV4hItDOVkVjUhiOEwxuYDVyLs4FnpWClkcbASGF1hDfrWuclGNOzk1KucHmDj+CmhsJaDjzozfzfEGQ6KpMbc4SV1j6eEw6Dlu2fw60Ji4rgqVf6g8w4iGgs8iHAO0iaf2XnTxKak0UtEYy88dZ6sSy4XiTW09fUNxNG1ZZcW4405GVAyJQx0IG6oi4nTv0HBXwH/ZbZxQ+bNoirAIikE9B/Wwhn2dAGtjRK2TD53I52SxuNoez6mIfxeYlwBU1FWM5p7mRUMT8ceJKDKVZypfDbwLuEgAwGHvuhCZvBjVUeVFItKC0Hfe8Wo9VJQPXEdG8F4n30t4Mp8KUPwRtyBIs4fBpsYhL8pExcQ+4kP870BF3Kduq7zEiaKGmtAgJv6grlT+WPktiqIorDgdcNun3nPAirDBHLPxYSIqqih95tGAGhK4Wz995x2s8F4PfAvzOHXxPLyYHg+lvpp7oRM3Ojkt7/1wHLRo0OE3y6Ioz32e5QXVEFgKX+W3lT8qOtp25Od4lWIQpvJlkSJdrHyZYXQVdt0dd376Vk4MHuGZW+9i/iGgkxlHN43Wx4Q1L8RvlClrqHOr+KulchlgcFFW7NxV+Y/SXlsQRcG+9sXH2hM8Z/mDnLV59UVBbWTjyGaLG1D01PLS2bTkrUBhERCOrR7vHEwFVKlhz9LhJIuC8fzSPQ0LMK3wNQNMJoXJqAo8XD14IHXumzGvRvJ2XY2xfKL9sRevCwVz39pf+XOYjam6C0dgcBbgwKmwkR7sHF8dw0gNJBATHXwmpSseCNigIHh1QOYfBhhW+vI0doiv+olxqefdjmIvd9djma5zePtXP4bMbEd/7FFgOY89IZjGsn2WyukTU9vEJx6j7PFXm5IbrsikFvuFibFzsrkz2bBhYBTEjOMQ5fRdM0t9tbVqAJg6aS6R56Ox6ko8HM716YpWz935+GP+fXfFZKRtOuas8NMP2Qb7pUNA+xL1ciKsXrWjNZ/gzpldo5Oql5NhKXD5hAec4yBc4DN5J8aiv5Dj3b3wAXAVbF5g3s79o0Ze0bJYLhhrbOnqHoihfqqu7T0qfFbCQgfvDvPm0ABz6AQpKTzZmw94vrUPgNuqZKKjjw7PNhVJ/ajfNPFTR4/xd652hJMCgrSa31S1LaluNdUXkfEHtC9RH23H6pr/cScIi3qVHb5LncrvZ35WCtaNmLdNDt9omsuXq7Q89fLl1tFapZV/M9TpZWwIG+z0MjkI33WjZS1fjgRvXYZhXeK+Lhq/06w4Mqw5pwcXyyo2racPpwRcEuCRoLGcFc+195VGEmiDZVW+VnkOX2qZc4OgBpiJXHuxNJpAm+DG+ggJoQE0APhXDVNAcz/VApZANQD6m+J60qP1mC8H8KQbIn7sxk3p6aY6GvZOE+06kpi08SWV5yrPWRbHLkBDTxXnjrUsyyRoE8BglUEjyCFKmmJg7iaDE14XLLOqgSDfMh/CT8NaW1VffNkJmg/QlWx1DjGdGPr0R0UL1C3MqizKoLRBnMuKEAlbiBZ88hN6XvljuCKuv6T6Xur7FSm/baLwOy+mbqw0bUNr46cB2H8IcMjxaKG/iBaYrAbHBZx3mpG5tzEXps4tFmjyIli380H3SPpafd2+ss8/rhR7aT38aMRgWJeZ1h3b1DKbmpt0JxmR9j/QnYAKRnfjJRBgubdx/Nl7zF551djnIgjpj9wciJ88+2AEo+344lthv5/jxyxKIXXPyMOVXyB507Kz0C5UeZVF+O0HX1CRFD/mZbm5Sf7EIwHceszL1iBKyQcv4lAcwyDu5tWFuetRmv/YilEVRfnKL9KeLlqdSwb2mPRULpuOGQxzpCm4h+Z+lHZ6szjgHx5u/Kzy4LUPb+qDtQLquOYhGc1dBmBvPCy041d8av/S3Vzlntsv5wHIVYvwnAXeNeybpnieHCkW2psy0SPj2fWIO7EEbM71+ZbKTc1ZADuJvBQa1vMEj6Hce8A/vfYj+9ZECoN7X67cfqquZSenr0NdLOoa2Lt3Lx/OZuXKf/8gunbP+eukvYedE0oNdQVw1+Cel2/Za8eWHXfBscuu+2ce3rdnb/fUCSdOWf/1LwwOFIb4vYesRQ44tfRUd2tj9MhrgbwWsXQmoCbYTqW8WsVFmON7TKy4ds/AGelyPDv5m9fNaRbtveTXMI+TbsnCnA4/k45COtYyTKfw+m/8U/yeS39JAPLNK5Y9ttxaDHsjcDPpqbam96WjPi+vDWB1tF7O9YK8B8hfe/TgLQ8/cvDWhyvP9I2P7hwttx4W0IabHn3klhu/8PeIGe7tHpnIt47yXjwowhfjJwE+7nFr4Vw1jtIJptp6lwblTLg13X+LNMwa5K236LEiiIgge/NNSGRkPiTgm29mg5bPi7s4AO/U4Z0y5+hxZa9yvO7Kl/R4BL2OpEBYcnmUjaZb5IMHzfDcRWHr4EH3HcyIU/eDe9wWXH8bcFpcGmR6a7XnXb4HwmpcE+uNO+fg03kzPfG8TQ5gTzWYuwe4Xzf8k7y5w3c86dQZNARH1xul/Cbosj9XV2meEFjRrWkvOUeqc11WUlAZDt7SAwDf47xZ9M4EmFvxf4P1+u4zgarBmjZdy3rhkCCORl0DdRQ/7/xaODWoPO7Cfb9jJz8WBlnkn/8d7sIyyCIaO5SJa9VYNE9l8ehoIUjczjl6e6mMwkhQ2L/SmvV/4YgkMvCZYfDbZP/uzvKuK6amrsASYpg/C0TgifAngjH+K0dEnmX/ij+/q7O0+4rJySvcWii+z/reQuuc+o4yXshV8pwZzSu6Mp7HIlf4W7rP80v0OH8LkgI3oz85uSiDNvWJhyyzVpAW6J5uB+8sIo9pHyVP4fea/Jac4k40h7AHdTW3t2+XeFFC9xpmC1JoD9DQ0q7wVJ7jMK+gltx9kshL29vbmzkL/Y59gmFZWeZk9gSUK8zSwAMZc8ZYhzXSxmEZNC8yu+lEFgbILMs8wcp0/6bnf8p8Bzf4eLBKSrB/O1oiIY6euTX1ZQkfIj3u2U1jjoov+tHp3U6TGkuNdH+jxu6MGeotj3Jl5hpU+TuEduERkeY5VB5anf/hplnMWYIcxCz+/A961qAtPAlLc2/TcYraWhwaKrYqf3vpuwi9NBRm0LfysQu6u5GNLQvt+Ei88G0crvzlpZe+x/PhZCaTDPOuH2XF/H/53mKe8uoyAL9sSVoq8XjOYreTfhR3DinDcKSr8iI/FPrG4suvHOKlcmtIfJZ8y6GluCNnW1NRXcbMu2iq6YiX9RSHXn+vizpazB72I8Bzme8k8hBzyrtxF3wXXtBR3LnsEPfd1458zeiLUFSZO9Kls5+enxfQG8BzbNhPIc7h38AmESikQ6ieTT4vaIRRDTuc0A4Alzn9NMoe8U/8nBd+884ZYYd36/A+2s9Ar8YDsDUmW42ZQyMOaz3tNLBkLjlgkFeBp76AXqxGxPnq4HrD5RE1uaK7BmC2Ofc8Zf4/BUjmdRb/xAy/c4YDB6vXYHjD56d6qcNHXQvMY8wc3wKW1U8cjszqf3Gj715EL8JLVhqcw9dPI8PoFicWQfLVxyIsHCXUzjur/mSe26bqiplsin72X4e7Hrk8kYuwSFf9/rNfy01O5T57akvKf1rArwQaUo3GRUL8tHBnUiCiPxC8PQ4WxeZke9CVfQfICLrKkQFSXe7UIQ5vgCKdorlRSpDholMbbn5iw8QLl0R5Rm/w3wySpetmDV2lqxKRY1PtK9TcFVGFSKquf+Yzumv/LQXZ9RWn5maKniNHRNdGotOMuhU+PK8T42SP8ZyM7HT5eItBL3yfiAFVJOguhK3/yW0DXkLEzz72ONr9GBigAofRCJrmNJGdO5twBITmMSO3ZrOIUypvV16nnWMoT8QJ4IlB2CPCkxEzsBCTssjVlatjfmnK48Dw+BYrimxlXKRsD92ziM/BLYQqf2Opn4itVAiykXwIc8O+JfN55ivoTaB3R/5FAqznd+gteV6EatSsDzTZUiYLN40kChnlJZqI//kn6D5igN6/k9CYWaZyMsswCXTxryt34Ogz09OPHYt+7GgLQgjmPnc2KwgMvlLkwoi0Vn5+5pkMCl/v4j89/zPAQQx0Bxq7GLN0igO2+sVefpaPSgDGExQ44bL9cSLS7HkOfU0EXj/iyQQtTA1/IqoCfURj3ylrp4zf/b6J+U4yDOsddfy6ubgXB5Ty0gcX1EcvP4J1rRHavJ4a/VTr/ddr0DPX9a9WCFFWDdzwb69ckwitMQgx1oSY7taf33fTSVd1W1bbK/fd/+/tFt5wzjmFm9Y1bGlYf2PhnHPs2PYD8PnA9tiXL7i2b+qGpdctveDaay5cep13NnoJ6FHfd/I0O2muA9ucK2ZNayFL0Nl9xawXyb0Qy11242CraWJxROeBP3WJ2MNYvEFaWonBW0wPE0jNRsTjkjISBzs3dkcLSVbRVJWPLx04pbWPWTIi6mSl4J8cC/E0DkEw+NDYpD+jpxmknZfP6/zKZcXxXLK8zK/J/sktHesHlh/DbjxfRFXcvs5Q3Lb51lFfVns1X6hUbXu7qEJOvYrlhf479YdprakkqrX4yLn1Vr2uls0Tw8UlsdD2Xj6aGlk+0LceKyPBVOu6ts4g7SUV7ISPqeCIgp8eHkdsy8xwV39clJLlNbnT25uDiXggP8qzfaw43Sug35022o0DS8SslUsNXZaW1q8Kp1on0v0doVB7f2a8LRVetV762nHL/Hzb+tXF5s4OTevsGMudfvLAej/PykMt8Xj7aHXu4/Mnw9y/D/b6FMx9oBCsxupXW6LVFxOnwcukb5Rxls2mjKWYqbmFe4tVnyx6giOGmirtudImmLGu3FNKKUZQSZX2fhyrNPqYY1T8/MWK0MhIGLSuCx6QCPe58wmSU/uul1nuM/glbA3M3HCqIRmEM069YWbANAdmrj8di4QXaINOEd/x45C4nwWZhvhnr5NY9vqv8kjruf1c+Phxp38h0OQJMC+a191N412CPXa5eXHLFrfpYrUisjPJ9yBcExYy4wVul75d6ohuwPKZ65eUphW0PgJKcyTHBNklu3JtU3bmI8Ji4mUnhrLW6KaV5QA6M9cxuN2vLN3e2LOWtbYPonbY5gI+fcN4sayzhyFhobURs4E9y5aeopHqev0eXQzymUaH0tyBkIpr9SidZDBa9i1QrZYfdIqk+LEXoX9guGN4tYIHx64W9Rgo+AwIYRafbTLysE5zJNVNCkbfjo6XRPvYdVs2skgi+D+JwMjkusrb/RrOcjfdoO/brQEcA/Np9DH8S9gzReecO+qchbhfG3DOFJ3oJY31cpmzbu4WNYdQXxbANHvG0BjOYIUWvT33YlbhaF1nTBie8bP05oUfVp17SEaF/lMQOmUP/iH2S6TyDioPYfi7ymWVS2neEO2tIcjMM0N9HNxFD6D7Ca6M3mrFum+9tbsbYB2bT6ED+Ie+U3xnAawf2rs9T2OuMnmmr+QWC9Fraz3m1mtyLOAyDa2uhurTG3UZd3rd55qyN4KcIP7a+f0I4oJ0rkh3XrWB5Z0Cv5hmcsMMWayoxAhwNP9KzGgTiDApAvd5QXYf1j6w+sIo1h3EfgvFG8edO9cyPK/JIb6f4QQOdRCJ6R9iwW66RRBB1k5MEKLzqRVDIcIEJDI5QUTiPq/8sPZxKirCYNLc5IzN97BMQGbgCl19q19PwUB62+f2aOMBl5T+QN90zkeKzjFRj6tshhb0qku22z1RJLSIeDv8GEpIZHb8b+D18kdGcAg0VenXv2Ze+w2n6iHxV44M4YEc/hvkG/e4vz5XnpaAqSuXRgvxjesqDRVWjt2+/VhFNJTg9u3txe34XxQD9M/ky68HfvNy0jBU9jevMXsu+VWtPgr3EuacM5Qwhbvp/VOqe0K9tXPm3NEkU9OqdwNuRPeRE6mRdwZBz3Z+z70BcPXQWrp6XYz4UaZRu1Hk+LUPkDftRpsfbaq0iztBBRhXfQDcHR34R4NWZuio5/Z+WD+6KVfzN3kFZ30rYc79h8m3rflzDk269SI80kefeYsDaJPrAeo+XAYuCqDN1cdHl4nrUdfiXFx05Gzc+jnTei/DuXpaXJSJmq7ePdps1s1OPAv+wbvzUb0ADfzFo09sPd2JKVmcnerEl7x/WqsrP18W6BzX+/aDLNi9oZ3qO4vX9qjndaQlrmXv9va5WFtEJ4soAB88+tkfgQKQhn+0gGEU9VB8KEktIpT3Rdl70EvlztoCIJWuwCJa82pDOHyNxpt2mLUaHL1279HztvSiQhwsxnEU/0Ccbu5SzNTV40AfqCJHtf7+o05+ek9VJlG3fK01ke6mDbpuyfr7Tqok1QtoH4gR7HhO3KE50Ww9K3FqWOclUiig1kIBcKqHTl5zcsi9VSgQmqFMKmdXzmJkmaF3GBl/wpRo3dcgh+e+h3swMWnx1+o1kRKgqmFQOEHxxPSxUTujfxrm0Ufjllp0L/5uUTSHG7BKfa1ePQ7spiTXBVnhvy1EdbweRXEv2uJaWxBbvLiPuZsXspnw03XBHev/kQjpauiFICqJagDIO5fVJT0txBM0+3oB1o6cRfXJuvgP16VGqpZIffzHoii7umCQXDD0k8prYwmeDwN7wIEdtXAQvQ7YTyxEhiQCKmJWnNA5mAYl/CMra5Eh73yzPj/LLcjwpm+3j6HtxZ5kCaJ47fbaRexGHbvpjzeu43DjaMuN3e6PWxvdB6PoOO5xRH1G3e5z3/8DMLaeIwAAeNqlVNtO20AQHYeQUktAQaiV+kD3rURKnBiQKgJF4qJIiJsgiKK+oMVZ4oXEjuxNDN/Rh1b9gX5Hv4ZP6FOlHq8XhRRaRJtVds+OZ84cz+6YiF5aE2RR9tuhrwZbZNNPg3OUt6YNHqE31geD8zRpfTZ4FPYbgws0mXtr8LhVzn8yeIJej/4w+AXZhTmDpyhfeA9mK/8cuy86S4otmqEbg3M0Zo0ZPEKr1iuD8zRrJQaPwv7N4ALN5p4ZPJ77mHtn8AQtjn43+AXNFKYNnqKxwgJtUEhduqaIJLXIJ0WM5sijItZ5qmIsUVkjF39GmyQo1r4Bdg14SlgCrIJKsGxp7KCWjzG7tAi0jSdcc63hGacmeDqIoo2wex3Jlq/YnFdk89XqUnm+6lbZpohlK2ANT4rAEyW2FXiO/buzu8i2fR6wNY83RQds26A+AvUJndIusERK2uZH4uR0l0vgdahtIzuth23MdWwDSE7XCPKFFu3oEtS07Pt85QFJPQxUPYxags07VVZjg0zljP+R+Hv+x/CNdOFDXSwXWlxaBlIY52DoYQ1RTKl1p6Xua68FFJyORRTLMGCu4y4zpc55T4W+DFCuvussFJ+u52nXpvSEi5PyrFCih4OrwMHt0wXWK+yz01hFnv+9YMN5Lo0XH/K5m6+EjAkypWoYHeq3Sc+kj7kJy+2NYbQHho6+MQ9VNW0NG9b0pOKhuAbQOVACz0jHZx5trJ6uVWxy9YCbOjvTeoSO3sLHjNE+aiL0+w6Yd4YY0mo/fJ+cIWXDeRlU9fU7tDGfYU5tg4pwnXGNDjRW6BJbn4mCnhpVMGKwpWfVhS1Grlhz3da4AuV1KP1T45ce7Hw2t5IkidPhyr/gVw5abrX42NfAxFzCxDNLFleyE6l8dihiEfVFk6VNzPZ4R9xpX8e2j3wZZ88a4blKeCQYDG3piSBGVC9oiogpX7DG1g7b74ogc97JHErsTi86GZmJZbzPZZuftQXTQjirrx0wrmq2r1S3VqnEXiS7KnZi2U4VV/brKNc/1fhvhE/8VP4CpR9o8wB42m2T15IbVRCG/3/XWoXVrnPOOdvSKDuPkrO9zjnMSrPS4NFIHs14bTI2yQQnoIoLqoAqKKjihgzXvARQpOIJ4A1A0mmZG+ZivtPdp7v/6XMGA+g9/9yBhv95uKj7wgAGMQUBDCGIEMKIYBhRjGAUUzEN0zEDMzELszEHczEP87EAC7EIi7EES7EMy7ECK7EKq7EGa7EO67EBG7EJm7EFWxFDvNM7gSRSSCODLHLYhu3YgZ3Yhd3YAx15FFFCGXuxD/txAAdxCIdxBEcxhmM4jhM4iVM4jTM4i3M4jwu4iEu4jCu4CoMDuIePcAdv4Xc8wN94iLv4AN/jQ/yIz/EFB/ET/uQUBjiEX/ArfsPP+INBhvApw4xwmFGOcJRTOQ3vczpncCZncTbncC6+xFf4Ft/ha3yD2/gBn3Ee53MBF3IRF3MJl3IZl3MFV3IVV3MN13Id13MDN3ITN3MLtzLGODUmmGSKaWaYxbvMcRu3cwd3chf+4m7uoc48CyziY5bwiGXu5T7u5wEe5CG8x8M8wqMcwyc8xuO4zxN4G+/wJE/xNM/wLM/xPC/wIi/xMq/wKg2Os8IqTU6wxjotPsFrtNmgwyZbvE6XbXr0eYOTvMlbfJJP8Wk+w2f5HJ/nC7zNO3yRL/FlvsJXeZev8XW+wTd5j/f5gA/5KOg7Viymx3rUEhnFQk6oC/M9JhLZwF6j0TACJ+umZwwdMhrjVWPgrDUwZgVOWLWGETzValt20xkcq1uDY22rm6bFYpowIUwKU8K0MCfUhxqW43umMos9VVo8Vg7tn3CNa57vho0Jy0rHtWxueNK0TLftuUa7HTou4YBhm6162HDd5qRtTnjB3spvRXp0rVrdU8Fqc9JRq/GmJwl+q+qohrm0UATkskKlM65LXO/bumK+ICwqFmLCuLAQVd3H7a66SN/wWyP9ZU/j411dmY+NrlJVp5gKd3ij8/mGPWzetNqe6XiWYYfMRsu71Ta9UM01qlbHGTRts9FhxGl6sgy1/Urdqxter5YWTwhTwnTU6NRzrfa1hiENtXhWmIu23Gar6XpW0zHsgOHUbHVYmiZ1tFTEbtasimEbTjUsy6YbtZxO0bZZ6WYGOjubTrBtNSzbcFVeMiZMhCtNp+b6XfXKo6appWLD5nXfutE5Y6ciXdO6MK+YETuT7wntdPTHO/MY7Rvdl+lFXXPCNm9KrG+omMrPlhRzcaEmlK/MJSMVy610bpvtt8WVHlWuhm97Vsu+JW4ZndwdTZdKulTSkyOdxi3TqVoV//E0dMkqJIPVpvffQRTSQomXRGeprFhWehOxrDAn1IVqTglNEyoVqXyfOaGaeaog/lI50G4ZVTX1dDou1KZUbH9cjKKwJFSSMqWsUJXOlFPCtDAjlH3l/j5dqH4qPaHq6bow37swpXK5KCwJy/8CTlnkRwAAAAABAAH//wAPAAAAAQAAAADMPaLPAAAAAMb5Mk8AAAAA1pgrCg==
d09GRgABAAAAAGZ0AA8AAAAArxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABmWAAAABwAAAAcac8AKk9TLzIAAAHMAAAAUgAAAGBG0lmpY21hcAAAA6AAAAGKAAACWkB+rGJjdnQgAAALVAAAACkAAAA6Ap0PomZwZ20AAAUsAAAFpwAAC5fYFNvwZ2FzcAAAZlAAAAAIAAAACAAAABBnbHlmAAAMkAAAVVsAAJHoBF30C2hlYWQAAAFYAAAANAAAADYRRZkLaGhlYQAAAYwAAAAgAAAAJAgyA6NobXR4AAACIAAAAX0AAAIYUIA+22xvY2EAAAuAAAABDgAAAQ4Vg/CabWF4cAAAAawAAAAgAAAAIAG7Ah1uYW1lAABh7AAAAyoAAAetcx4bc3Bvc3QAAGUYAAABNgAAAZ2TXTPdcHJlcAAACtQAAAB+AAAAipKM/Mp42mNgZGBgAOIXG148i+e3+cogz/wCKMJwbYa2KIz+//Q/G8svpm8MzAwcDEwgUQCbeA5aeNpjYGRgYPr2n40himXe/6f/K1h+MQBFUEAbALXnB9sAAQAAAIYAngAEAAAAAAACACYANgB3AAAAkwFHAAAAAHjaY2BifMy0h4GVgYGpC0gzMPRAaMYHDIaMTAxIoIGB4b0Aw5u3MH5AmmsKgyKDwvv/zAr/LRiimL4x/FJgYOiPYwbqPsK0AqhEgYERAGVfEwsAAHjaLZJLKMRRFMa/e+/slPIqC0lZSNkQRTZ/m7+x0JT3o9AYpFDyWHkNs0ApWxtpWCo2NrJS1my8l5KFhdUoUuN3p5n6zXfPuWfOufe7o181iI/p5OsX3dSWndWVO9cqnLpl7ZmEXs2z0lBlY7old0CuzxxqCF0gVw0zsALd+XUzLEMKdmAO1ny9/y09Vomf0BMXV9TVK3CtrGcU2Aw8Eq/r2G0oME9qtONqIQ7spYKIryXv+nXkSvI6zN6uBl2Fzty8Xuj5ENnWPdoGd/ZGI8wdMInsn42ZYmbHc5RqGiby60mzn/1Cm4jbqQ+pfyduN7XqwY+QGSF7vr6I/Lj5puZDvSapfnwLyYVOaD00sPfpfTAF3ls3oUnWha7MjFE35bLq4P5pe5DNcPcuekb9zMiSLojjJsns3FlNJXsZFD9NHVRR9+MurHxvKPe+cD7va9rV4Kc0kPOoVaPk3lD/ls/oor9r5FBJelz7t+XcX7k3T/H+dfwPEtI/eRJzeQAAAHjaY2BgYGaAYBkGRiDJwBgC5DGC+SyMFkDai8GBgZWBi0GZwZrBliGaIZ6hiqGOYQHDYoYVDBsYdjAcY7jBcJ/hGcMPRkPGYCZzpuNMp5luMd1lnsI8g3k28zzmBcyLmZcxr1QQUZBUkH3///9/oJkKDKpAs+wZYhkScZoVBDTrGNNJphtMd5gnI5m1lHmFgrCChILM+79Awx7/f/T/4f8H/+//v/f/9v9d/3f83/J/7f9l/2f+7/jf9L/mf/Z/4//C/wz+Lvq78O/Uv1P+3P9z58+tPzf+XP9z9c+VP5cfZD1If5Aq0AbxO7UAIxsD3EBGJiDBhK4AGOQsrGwM7BycXNw8vHz8AoJCwiKiYuISklLSMrIMcgzyCopKyiqqauoamlraOrp6+gaGRsYmpmbmFpZW1gw2tnYM9g6OTs4urm7uHp5e3j6+fv4BgUHBIaFh4RFACyIJOzIWGJcMwPAHghiG+AQUuZqkZAQnCohT02rrGpvqGwiYmZJRwJCblx9XyJAJAIE2hWQAAHjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDZJMDJogRibuTkYOSAsUTYwi91pFzMDAyMDJ5DN4bSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzm5WDk0drB+L91A0vvRiagPtYUFwB3WSTLAAB42mNgwADVQGjCYMK0joGBaRvjkf8//tsxiQLZ+/+/h/LNQXwAA9AORwAAAAAAABYAFgAWABYAgADmAawCgAQABDoEeASyBVIFpAXmBhQGRgZ6BuIHYAhuCU4KLgrmC7QMTAzkDZ4N9g5eDp4PYBA4EOgRpBJKEtgTvhSWFWQWUBbSF2YYVBjmGcIadhrkG5Icbh1iHiYe6B+QIBog+CHyIrQjTCOYI+QkJiRQJP4lmiYSJtYnNigWKPIpqCo4KrwrrCwwLP4tmi3qLpQvHC+SMCAwpDFkMdQyujNyNFg1AjVaNVo2SjZ8Ntw3KjhcOQ46CDq0O3w77j0SPiQ+mD7aPx4/UD+MP8pAEkA8QJxA8EFQQbRB8kKEQuhDoEQkRJBFCkXORnpHDEc2R2JHokfcSFhIvkjSSOZI9AAAeNqkvQecHNd5J/jeqxy6qqu6qjrnPN2Tuqe7J08PMINJCETGYACCwJAgSEIQmKMoSqSonChLa8mWLEu2LNmyTK+Wkr32rldykOPaZ/tsWfaeg9Ze3c/npe5+DlpZHNz3qqp7GknBSwyBnq5X1VVf/H/hfY0IaiCEfpPYiEECEl/hWYzIWK1pNI1y08g3PnR3o0Hs1/6+gX8eEfQ8Qvjz5Csojqro8CsMxgivb7w8csepbhRhuAJmrsLV7A3EMGSLxYRoZH+868BZ6CE4iB/qH7DI/s1uIJko5hPVZLUa5HinhhuObQk8ETScz5VLrQmzM487jXnSbDO50hye6LSbdAmPH8iWCXkPIZITJ/wE5spRzDIMJj8arw4nwunSHPlKLs7Lws4bGJYQTuDw86xTFDD899oUHBlPGuV4eQrulaBfxkfIc+QLKILGUbvbHAsThPE6hwkiDwsMz8DNwx1jrKP9sShGlXImFR2PjeuawKEIjoi8VcM5uNl2M4Xp7Qs8/a0DN9vhm7c7gOOpwuxQvtAtTQbUENHOJJ2/u+kdYuWStUkyVt7YbFUlR+QIkbunpVu+idxnecO1BeZleJb70SPoQHd9DrPcOQLPQ9ZFnrCaRBjCMhd0mZCAQoDReFvAHKdvqBghE+1/+OqVB+7ZvvPsyeOHD+5frzpT0VKj1AoG+WQtnINbn8ctjzGd9gxewBO7v1BGwY/HH0EjdrjRXMD+O0kM7+g43IRjOs7r2JrB3kvgtMDne5d2f8MTNeyu6PxakmHecuggb5r8ubuGaq9/HX317HNDgWk+qYo8q5oMvzQXUKaP7p+3BVYKBEViZfW5O+6w7fPn4YSrtv2m57xj9FKfcl/irxw9OlSD/7+UEgXmO5gRQ7bAHD6MGcGCF4eil9W2yZCgJvHqcw9igt/7SB5+DYgGU1qIP4QDhiNiWO7++75H4Zh3HfclUemhw8ALFn322m8xP0/+J5pAK+gsuoLu6V4YqROOZDCrkHWqOzzB/DZwjRMIt40EYIIooO0AFpGsiPI2UlhWOYkUhd2S4Bz20NoqRvdfOn/uyB2rZ9e2Frud9lAllbRMPSALaAJPaD1RBAmjdA87zQYQ1uMJjyil3YMibtHXozhHeQU0DwEnqXwKvG25p3TauCezPR7Dn0Y77C+0LXppeA8fnlyots9zajJlrTzw+CFNlgNBwr7WBJprQVDJCi5UlNLqvIzt0NKQczEvypGAbtoxnsnPyBw+Pj6eHT2umBZ/Z6hyLqVgPVuI2MGYrSkhp+HweGvf9MmVbQNroZWjGm+oEse/BvwxAiLH4xYeJSJJcfL43MwRQ8TJvZySKq6fsvNYenA2s/PPZO/k+soDDoPtB0bmHi1JGD+2NxW+72hMs0KjD6aozrz72qvMc2DT3oE+ile6sRnMsEsSkbl71ogoP3EH4RV2/X6s4LWNl2UwdDOIYTmW4a4iDskiR9mEeEkBRopIEkRpm+qSvoFYlmwhQsAWCgLeApPi4P3xjZdtuMRc/xLf61RZ5rYQxwVvuMjI/+59dKf6ZxPEglHY/h5X8c818P7Nzc1uGqMf/tB73/nIQ1cun906dGBluTvfataHLBO9A78jQKXQEzn4Y4VB/a2+Re+0F3DZM+Xwp9luOK6c0sWucMLhiXKJCpmOe8aEnjqCXUG1rbAveK2JUUzfEXo+AU4vl8reddudeZIv0c9r4zy9Gqy0fG0ol5jVSCap2kxdqKiZL/27nzk4KdoNkSGC3Zk+yDCsxIzukUjJiEXSCVsI6JFC1IxKjWCuQqTpejrNEEzChI3VXv+lfXkV5ziuwJYULpKJphu50pREMKOvmdFmhNckEKb42M5jYHcjEd7AkhLVeU7FmHwhEc41I1G2jpWFA2q29tgTq40D4czROUmRY6qdOTE1CcI6VpKMqYiWDEcrEsPJaj56riTns7xWayvgksimltDGY6Ova66K4dmWxJpMJMFGkpHMeD7OGpoyNarq6QgfVMAyZTONnf8P25zJiAqoUQccPaKO+c/xEfwT4DNsVO4WLEydH6K+j8HU8yHX8WHkujsb2+yt3J3n0qapA8sVZirT4MDk86me/xotbxyfBlcVFPZuSd5nfuKaQDpgG7PI6GrwOwADhO6rZwmgAM6iouIJi0mFpBHuCRPvSQBeigeImDgmJ3/2mZCkBxkhaJfy6iPj1jT/9xpms5c/s9j6DM6fVMGwipwWqtSMT3777NF3nBHhszLXBPwKfHYChbuW6UIYH5/g+xLuHeAJVyjDIFUghyBJrn+iMlcu4VBUE5RtfqZ99r2aZsqBu95QynVE8nWFVS7/vLb9F3f+xAXguiIoJ7/+0bc+8OIpjV7893GDvA0+8w50vGtkwKkcHM4TFpENzCAGEFQYFDoMbprSAWQFAYximAdBbQMUP4W8I8AUOMwgCqLu2+zKayv1oVQiyPJ2LZQr01tsjhBX6DvtcIq0XD3wrL/ueWeqK2FXo1KEEhUerzxCbEpYqmVw6gKo1D9luRR+DkenI4yYCpkqM1QiDE+4rG2EcVMQ04EZjlNusygfooue4vHbiiUNjyhRhRE1JyuAARkq40RuVjDCIZ1nnuU4W6xicutVc5zprTpMXHn58LWPMKfJaVRAo9068IxQGcVADg5xD1NXivBJ+Aej0yDVGB0sFmyrOM7zsRoHvs2TJcAjQACPGlkffljEtTv4nasvvT9s8j/84VKRPk6hgAu2/ZEP4w0iGUpoHRcIluyQyOAPvV/WgwHhPe913T/L7XyNCQY9mT5xbR4n0CcARzY9C03fd22vtgGyZVKz23/L8t/afGVfOcfw4VoHFKrhu+O8p1HtFn318FRlldMOTakCF1KXi3pCThW6lekTYXvuYapUYnMlJgg57x5Oo5/CL2ALBVG6mwgKxBdujE4iT5kRPlTOURkP9RRLA7RFTfPrGfHZZzkpxIpveJYJYJUDryBx+0WAvqxKr/0w/BWF5wugce/5VHrhLfgMpCF4tt1fLQTYXsHgQFAABxiwGC4O9oVRw19IFRmplcvkyXwhpUjp4UK60nHvPw924dOgJyGU6sYZzxZR60Cveh9GioRCOEQvGPaQDOohTopu9mgGILBVRlIDIYZ77ReJ+L+CYLU45jOsYgQkTv7OJhE9nHz52qvkBfJDcKd1tOw9jUUDGDDdAMgI2qLG0aFPdfPbBn06HaNyMRqGG7KwxcENcTkfJFEV61nGMoVJnkMC4wE2rYZdI4bzX8SB0fz0Ha8rS2ur8cra4d8YyRf36vZQiuPSEc2QJ/OR0WHj8wnxqcdOT21g9cSRmfs/cej0mwpDjez4p54sxO14kSfSSOaX/gOl2zPwUAHyQdREd3XlCOhHHeIh4odmCU9VfGse2uA5Al5uC5CBxsIT3v6wxcKTgv2CyzYeLxTKJYGP1qhRnoCH8Ny5Z1UoNrQdBVs9U01duIvrPYq8xlzC+tCYyfEsK+m1kYNtQ7Dx6tpFTpI4YSj2QOmCGRYJS7j2vIY/DrA4yHCcIKpBETNGelHFOrPzlzv/FyGsbJkcaDoxuSQDcSQ8+1Hg5SXg5VX0J1318vYZRhIjGK4FT5+Cpx8BKA4Yh1wFuM0RHhAPwGwJi9tIkjFiJbQNcSPhtmgg5HA9dDXRP4sw8HMF8QzH3OpksMW75/4bTjM4QFTdOEZ3nj12ZH620xofKRdT8VgUROsqvqqAaIVypR4hd10hVdtww8c0cMQ95rlIz32Wc55VHwHE0+pMtPqcgkhrwoNEHt73PJurTu4VNPxqtl60O/vLqbL4QTOYab1jeDylROzCtpOPhiCSEkkkzrFcsNmY5AKaVm7MZA0hoLJS1JEIwfJkqbGUCB9IyaE1g88sWkWRBK1yIKDHVMmBMNTZh0/XsskD8T1xFUff1Sll0xNr4VxSJqygSpmgjAVO606MSZhImSIWA7UAsJqDSJ6Q6tniaDGot+btM/YKFurxsRE+YJFcNKkIUV4yJS2ZjifrE549vHztm+RhkI170Y915RDm+OEBvWhThCtIIvhaeBqGpVwSJCxsIx5Rrt0NvELiFhLFYB9GO8Tl8u1OFOEUXkT9K/ROM2i2A5h8/hyE1odWludnJxqlQiIGTL4X36sMxm0z2Gcy8HcA/rp+3UO6wDWKTvpAuDRKDXh5whUQQL70PYqgaSznYhbX8HoXxZlcZWTqfk7UzgzVmMi2jCft9ItbObvSkdh6OZJOh3lCRMvJTeUjZtAIFUtEIArHFkbNWFpR1O7JKUfWo7LAkDinqpIUxx8tZ5pjs0FczC+EtCsNHpcOjNQX1ji5kVdDtcmkExsSwYKypqLlIxuzSTvEg0/hxRJDeKmQqY45jeVU2ohoigohiJXQQ3Zg2uPf5LV5kgW7tob+766ZwRwzDj63jXmWxwJhfeA0BGxgAAqw3ENAb9eKgcd13S7PC2cgdnE2RC/BAdqdgzMqg2cAuGLx9m3XU0kp3WI9eBzEC3e75/VWf4+FVm8hjaHCGO3pNhujI5VSKqFrqozW8JrkehIXh00A0ykXXTtLdTS0m1/haTaFSgBwFt4QGvSAB+lAgfM0/6JhfCQcDxqRUja/HJLVgGom+D/ZFGNRmbdTfP5T95v88IyF82J+JFlMRagcE56oRiOlBhiRE8tfjtvSYpeIAV4TgkFB1ILcp/CpVEogMVsMv7Dzr1s6xhb/tlA0YX1UxISRmCCncEE8qaYNbMUo/x5z9e+D6Ch6q0fJMcRzPNCGAXnAoDcEjO8VQHGCyFH1gahU9FztGanngX+wU1zvHMVofZXGpOOjhVwyHjIgdjmKj8g+dX1QzA/Gkz2lGcg9uia12fCJrmMPmlG7arf7mS76Hhb2HiQjQ7FsMSrqTracNVTDCY/ErdG0KBkmKx0nPEv0hfXV/SbLCQIhPPPgW4oM0XReqI0evFMIPbuZCgXXFkemUtHECESQvO44ATN+8nR4SAgWZdAU0N3jYFLiMR7CdBveYC4xk5NADfvweiJ+/CGDA8/zAtD7IbB3E2gd/ZdXNMxhmp+laYsClUfEXoL4AUgJForjXE0JUqHvmzZPoYreWiD291hMOZq/aTFGHI+57cGl33sVtZCgFfJkrjA0XAWkEa8hPxvg+yrLz2m5Mq7hgZQC9YAAnl3XJ5R8LtqWA6bU93n4G2mbC3I5sboUCtnicLMx5yRUIyfk5epSZ760RLR87WP3608yI6Ye2SOOZBN5Rw4nHHAwEqvZERb/w9iQRDiOEGmqUtzAfCWRrY5mhpeGpbyQicbqj0TN15+4+13y9mJYfLqUKO5JXQo6+ZQkJk+fTVJdeDvglN8CXVhCF7taHGNGB/gyi3nC+P4ojWichyh44DHhr4DDYyj6pDaEd3ig4nddYfAg+fJQsjhVHA9S+oFLgf8HRBo8fw8oeMJN//RBq2MJQFnGXTxRdjM1fJ4ngnFIVQ5OlUKc5EQZoTUJaDiaZDlZnZwIG3JA5UVrtEMUBt5ksPa548JwthYgSvNnVBa8n2CXI3mJAevAXrqEGcC/thDXpVSUkxhxD6OAWwfbYX595+VcrcCqwfwX/h+DxnMMugL0uh9kuYim0Aba6Cori61iyuDh832CQVyMqDWgaAptId9e3PSuaxLkuZl6JR4t02jZy226EW+55GLYsv/CI4qn152Jcq6U94xECqcxBfLYcvF8ixpn8LqwDH8zUxXsD26vn1MJUfcvimFR4ENPnJxJd1VsmPVKcobozPkwy7GhoSZbFtM7v3568rAMfswenyTBwji+aq3VzNSpB6cm1YS6eCwrhZPWhLN+jxqd55ShQrYa/syUjMlykBNVMZgqFNTazjuPzAyzsiFpoUI5ED9KY5pnQfcvA71aaBV97BUT5KOn+3mBpvoxosrPASKlPokAHAYlxOwZ8JkO29PmgrsUYPXV77b2+1hmsBTX2hjtXZyeHBvJZx0LXFwLt2i9pOPbThfEUPVdwD3Y6scUfaTrx8NUzfEEjSquy1L/QSRTBQXig0Zun6MmBFGst5fKOZmvW3uL49NF4VmsFMrvOBFLTy2Pm3gyGU6NK4FYpBEJVkZC8ucTkeEIA8LJV3PmajzOV7KpSih1ajU7a4Zx5CMp+fLmxbeE+PHxPWERPxxLJ53EpbvsIdl53Yk6pTmNic/hX0Y6SqJDHgXDbC9vFvTKYFyvDHbLI24dLGQEMYqGg0kjCYhQxzrfg/1u1t3zVsx1MfR3EqWq42CZSZRmX7cbT+NYKVFPGwzOJ8szO393XXgN90tzFN79VtFx737j3MBdQYDlxoX0/kwG7vlWRy3/6GbXwKhSjMcs8/Z3Lfh5DT8u8fMa1DYNPsHLU+U9cnihHRRU3mwkY6YkxLPXPcvXKtOHY4UjqzNBSdVr4yMCydN6F3od8xh+O5KRTTND4FowlcrzYAAYchxumNnkMPD3gKIgpNiKbWiwVm7yNGdGb6ZKC1ECt/vyd8M2i9fxmm2/1uy/xAekIdGt+PxV74VHz6/CX/eQr4DGnUDv7cpL4NSi4JJ7EcYI4D2O4dx0HuEYgC0QHAputt1zqG5Wnt+SMM9r1MDXbzoBfkfUTfZO7C23qLWPr69hdOSOtRPrJ7rzo/VSPp1URbSKV+V+REELqO0bU6h22PZQjxts+MzpeVLPvvk5eF/wBmuvejgjhZ9ZYYL8QrVqhsefSBBOxJxsOkFODkVYQYic5AIHYnqIeTcOBwU9VG2N20EhO0p61Vn8y4mwHt1zt4TTmflaYby4ajOcBv6QBoBZkbBBbcLB68NDYZWcwsFk0IlpoYoeloxMdnRnabCAS9BPXPsW8xz5T4AxL6APdeV1LIttuJ3dKE+UZEmUwWdymCNgsQQkQfS2jWTAH0QG2oLYULm2aU6O2QLhNqjof/8n6oMnbnaD586ePB4q56u1cm4op/DJmmu5euQXwHgtYDdL5BG+V7dwUYznf+j7pXLf8rn20Pa4CIdcn1326hpeJW4eM5MPb2crq3Oh6FI2jP/yTS8E8wVGwIJz9M1vevB9IQ5rVmPqs/dZ48pPtoIHxgpDs3m5NXXotJy8a/bQ3TnLIfICwZwEVP2cPZFPZ5uJ5HRDquAvXbgkavVAdOnCwsIfj/HAG1aLVu7ejOY6k0f3H9sWsf382MTZn8uGmTyfObqRKzw+Wz4J/lfm/1UPiJhfv3J3K519Y7fUmC1/GPi1Cs69Cjqzgg6hR7rGGhZ5cKNkLm0SwIg9MJQEZE+wSM4DsrE3BI6hWd4tViJ+tjEJcTZEBf6i645bfghwaP/01NhwMZ9wDF1VIARYwXuoYmRzFAo1Ow0InPMg4tQ+gZvxRN7lBTWylMYh01MRK4XD5gADvPxWqExj9GYH/3VUlitDYGe4P0+nuXYUoqe8s7EWDHMCw7JyaDQGAe9//EVWyShpIgaFJK5WWVkkjFgKn8+fSwdyQxv1U3VTTPE4HWlPtDiDZESazwZbIrPBkMgDPXEHt1lVx4d+ct/OV2iuTOGSDEMNHr7v2anlZ7Fbz2FQF/5aIJ8DHLCEjqDnujLYFAArDNvTiAqi0QQRrtLQlOWF830bH9gQJcKyzCaIskZ14PZL9YGlFpV6B4EHXFudn5lqw0c3h2vRTl6mie12DE/keqW5Zh9egWyD93chKC0Q+pUWfxUG5CrwVtMPzJgJ4JSrObSn4It43/IpSlpeYL/6Z8pLrLoxkQ6wDMOI8kmAqfH1xpr+N3+tsHTBOP4Wf/xoMr22Lh1LKp06/8vZLD61qTT3zPM4gk3iUtgBUInDV1VnfD0UAIqS8IKuq4no4dG0Qmjtna4gY+SJJwD1hLbykZmdD83rzFveAsRntIturuInrr3KvJv8CtqPrnbVBQh2NtYmGUBFPtWLPkICc0Kx0xXXeHB40Ow4lOS3XXeDlZHb5Xp1g0aj8V370qvLz3ONdqOXSfIh1G6sRC152i8H2RZtt6HOolzqtBl2buYDJyfSzrmTx9fGQ4DXGcwSnmMVsOtS6pPnzOjDP+SIQKfWJ7cj+enVPFupsIxid4GMEU0FcA6E/KuNEw9033yseejwSnOWkRges5iwohA+/kaVuXAqPdweO7Z+6G6NTaS5VJqQALtzjYHIimc1v4+FyvAjIMMVtIiOvyK5hQCPjBF2V1g5nrp5t8JC8dXuIX3gkAuwggiNj9SrcL3Seqcp9MQyvyuXftLejSsFN1wqtXxRLOcZYvlZgnme+kYqgfVh1hPB3/0D8dLjaurn3xwd/vdX7wV6eWL3N8LK0r6V+nHrPVOGQ4kAlJGiNwqd+NQDY+0XfiEMgTr8iMR05QzjnW/sfIMQ+9niKbkUiKm2oeTCe7ycGKVNgXwa3Y8+09UNMHi4gQm3DW6vZzvnEM0FcFSEWPi5giSQDYkHJYbYRLwCobggscK2W+DddCmpYFGUTyNZ1mQg5Mz3OB+EAoEh2O5dqH+2JQOtzfvvPX/XqePNlfJEY6gd2aOCA+xMmB2/W4hSMeuZ0Rr23umVRtyEJQgoCK4TtnptYF7pJFej+RffIlD53jXGWZ+HM/gX3o7rw4xCLSspaTFG0BWHlfhoMnVudjo4PaxzsiPqMrOHIaIT5XlOSGQ5klRqyt5VcXM4U3X7o0RZhLPuY4j02m/7RmR8DyYFWibwbC4n8/+Nk+A3eVoqVyX5azrOzxg8J7M7/8zQM6yE5QRw7bM10Aa1XTzHKqAEcLosfZuDqNizJz4vbeDlRfThrg4xAFg3XrjzMJH6vGzfyAteoEy4SmnP95joqYMMbJC2kCRpkpukvs2Jg9yjV+ifZklUUy7effZEq9wpFjbapT3K9by7gXWUcyNcjQiWjpu9ajPlCnEX0PXAunyZFivIDc7Tb/rqcW2M4yXQ2cgu00Qlag0lE3wHp1PhUihlcnIY3l8kvBLMM0KyEEsLOsvi6WnPlY6lHhm6N+QAdXmmxy+OlQxTID12OdOSnbI18Kws88QTWNKWTZ76t51/5aQgpyTsiIKfjC8GdWbAuRqsGpQI8XTvk9e+ybwLbPx59GI3mASzVi07sGwfcK3HsDpiWIFlwGUKAH44gd92k9IgCBTtA3M2APzvZiu+y3KdLrf6y900hnbXneVLxepQu7w/KwNzirthc9snJ4WQt7LtrV5Gue8o2jTHs6uVNBhfoDG54DLY8sApeWHt6kuHbLnCWPdN/MhpQQ5WhUPVm6w+CQXHh6Lis/saGef88fKcxgbUySlPF0dT922bCYGD/1g+n57A8Jjdoen9tj5/LBP6kauTB0SQ38YNriBot4eySWyemn/+ZPPgoVxcbDR2+QKukBNCJscxv0u4XM8u/j34jKcob9oVSwQ0+ci9R/eB4+n54BLAI1lg5PM8TZyB3oDNBcXRAgqYMUHcUkEVNNHL49+8UL9+oSUCP2LAmKfQEw9fvvv8uTOnTz7RKL8t1yhv5nWqODcgHyB4w9MA3m9xXOgdnwf1oMebuwtcn3ODyvTsXCc0AfiIud2C5iBCCjVen9gecYur4+PJ5HNvSibdQywjKfalcmk7FPYPLq+AT3N1aSh2f+nukMF5tg8vPvcmvHj9MdOzize4M9Iryz76GIYf922Ndqj6b3tebVe3dPcs2g7M7uzcfMDTuQkABIeBr9PodFd1RDCbzSLZreJFyK4FvKGyvXtIv1VVexpNva3RejLvVbU9XvUKrR4zwtZ1vKCtMwRU4rra9stA6zupnGOODU08krwU9ug2MbG8MjrG+pR2LlfKF62wu2qiRzXveWlV03tejzzXEY2hlgejqWvfJJ8HGuxBl7tKPQmLJID7PRKk+V42jpLShYgBCha5M8ivS99ihd5fQUvQ3RBGczPNsWo+5mgBtAfvEXp5Oq/W7JZC2m6x2GwNuHKXVLRy7LkFQmtP/a7R9o+mSokQofV6MWyDU06NB8hTs3M+uezJx08m4/QXwJaFWT1jxPYvHtsaS8z8ai4ZGVMAXGOIYblGRcD/HW6/Ty/svxb+cfrZvXi1khlKFEemfRvwu0Cn5yCyNLdPEiQ+WNXA363MwEk9C52SJYGhlV1VIaIIUkNbx/FAou76Bfp1C1w4CbEOfMTTjz78wH2bzdbjc6V7o+UAjfP7DYsuzSzTCQ92ROi45BdjacJ5wqvA69hXYy8hPajmN0DU6w0I2HCw1rS7kV6T2o9Gm/klXmE42RhPyOVzT3yAVDOMLGM5Z50+Eyu49lc281q7hQU7WJBJOEKVmmVFw753/4C+D4DbnvUAbjXGszny05/lIkGd5YEkohTamu6Sz8kCp1pgYxPrd+KdjwN3eDGsM1zPRIMdfuNzIGnBQExmts5RqcemIfZk/lYGBP596wvsiy8yomC5mtDDva4OzKIrXd2mdoAGtW0Mob/P2AxAGgaxzNUBkyDQQIDbBDHXqCLcvEQfWGJRTdDh02bRdKTcKN+XF/nYrez4jXbaK6K4uNWxNdKHpDdY4sdSV+MRl5gLC2Ad5ktHR2WRtWVV4Ag+w0o7vPJd7Cr861qIUOWFNEMY4Cf7mtgHkz0asT8KNLqKnugaQ/QCGRDcfdO0TNTPrHCuCWAxtRIyTS1gtCUJCtPLrOwe12847mZWkoAdz588fmB9eb4z0RgrF6OOrok8uorvV91WLy+B0u6EfEPRj7AcN5HSoKhj13Pd4OpuUAGzRVzA4l2HlCcUmq/ZVRcwxceCLMsp6QlzeVds3/AsozAZiNs+9jHefPJpEvAluOfiWN26e/1OsyfxL37lbRWwQbbDCuQgXuzKMw4PQFIIGEdTyYMgqBaASGxhk9mN3BiFfP07zr/+i6hiRhvgjm+ZevJNInjnt/9kngiAKQEnNTGgzZ3XOFAgbFEt2I3pKHY5jq52jYYBn7IUB4O3Qfdu9PgW52kDDANWiDJOpN2OW0I/HzZ4VB882suGre7b051qj1dzmaitKcCv4/gO+SZ+DbDLCbsMhNDLhY/uW7uiTzvZLOKn9fFNWMVnSjO03Bf/x88l2f92FxHHIyrDw3+MaBxNpw5ooMqC7OzhfpiyKJpkd/7hqSXTwxp5+/DtyM/u7MXP0FQ72BgrTHwVoete+yQDzOBIbSemDkAKN6/w8WuvMufJf0Y2GkFrHlkdBK7Bz8XTgmG/869/QN890Ov9q5SiYVmk/dBcr2NjMH17w6YKv4TYMxP400++16n8zg+F6vJd7eVA7JlTp7/8YiSwd3Q8HRMFTZstRePnJ6PRqPHcY7Mb7/qPKlZbC49PtF73U8PDhPsAF+xM3XOmVSqMFHIlKfN489zd/ZxJx7WPB9HDXY1m/SwsohZQtSdC2V67hOBaP+KiX4knwKutnoW8xRp9YI1rIkMILe3pzsFHzTzeGjKqeXnATO5W8FK4TwzalIJ3Xd2NQaCbZeGF3VYML8dyCiJqGs/9+m/KK4C5if7W89rxY3Ee4j43YmQpGi1v96I+/DVhb7eW6CxFx6MhU9eMnhllZUajQRzmFiZ5OyYdfTBA8OujM5rmhYjUxvUCPZp9+fSDrJiKrk47Yc1wc6ofv7bgyk0LnUQX0I909bOnDq1AYFEzgzRB5pO3KWFWxKLb5QDUZ5CbNhV5gdZ7erswRNHbhbGB/J6h732W3j/L8M9yIchdd25t7l+fnoS7ajXHq+Uhmm4t9nde+MWD1m7y73oJ1WntwBdLpl+g8HZZpHE/lvfjSobyy+ZphEi+KSqsrNdXJHO8QtR67tQb4uEBgY6/7S5Ap0rEuQP8wfJSJHB4OmYaeZ7keUbaW2nHtUAtb45w5A+EYWeIqWZqjCnxjJlNnTHJ9HTFERlh33xzYVD2H/lclTYik7BZ0vFfrh7krCOl4dpbRy1rf1EQ82MNW2LUwr7CzzStnbsmEnZUJ65OQLx+BHTiTvQo+qinEwnMySex0O+6aCCG4zmGv4pkxDEyty3tggdApjwvbCFB0PrVT7f+ffuT9IGTrP5JtBrejSN0/70XzsHNnD1xaHVpcaHTGq4X89W8yjs3aY/jdWfsNgJ6Re8b2kDzfpKFps8Eyy0t3V6/eho4UOQbVLJf+W2biFezWnr0jC53QhWZi2gszzoxlo+l63L8l/RgTu228Dzu697F0nmrp3t/yC3OZgSDZRsHk/mqKgE/rJv0D/TM2ptIN+uLaZ4vzEsvsC0SGAuwBByEXapq5Kra7arDIXBm/4JvrZvPprpBA2B5uZAc0gNhzaL+c/Paq+RXyK+gc+j5rhnHLC4ANDyAOcSsr2FupR/9w/NQpvGI5dGVgbwMtXWueXOjpdsu1HcXukGTjdHJ44vztWouHYuGgugcPkfbG4oNL9kCPwM9nc1O33eSXNlNe7rtDLQHbZfZfmrNzrlpaLhGZ57t+M297t6Xe9tH6uQdZHhSL56cGA+cHhPxHJHCbcLJoZAgMo9PLEvEVAJk34p+Mth4W9oJbE9JOJ7mAoKA2Tir8CC5tFsH/tuXHT4xM2niPFaPtotD58cSVXEcB9ivsqLIc1n+udlRVYyHFY5C9tr9xcb7CkJdIE6UNgteNaqRCFhlntND1v64Dnz4OTCWl8gn0RH0ka5SxYSdSIOLpvaxSt0PrcXT/r2rNBnqKgYAdBeqiP4uAj+g7S8E+sO/LNm+ftl3X0Ehj9tguXdxdnp8rJRPxIIUoR7B+yUX8bhcoaYMNCEEfkdjd3c6uvnpTB+deqUAN5EJQNVNZNIMmcZ64PO3YhLHr6xgScoHlwvjYSttOZLKM3zUYaV1gHy4giusXIAAmHFsVsKM2JgtLesFUcIv8hCQ0aqhJMRfaIy/wQjR1vZ84Z17sIlFPmKPRrImzwNjhb+ggJJTmD+nGJKwEhOajI/Gd16de38uz9AoiwmwPPFyBV8DjPMXYPOOonu76nIMwl9QGwj7fXsX82qlZIvyIEAbmz2iuZjnuoP67kEX9wBBN9aWZtvNoQqASEsR0VF8VNrFP+S7BatC335RUFnOlXO3AJXACt934d+7/FZAy+O3DkRbUwy5HJXeOcKdx5qSyvF9PJncT0NDPruHaw5LsfWTxvkzYT3we1++OZT60/9hqvpJbL3LxM9R0yKI18FI8pu/GD81vw/o+SdAzz8Cei6jlVdEcM+9SpR1fRKxV7+zrk8Z9st1xy6WKsVHY265zjJtgUZBJZcKtIfXp4GXO8i521ncbTnlkoLzvlfo0dR16Pkc/v02Xtq7d4mtR2liVcgcjMf2KBYYZq1hg8XaeSPHqPEkIzO4UqmUAxIjB0e2o+dGJEnAjlIlV/idMzx+4PLlBxgIfgwLqGDSdLnAMq99lIomBnnF03gSC1LQFIFmIKGuo0P/57VX2W8DTZ5E2139wHTdFjiECxki93NSUQmsDOEoIUS4oFdkkmWH1pduOqa7xwy3evT4Y/ffd/6csa9aelui9eQ4rR5xTG/buecae8SiEiOEnTR2N5WWW/lbJVPdjRKwhqf07jnEcD9p5VGcl3GP4BP0gxjvF3y+ky+wnnsMjtwVudMJsxzPVockUZRqE3dCyAXH3RSfIJlb+dw5N5kqFd0FzONzc/xCDICzWHT27wvYjMJyUnBOZn72FVEnkSiR2JD5He8VRx6m9SHfz5EgyAhQ5t6L9967durHazVyQ16QChc9yP/OfZd4g9WCfrsA4EY1JMrMzld3fkeV6DsS/uP/g+F2Dru/UN4tgo3+OPDufej13dBWE2znOx9IM4h59sEQ4M9+lkCkXoJht8BngJVWJE+oZbiKRneyXXdcv+64hSkfX3zzGx69crn8RP34pWr53izlYzHcaA7AE9ps4Xe0dRrexuByn8/NAZUQhgitRzhhi8KWvK81rMvlBezuYXNbf4HZjI5DN+QH/FTtDEhyu9kplTWIWnFlnBMFFXSlHDlx1IwB4TnJmUmBoXns0Yk2U6szisTzwfrF2MWwxdDdjooIJngaFzN7MF8LU/VgMSfyoa3MMSOm8xzmnem0xJKhqUnLerZeo6gK1OZMsXCeCgWEuIIuY34iyoSHnWN7wfBrHrihyUzguy2C7X3zm9/+ToV6cpNac0NQbMroD2Ncza9BqCv2DD3GvMLBY3OAY/Fwd94J73zeRVkh2bdgGL+4xMQakbNufuEPgOd/Bjy/QDtu1mcjcK1xA/znWbybX0iIECjSFIKbD4O40PWncs/jXn9YHzjsZhjiPDp98tCBlX3L3cl2vVpM2yE9gC7wFxS346af/fQSm50ep9vXpdQoNPJ7bQFADYG+ektcTnv62jOQOgFf4eXkaYfKUetS+d5Izq8xtcaNQnNffQg8Kxh2xhi9l7IRdDKVr8th4NUfgVYLWAVd1YzDiTUtzCiibE47oOfveVcshk+7XodjSb/MtPKel36H4SQ2SXhXPy1TfGNiKRj8NqawVnOdhpuWxgXQQfLpn7zvPuzpbNjPX94JPDCBB4voga68AH4sQRtNfOIXEHwY61ZrIcrBV1zPC6cF+k0fbj/O7Zbt9oa4vTjS5EylVMvR/a+4t8+Tp04FFLDtjeroF2oFOgjCrR/GcMvVF9oDweR8/uAUx3/zmxjiT7wTYTlhbDW+vp7kpajNyscIkf75NRAjmXzrnyIxvU7uOB0jHBYVNcrxe8mnAM4AIQECvvZ7cLe8dtcpG1yr4lXJWcwypsXiFI6BKPHHDnABBpgnMX/t5cROXePx35L/iVKo0R1VQNiimEJJeowgumEHvPhJt8WTdVs84UAKpfKlCAdhcBgMeYyGOU0/A0E72XdzVBcD+KknMcc/pzGcOlQrfKBYKoFEAF77Nidz+Bv465hjBJlTQf8+8NovfIDedJJw1MRd+w7c19t79xXELv/B7SFazydwXzRZRLfbuveFevcVyZe8+3Kt2wJum51dDQBIaVEPJMgD98Mo9H6e8+/02/7d4JfI2ku924F73YnsJOFe6W5iEMtj5Asoh4LdANzLKt1Sn4hhtxWU7teEYMLzoP3MTG+zIBzBXyYvwlWZIObZn2Z4UIRHaW+THhJZIlSVME+O3QGin2Zlnn2ISvZjgDshRtJCmC1KNufx7MK1XyWPXftnFKD7j4m7L/s4cQ0FPXqICjRSwbvaNc7bge2SYAGTS1qA+/a3GSXAybwcc8FuRPBydheufYs8gX8NTaA19GLX1DFPHAwxKUR4DfBXrL/PswiBANw3A6pB3H0qfteygIEfZziRuCjWbWnDdPPE1f762yx1Ae/y3unO+Ggpn0lZoYBCh6zsAl7wWNM0G+21UjV8P5T0Q+zd1lqXyAIfKvktm71tRzT8wOLGVmP/C+BIZWYiR01LaCSeLRIciIR5wZCjrCAHzERJCC2WpcnXBQp8KJM2o4aN1cpkjZcr4sn9x44+qmKcpEVxLeYIb32fyum8tenQPtpEIVlVSJ0v4+1yAKfN+eWjOZMrdoTKj1Pa3ge0zYDMVNFe9GBXozvrAeKCAWYHiio0HkB+rODamKDXk8Bjn6T9JfptlrjlxfnZ4VouE3c0FVVxVRgkIw10d629Z52s/gAQ3s+lUiTn9mfRvFVvYzVWN04xbHuMxWJAVkXXphPmQ5rJpNKjQwc3heyT7bOdZIFPuNbYEXklGE40A4ZliSfWTSvy1f9CC1WaV6AGWPbMU/aJjXT6383E8Z0zUYiXZblinKhFI8GAVo4X7zhEJfkeoJuDfxWNoXteKWOW6++0QPCaYy8ht8XmCtCgRw1/379BXCvurqKb2W6/DKy4Uxwq5Vwr3rGc5kDix03o0Z5sP6PnjT+hs6V6Kee/qo9cWFQ5XnWUlR8+cCnACdH3XdL2ZTIj+Ui6lEsmhyKaaTw5VGBn1IAj8Mre+VnD1DPpO5+U4uFqoZF0qglBtxqJ1UVfB58HOemi4+gDXScOEbcBPAduYPr48xieyJeXIcQJrMCxVA97pWh/ekxwQ8TUYfFSTxlvWqzfdrFbxDh8aN/euZnGaH2okAnbqoy6uCvvSpIXUAJ8uEGk/Hy0xfR2jvwAymmGF0+roaG8gCORQSGzF1YDJvPSD6aoichCgFjs+fM9mQMMzerCa1/gzO9DYQm6CHyIgS3Mg+SB90GYRSx2E8Ys2O3tWwpSvlgul3JZGnh2LG87Y9ht8tnF2o1+6kngO34quNmYJ39zeHuFCpGNsbry/gONg+H8e+6ePsiZGwuXU0T5H5loLtVJOqXpyfTTh+bVgM2J6t7E2IXpqQN3Nsb00FzcVmpfdhJ67IJgFMF3vnqtQyLkP6ET6PdeGQev1tObMbqJiOcuyb2NSjzvt+SLbjGSWuYgxTjSGSRJMamXKGp45zFX5f5+pO955nc5Sb/dSd4W/SN3rC7Pz0w0h2ulQibpmLKETuATFOCGPQrajbDbfUvgr9bu4Cxv8sh1itrbpahjezeb6+VJ+qn79kI0HRVYNioLKSwFweNNTnIShBjc9Azr6PVzixlnJBdNp1k+JPAG7TBd7LoL2L1LkaweztQ7cmh0YSSbiGSiEBEUIh/hx06m3o+9OQoAT7D9cHoz4yRzzUQknyRm6KKWl8T+4Te9MnumPquTejnfcH1x61qbTIL8jaNl9E3qLwQSxrxQ9WtMKrCkhlgQQzCBrhvuKzOQ2EWqbvsbcwaENMZQLqbcljk4BSzI1e/zHMr5UWCdgGlneu/c73Ha93OGNXgG3Y6qVMulQiU/nRX5hN9rN9BEnfY9lL8ZtdXbIyM0fe/kz/+gExc8+0IzW/cMjV4tG5Kezt03R/ROUUgFneQ0IInnT35sPGBGMjarp6qzGlGeSUUTcyo7mTZkuZBJJW3bPpJuxMszI415Dic5IxoW//6/48m5Ay1HSIRTEQYwf/2FeKpo83/LGzGeZNKPHKP+aoViKLDfR9BbuxrFrDxt7AbL3fPy1b4h3vX2gtAzJq4d7iOom9bqt1vrQii6E7szMTpcyEWpxT6Cj0jeAJc53A7d0kxTG9zfYb2bOfTNdi+077WXUqq6eZ6nnOTkyZtNdCbHMM2lvQdZedgWTTOmc4IlRCAuCR6fHF3UZ4POnvEoAcUpiHCDf4dPXGebuTe/ibZMlSanlcjkE5N6wIw1IThnRVaaPNmo6JWPd6LhuazIviYZYVdH9l37X/jdQOsA2kD7untnMUcaSbdhDXGE7uq6CqCVMOwVfrdm5Am+WyeimHNspFQwdG98jtAfuNXbgSX090FbPKBhm3ea7YERD771AGK6G35bbbqJdXezNK5EksWozEfTE18Yqg7PSoQZiUTA4onjcVaKgB+zhpaU0PgCkGFkjL4/lmClKCWYRRppJzEkkGQkM/q+XCknippEnl5YsDWJ4c5pHJBFr9xhMOM1IvEEP/MMdo/cqXMuwZYofa797bUO/gTQR0H70HS3M+26AcQQuo/zKvJiBaT3S2eudrollxi3vzhcaRUK/p6H3cFvQn9nqN9SftOwlH52n55D3/Aayc02jo9mounRbDhjcGpqMshhjTWACE5+qlScLcZDpjbOBo93Ypl2WB/JR1OMSps/mCGLuYcll1JjyWhyPPVnmjKdCzAyPKZcmsqE8tGitn/f1G9II3tVIR2K5sdSsbBJEaY9I+H3RHo6OQd0uIJ+tmv1dPIcS2gr8RQop9+f0AFTJUFYfBVJAicJV5BAu4SvDOjprtOnZkyUe3r6Pc7Ub3em6+su3nN26/DBtRU6169UjNLNu1fwFeU2mtvD7ALf6M8DsmhqwT3a8jcTNnplLtBovx1iV6fd9L93grv9sOxPqHnSvkGrPXQ/Nk4MqziRLpZXq1Umkh7KYCFbMWcbrDoWHVaJhAXRAbvJiRYP7FTyCyqjChOrXCphMrYpKbJoiDFrUN9d/M996csBo9i0IsyR8Tk2EclWeU5MBKZG6YCysmiok4Ii8ZlQxRKA2WrkTJghnVE+I+Q0Ax9djSoy48+4O3btW/gs8HcanetqwxCt5uFzpvDgFjeaH6Dwze9MDVwfJtx0XL8uPvjiqeHKusHR5lXfPnLT1xsBXxNuzSqG/21VFI0gzV+wjCxIQCUmu6Jo+Rk9ELeNxZtp/hJeikqhLiuztGxFNfrJEJMMWxHj/hN7abPmAB0ppvXosO/at5g/A8zwNNrorj6ZJxg9epYIHKGTvXiEaZWVg58rMnUaZIsmGYkbPgpbikQEwRD2P/zgpYtbm5Vyq1aqTjZzNJcc8ocY9RTeL5qnSL9CHh50Id+PE9F6+zEhsnItJ31fJ+4wFe/dBTA6/5UCftGQwSCGjFoOsHCKDtBkRmZVZ7mkGVphfHoPdTYmIXLUMZWeuzHA3XR77gbPsgK2K1Yqm2NM59Akn4IYQihG7VSphPETfMiNBkR9uDwqYWZcIJgnFZUk5bQZTnq+qKHKWM1Gyn1v1Cz3vRH5RzVAsjGLJ29/B9aDUWdLeia5p0CcJH3vIz9C9D5vyOeBN6dRtzt3CmzvMQgjXM7QXcdXEQdQib1Ci95ki47Jcp0UvyVid9xEFTgyRBkifR8M+T758APR+/1SoHgbMv8ARH3EyU6dvzU1J29JOeLG/5sQ/ztoiGa6epMm3D3yvUGpK+VajuUjtdD1YyVcRwTPFrZ685to84bnvd5RfuFUVXg+TITIixeCkU/HydMHNqrJGN9hw1K6E4RXeHjvURx6vRrLpbce08gLaiw48+TqXP2ZdGRSx4Vo/ZkM3J9xbZ6cAb6uAmdPdo8tYw6gBBZtmihdB2UTOV68KmGaohGo1Q8OdBj1O8RNZj/tb9i/vrR3stUYK+XTUdMAP7CKV9yJVb0pd+4jaXi3BdBr4XQHQ5POPNtq3yAaftI/DH8xvQFm3pZzcBL4l9ZO5cPZ7mnNrFVxIZ5wWwFT641ZxZJ4xYjMSiFdEfCAWDgZy+LMxYI0uefnzGYp5YbdgVJ8KsjjX2OObezZGM5B3B3B79/tzjQNU/p/iwdnRuO4F3uDYExENLB1Q3x556PtTC/2zjo85fk20HQZaNpAKxS3aJjHQz6uoxlEav7c4MXbrLNBGzFdq22y+yuF8qmw1elHET39CDd8I2XdsNtjdyPyDJ7HIRfd0LxXb94baAbeHh06dIoxX7iXDY2Xw9GSyivLKz65xIz1khmljZecEqvwkZNaOzkWMCpMoJimqbB0KmCfOGjZl96pEJLUOEWWd76x83dkcH+NW7wAnTqP72+UY+WPFUNClubDmCee6NuOYaDHHJrrTgPOJzNlsO0dMCAMNSAswizNscLPFW7QgHimo1gqVJsukLul4XCTqj7MvT5k9rYF9qzD7wdikT6en87L8lRFFEdnh5c0caQQSY9ZuYhlh5lskRMqADp8O3DO1/KZdZHkRb5YTJt2cSIRGY9YWiDPvvUDuhUbMJQYHQdf/nfwrPPo/q6cBtLMgYUk/aQfgViBXAKbyXAA5ximF1b68wEMd2SKt8qd13zbZZtdqTRaLI5m3aSfW/Sa8PLzXivRzTkEt7M03B+h7K7zQO4XU9UzUYaIMbLJ5mqpsdcdLJpDGSeaDCdmLFEWrHzHnlfGfiyTH2mMFKIpdiowKzmcoeAQUSZKtdGVSiiZqcdDiaRcDcqqLAqiohYWoomnBHk0V2ykYlVKm5NAm58mz4Otme1OhQDfTEJcSby5nYhjWAYiRTez7s4G9T2IJwXLlU6kUixWqF6E/KCFbm9q7yalrIHsCK3c2l4mdHdS3m6+xB1Iz98vqLQYOz5smgxXCkcShnmElSSIQEaGmUIWYLYaDNQTPZxPYiN7YpGJlXy+qobxG+gAOg1zaxtsKBFz+LV9/shJTNT3vYVVRV0hgrMg8YD05WB5ny12hgLvegeds+rqw4dARk5BjC1PARw6DkrQm0JZ6ScfBBYL7BW3XMe5aSaepjnPiP2caP3Gpe78b7+8d+NyNyt69PDqcneh06pVUwlDg7DxFD4l92eS9ueaDZrfxsAsrV5S1J155mEmntjw7o0AnSreKHABT3y4Y4mRiKn6qidzgeF9RGWq0wrRM6oyFo0q8RVCEU44gddJQlPlnpZaJTMRm8tL4ciQ+Hzr/S0tkA5XXX2UHd0+IONCWtRClWP1kdicIaY4Bid4wDLxCN75Q6xK0WS06mvvWskM5CVTC+ximSr+dTSLxrrDUxhOpFElhNxuXsnr33ZxZc9BVyqt8pDpFkkn2o3BcUMuTr4V3XpD33q9TC3A2Pil8T2FoCDH1mvR1E9Z+ZAQGkgy2J1SfaSrZe2ZYGC6xjL5GH442ZqoFLrZ1PrFkPJCcd+ZhqHsZhVWh5JjVTt3aj23zMc/bajJiLGLo214vjvRr3eVrVnCswYGAOOn3bKIZXiG5a+6WATgNX1YitPwGeqZDHduvObVyfyFghD0Ots5fKvFse/vqt/nBWk2TR0aqpVb5ULFBYxeAG8NzCy9LeVda3CdtLba/YHWdHzEwI7WHlvIs+OpfNGIxMsTkezeIUsanXzZylliLqYInBASaMI+dKRRAZHVSgq7WI6De2oTkPyKnZwiJJo2goquOGGeGQvghxPt5pGF8+39MTWiqKNvz+7bBMmdsB1fchvrVGzt3N0Ttr0yGU1KylcFkNoo3PE3hIBTyIiqHh7ejCmZtObL6mmwFdvobPd0DnS7iV0bIh7DEmLpbGuwONRVKJhTriBFxIp4BYkIi+gKT+Msd3tO0G1Hlc7IWJIMaf+5s6dOHD3cqlQK+UpryO246exON2yXSzdRlRaPBubne8W43TqIcxNS96sl/lpPGz5iBWIhJRVnCJaUmGNNhljRFEH2WfOuaW2zLpQnhheGixGgT0Sma0XFyTrRVkUXewuDJztq5DCsbI4syNHRSHpkJpgNPnPREk1TUOTEnJtaIlr7gFjny1MjpU4iYpiRABfMBoqnng86RicU9dc0NlRaPpkai1nDicho1NedNuD1X0Ob6A+78iTQej/2dgV7xQfiDqigA35EUbg0YJvdbKY7VpICZP4MuK0Y30tbjw+ehwS6tf57ndht3XTO9db91udtevNs3C9aaE9QM2/qsog28eZA8esWWnOzmV8g88Sff8mTgaZXf8Slx3GasqGZ6tba4U5PYTw7H1qr+mZeyynKWD0n5kVLgRArksAXmfSdy3svJIThfCQdFg1jdtTWaKosJS7uab/vOnUZX+KxpzBnKmDn6/J7swcrEGPFI8LOZelYp9DRzPx4MpwJi9xKesQdntGLWSdBd5LAy7NopbskYgFV3IlbSBQYQXQHZwl0cBZHNzVTOgMgx9iPzdgt6j4BaO15Z7FUskZrWTd07Q1DbHauT6S6VPN3vbpNGlQFvOnKpYFhob0vnWi3hBztYXXBip9w6bS/Uq+ail0oWbxoSpzkJFmGkeOt+1uxjvGcODoiEb4hE9G50IkEg9mEJgUUIRnhRFhI+ORUdbEVa7GMwi/mWhyrBjlqDOwg/lSK4SNRIkd0keFZQFl2Zs+p4fA4IxMjCgSTRHtyP+E5x+RYRi4K8JYsj09V28PhMeJOGwHrzIhGLgzSp6A/JW/Ep1AFNV11IA/RuiJm0VX6Fz7ppmUZjra4HMKoVMik7JChA+UrdOZbMTcAK5yBmamD86gpvXBJsBL1WFDDKhfNFrRkXeEFmyHNbFrULUMOpfT4cOBPLVGI1VQRTJwdq0ohkWO50bhCJFZzyoqbY78IvtAgvwX28wH077tGFyRgHUv4/kvnCYvUXoJtqlfoQzJtUsIUhorwgqFjCpGKsLq9Wy5EkoS2lMBu8vSGcyGg4TmW377FNQbP3OxmMbr37rNbx48eOrBvaW621ayWs6mwrakCh7bxtuamUOdo63mDClyrv+0cgK/XD9fxN5v3vxKl3a8eCbthYs1tWe2PUOzN/6bJvlFM48d8DjS+/cXD/OGpTJBlhiZBgTFbyOAyE24vntTny3mmYoej6WKMDjQLdubTgaSFh+rgTgjbHLZsEuJnRqupEZGRw0mQMfvwaD0xHa+m5YUQH00oAbHBl8cZRvmIBjZNYEoASrgPimvlCa5amD8U0+Lh2Cj4K4dtzEYfPAp2l0hcgeUOHBaHeF0vxxWW49W1mqOIAYUvdsG20CFWBDBmhjxGvogUFKbf0uF+tYMbPuh4f6FQcPMqgwWAzsBrrHUK0fJkKZb/r5OFWKFdihXImfxkNl7o5GO5Sfd/+hl3wWccJL8BTKui5VdMvDtX1HS/yQyfc2Ej/T4zd7oQvTEG0bGiYK1P+uEbgw9tfqF9ppJ172hgjJBfbpkY4bwprLsDafFT5b1ZMZthAmvNtRD/ClhInhN5hQ1GFClox8S6qpKPVjGfSgakwlBFCWY42qhEgRTPZUxNNNwvVLv32jz+CRRCJVTq5hO0gcIFvMxDnv4Cxc54m8XK9kSd3l7RogXqfjTlu3A6Sa6cGxgwj+/mGGEGTH3nvqoWYpKvjwZ4qRINAJRmR0dYmTAWZvSxUKhsqJyaZHFSDxiMwbYJ3TjMufq5BiHtGPkcegG9F/1RN1jCDLs+RjjxMXAI/RbjJSRCRCxSmCMwnHAFqbIkq7RcgWQJXTGwoGNZFeTtIO04ZTfdDLmmEJOFxz8T6HUi/xsuo19/GbdhuYbRe9791re86Y3PPPXIww/cd9eZ06fu2L+yb2F+qjNcK2RjEcsM8OgF/ELI3eFzi01WnXZ8dyQxHScZtnYLb70hR8IN+7jCjLsdqNTfxeWqeLvnUQanHLX8fBBp0al1eCInuF/e0ezglajECXl7f3yvarGsEpuTyU9/OuxwkgTIHCdwPAB/MbIV48FNxBKHGpmsM+UkIEhhbYeV8JIYUFVV5DgxaIzFk0k83t2bjdvxJPimqD8LaSeoMZwCsD2ZfNfKPhnf5eCpA4b0WGY+6H8lA+1Z52kDGRA0xHBS0OQZ2tr8lwwtFwuBLl/MqdKb34yJZs6Z9Hv5xJ1XAXCFcgFHEB59FJOAHcpWVhzC9yYl8QqnOALz+EP4kUc4Mg4G5Myzcf3N7p7MT1z7ReaN5J9RGy2h4+hMF/SP4CNLexgGzDWo5/o4xqsGRv7uL/uGfb69ATz2Ddt8+wODV/dNTw5VvIHBu82Sfp3KHeRAOuWcN5m/3xIQbve/e03H/aGPVrgt4YFB49Q+C8zwEavx9gfffseSEbANCFMdEZQ8nqWVeY7sxeq+1o/dVUyu7tdDaTCrrMNw3CdLezcXu4WMwUtvw+bOW0r7I7mHpiKROM9cvHiRvLD69MKez26tp2wtZhNOFSQ+VyQMy5LFBzPS45ePXNS4lOmUGUZnJfG+fLt5+fxdhdnMT+L1175eEuNPTGxfbmcc+emnn3Gx1rV/Atz8efKf0RPox7vKSJ3weBluvQecJxGPBYG/hGTQevkSANbe2ABaY9zsdXN4Q0Zommu3B2eanop54So9l5MBZ3zfJ292rccffejqhXOr+xYXZqb2ggczFT5aA4fpDW0c7L3xEN0CnibOABIW+DCtTNAWML/64OMVZzcnv5up9jd/9TZzk36LjnvWG/KBQEDSxyK4M8UoEsc/xkiic/cpQnje4FbvVoggzy1QaS8aWpAjRHv96thcIR2KZQxDFUIGJzLBrCzWDV432GJcrwR12dDYwrhqxfLz8Wi5TXv2jlVjllGYx/wLdMeYTLeK2Y3UgXXAcbW6KoUDxqnNIMfrlZCRCsklZfrkRDFTi5g5R+eNeUtQgmIoO5VMJcZCWmIxZERSPCsHl/Xf2vmXkaOVmbgyutpIunp1BLDVIuDrSbQPnUSb3RNBLOI7sCR2xul3xa33cnpgX0HJmbvdyoGX/Zbdjj2Bp7MiDPqtYeurS3tnp1vNsZFKuZink/j1AJrEk6oftrT730lCVafHIdqurRE//uy3PHpxZ5nH/e8gpIc5ai0X6A4gnz9YvOMiu7j6wRionJC1U9rexZHlAK9Gn77YwDw7Ujs0H5QNQ1l+brHDmsVghIzhzy6kCw1Hi7+lZL729ZlKK6IrZpAZ2jPcMURxemF5ea0tBxnOCCeTubRuxmLNElGyUak2Oq8ZIU6Ul3J8wgyk8cVGMN7Oc7gS/laukJmub8zZ+frkUo7SdfXa28njZALougp0fU8XbCUDas4yaQx/rYcxXvG2SdKZywR5X5Xaawy54cv/ov4S4raSbA8u6KZuPAaXP+mvYAGuuGOb7zg4Oz06DBAemMH3vrBPx9cVqXTcKyIDfXdn1PamJTbD9Behb+SSuNECNpDdKgXoDdkUneG6XMeBly4HzWpZxVvUlLnZUakCnnhMyCmLx4LmcJ5urMAnMP+2aDKXmEmGVUATj733VdOIxNP1WsggE6bIT7aV+pGQ8LofCZAAi68yKkByllzGcmU9HT0yr+SkpkwCtBb9Osx/xtCSx5bWxBQA9g9c2PkaQ0RBCx850C0abk7gf+F3u/WLRnd0BDOooNMocx15I/WvutsMyJVeWc8g+zutXCbiZN0vXPvf6sF57w/aeIM/8W/ptiHolWuvsp8C+/0AILE/7gbnscrfhQX5UgoxSn8H/CFEU/syTTjT+cZ0SLWCiHIVKRh+roCeI0K/skhV3TYcd4aBm8H3NqfQdjltAwUCu9vjf8Ar6v0r6v0rWv0rumUR5w1PP3gFwqozJ46tVRpDucmZVkOjScQRXMP+gMGbR0P2vrPD/8JJL+GVcr83aRebUTEdYWqEF7w4fx7fMMPQHY7gx/WecPtmi/ksSRXiY1m66x0vrsaWqqnKwATJe8AW/cHLI+PLyWd/iDPmZl6+XEi3R2s/+SVOID4cYwmr2+PFijDtFOvjjpXWOaXeH3LI/2V9lA+SYwurOWMuAxDS1EfrHIvTkQB+U2qvYTCYCzRKZ/vTJcV/VNydgbz03FNmOHH/mc37REEAioI8eCgskkkmSpZE7nwv3EBo1hAIK3nzD3klg+eKURxYOfLW5YWHhqPFWvZLL8cyrk+4cO0fwCf8PhpFy+gYrnVlC8sSwVwfCswiClHoN13JiOVldhs42q/4QTjZe0krzoqX3rrpG02nb3kN5F9icFvBra7QcHulbryCgABmnPvuF0JuXq53JkGiRMTtG69wy/NoUjuJ0eGD66sLc81GtVIqZNNhOxQUeTSKRz0vV96dxeHlkVxP14cied4e9HNFKzwwBKVnW4sTfgtV2LWs5I57JoCnS+c3ThD9of+/uSuPjaM64/O9N/fOzK5nZ0/v7V3v2l7be3nXV2wnTmiwHULuxCRN4hjCETVNc0AaNQGVggKlqoSoKBJULVDRQ5VoBKgV9KCCqlL5q6paCv2HtlSiB0IqVUGN6fdm9vIFrVSptZTDM7P75n3fe9/9ft++UMA40jt3YiEqal2X0qUBDR3supJbUku5pOky/V7Qe7KJoBXE2fkTYZ95fZwP6FtznRl5A8rFsflZr7X4kE+CzSMb3WZncAbF60hsR0O/Ha0ISTOQ2be9yxL6Up3T2wv5Pwcjgn9BB0Putm3FP3xQhUu2PB2aKoU86OhVbdDpZi64XrvkaR4SCdO5UiHfk6uZ7GgUAzGux9ycCGbDlPZFwJDaW0E0qmyrdoNQUFlGry/ayOiBO1HoL5Rm2LIXZEWXirz3+KSk940OpIKJAM2H6CI607fbqbwJu2hPlaLDiVg1jxa2ophWIlXtfFkZ+pgMuUy8HPFHou4tEnzR0Ng8/x/OWUEM3iEHyb34DqEpv8IU1QzUtT65pT9ToTY9nRxpHEpNfGMUiLSeJs52QyyKLhbhRwfJxo2iKhBVNIxcPqtKLJ1zB0qyvVKGkniwMyLRNH5OknwBSxAI3U3rtV3vkhS5QI5xHi49lXTB8naTB1gpP7Dzbx7OM8QOfYETzmo5tUANlyg8/TQrWkBhkpIUV5KyKgQ+aZ+2Y192Dt4lR8gL6K3lrqgNd+5ZFtL14c61/+NmDpvdMArQebSaOHwrmoqQfCAaE75gCAzSWpcJ+azkJy/EA2kvv02ihFq6iP7yBdHO+UMe3oW3cNwo58inZzhnRPYvG/BKCtiUKjZtScBiheCU1SeIXQ558wNRn1vujrN8DVUoClpgIcXTvEbOhApudeMYMF8PnT2ZUllg0bH9vGGPnYB/ks/gGkuynrzEBh2ox6QIT+zhgYuEvR2qxCUhKdhTbptx61RHWxaHLIYE8+i45DvUpROqeAwFRrs3FYIuXiHPmtRd26nB1nDSVLyKrNIOIZ7t9cd00ebze8QPj5HncODwVMDOVJ1mHjPgaygya/1BV1cpi7AhnhlIUyWRzcdk4k/GMkUXpGOpEstdE8KRBPnr/yD+RsL/lfgbuMgQuYQ8ynF9U7lWuNyJkrN3d5O51bFy+O/GyskQC5b36usGywkE4X1yF/kR5+Wy3CaHwDrD9IPTpL6HHOXZdtHNVKLL5vOnWOz1lgMHns3lWkRehipfa/Wla78GR/0pf8orH+cpL8WYWTL9zKor5KvxWCDolQ8CeFH20tulFb/XcR//QZ7ipjnxStmAwoeDiTvJX4YkwODprDZYwWUIum1I4fB+E3Sa8IAmtWdDFS7DGbuQygye7es93oC7XQ8GnFo9oYQ7IvHoYF19HVZiANZ776AhdYT8lAtyCU5+Jh42KCn0gYMziwvBZNAnyYSdTeJqVS8pMnVfIrcJgiFFUPqSb4BKlu5e+hxz6+Dvgmv0xmt2P/LzV8jLKDlk/uo+IiFJUZ0J5CuicvXH8MihT75S7wnxtQ/eppfID7kAV+YWOPW5ays9ERfQgsPNVhlmszW7UGmluJa3ycN7TNSUa2iPtgcobfpPsp7Koq8dTKcMv9y8e/5SrNPq/eMTt9wXUAXfzC54ZNOUqE2Mbx/sSIownivNTodCPaGwLi69nKIPAkObC5uikiOiTzFFXYRl1yzyZHh6Ymjr5KYHf7B/e1cBbd2LR04+dO0eCTLFk70XB5XoYi5cMuOV2a27MqpXVHiQiEbZiWn6OPJL7hCXX3H0OHkb+bMJ19mIiOssU1q2dOoHt0skWxHrXUNakK2tVrhgry/kZxx8ZfKaJRFU7gfTqQXLRwWtpxc64dTwsFoKMXxJz/WVCZeX59Vg3MR3vBlfNNKpkoBL7Zro4KNEbYFA3E/JS4vHBI8DG+nEWoGdfD8rUqLySy8++ii1eb0f/5olj+Nu38Xdiby+YfdYLuRhvK5UNzDA2EYfGnEF3lFj+0q24HQOozkq24E2ZeaDNdYADwjYCjxQx/hhC9c5wmMXC+AVX9nf8siqZfKGwuu//ZmM3qxGZB6dnDLbeyEI8arpFkTe7zPu0+g99zLcBSuk91BR8VgeQvCKoAT9VCY9RAgdDtQIUZbeWHqDd6WJIOuKDeOPmvhXP+lAiaGylhVoGisSvKn2CjL+RkwxowmE8C7hWyxYgMbF3mtZA8XXqYHP6x0ojnT6JA6rouMGuini9/JPUgnSJv0+C57igvmuhG8u+lIelbXEUK0E1fABhtdn4y6+hfIJ/dcr2TXlUwNG2pZI64N6s4991EPtHQ7+1GhOAOzimsjdl+HOu1bdXVuY1XFk2wXYcozuNKx307EFDyMdTtg4SSinOaQDrHCy7fyHs9CITyo3cxz18pLWMmICkMlwdpd+vJm7wHcojSY/sWdmhtBHv0xPnY/M9PXGJEHwa2jM7WM5it8svcq7iAwbpfkdLrBtyu80MxA+d2i8LPL3XRbRoL54AaUmL/dk5yx0f3ii/oW3OS2gA8HJT33JRzIO3gP3O5zXN1F27sZ5bYqzeTXAErualqWDum8FfO1FYl2DpFV1Q9ywrjLyVuHXucFrNF7lwyFJ9+8dQNczKh5zU6U4MTVd2eIS1ECIpyAag5OFfBhcXqWroZ/uGOg/y3L8yNLJiTkdfjE2mnbx6JtLWqR/Izr/5r2Q8puHi6WpalIXWSNelyEak6M38fm5xAMrdRUUNqAM+TbOeQR5eRAtmntQhlw4u3DouijKkAxTr/WcB5OGq0G/2qCR7fOtdWy7JgwoqytsX9wMFsb5dK3E4mVdKaRcQ+kEWJFr1jn631YoDsfDsnrdMV0wYg8f0kDXRkfqILO+2sXEqVDQRrSfmNTYvHip0nWInRLYkt98TNIMh3DyYOz2c505ZwtN3gixGHPDRFop6bJuZn5v2+PoaLkNEDzFAV1CdXUzXlLG8x1GOD6+TQGxMrAa+b6idbKIi2DEN0s5qfcaK+WqFHloL6yu77THzn+aDaGXK4lg1G0q77C8z/nREV4v1yIBSwvh2nsV+fAY8uEOXHs1tqeSbeLCBkzqbgBADjX6V/rqYaqhqln5MNaUW83bq+VWgZfTiamNS7aGA6WxxEDXjZM5U5F0UxHcA2O0G1StIsPCGX4FC2yY62IgjNPS+OsTVAwVRGSUIgp+xTJSe6aPqQ1umMFz+0/WJQ0tlYg5k+5PdEetIOE1S2GdcYbDmeHITIhZ4ZdXg7m9dMOt7DBH/3l3xwGVlexqbonIVvVCbVCDFv2lBt7yGaTrPO7pm5CuRY3t6ZTtICw7OlWttSqu7cVYcvJC2UbxW6D9cFG11szqtiOwLk8jkS07T/RRA4XR4bmgIKig8L6QiMqJFrs1MRhRlb2nv3fqAQ9fiW4rursS/TLqMp8iMO2Y7UbiOJ/jvTM9gahKyf1HHlzwLlrzIybueF5wiU8IMmty7xKzosmaoEppb20il8jcuve2Hds8/pltAzsqZg/a9IKsDaDkE3Rx736BrXVekIi5+fPbylvG3eETDMsFvb5zkP83sFxgPSwXyC8DcwHuLu49/uv/wXc6+mAS+IfxO68uXb26xreyT74Iu+B+9MXCXG4q4wOOhOz2CHZzHA6azpjpkSUuDGG+ESNoGEF1vsXtRmRVyMfS+bickItjvcOaKOmUqkdjfvhbKpaqMJS86dk9oznVLcmyNH2DgkO8BjvhCRzfx/x1y25XhRY/Od3szmN77G5DEhhmNN90lsuNMzQpu4hMhNFYerw3lR7Ljeqalw1KrFS0b5gMZnHIHsXvsQe0/Ym3YRe5gmPGuUl2HmU4iANO9MVcPJu5hKKMZX5w8qwqA2efTAA3VM5lE5PJSZ8X6RCHuLycDtnKclLYxEh+xH2YrxOrn4ep7jq5iHEw6gdj3TsNSnpGiUxmD1SzjJi4DdSpeeVDbtnzfh52kjtx3kGuyFWnyoUAYeTGWSK97WkjxZmcRZKHQ8DhjGOhYrhoEz8IQXkt4jODl9G/vN4N6GSM6UrjPJAx9iTeXHWlzqtCdvbAEPKqOaG1Ljo8ZAb73dwialwJfUKBsa7QVxwq+5L4Z5E8v8h+nOdw16zxXJk95/ywpc5+Fu3nxCvA9EXRuc/9C9k0UogAeNqtVFFPE0EQnivQ6CkEE/DBF+fFBEx77RVeqIaIkCYVhEAJISbGrO3CHVzvmrulxRcf/A0+GB/8Qf4I45u/wsRv9xahAiJqN739dnbmm9mZ2SWiu84EOZT/1uijxQ659N3iAt1y2OIReuAcWzxK085ni8fofuFEp0jThcjicac8+sXiCbpXfGrxJLnFzOI7wO/B7IzexOqD8aKxQ1P0zeIC4rxh8Qg9c0oWj9JD55PFY7TofLW4SA8LTyweL7wovLN4guaLty2epKniS4vvAL+lZUqoR28opZD2KSBFTDPUplnMNapiLFDZIB9/phWSlBndGKsWNENIYsySSpA0DfaQy6uYfZoHWsWOMFxL2BPUAU8XVrSc9N6k4X6geKY9y7VqdaFcq/pVXpFZuB9zqx3KuC1L3Izbnvursj/Pq4GIeaktOrILtlVQb4N6l17Rc+AQLmlVbMvdV89FCPwU0Ubwrk+goBBBpQ1xEnW4qUQUYtGAToxdPac4kzQn8Uxe6uYs552UfzIP8TaSWDWSdF9yzatynU9DKWuXJx6vwXgJww6sU1OxxGTZR7w+PQJSGHuwP8KcoAqhOZuuUd9ozaFStCPTLExi9j3/ESu1J45UEoQx8tz3vbnZ/xHh9TqwdI0e1DyPaWCGh64S4A7oAPMx1nkNF+HnX3t12M+h1RJDOmf9leBxAE86GqYtcxpdpT6+ugNP+oxpHQxd02cX5VnfMhdSXbtsyK4FtAc0gGZq7HONvBI6V5n1dQTcMd7ZxCONdRPvItMGciLNeU+Z14YYdLYv7jBvKLJhv4yo+uYMEb6v8dWy04wI43GJNg1WuFuuqYlCPHWqYGRg07XqQZbBV2a4TnJcQeQNRHrZG1K68BHhmceDwcDrChUciGMPl3Nx9qqHxdocQiRySW5XcgehCnhLZjLtyw7r687roivPXHTPdbeDMMv3WsmeGohUMgS4FTLOYHUUd2TKKpDcaq7xRk/GufJarlDiM7fTy8msLYu+CCPxOpJsAhHcWNpkoepuoFSvXqlk7TTsqczLwkhHXNloIF1/lePfEf7xq3vuzbWPww+8CIHhAAB42m3NyS5DARjF8f9329tStOaZiHlWNdQcLW3NitZscYXoTRQJnqAhsRGeADtLs0dBTPEkVHXpJCe/1clBIZbvCA7+y2G0goIBIyomEkjEQhLJpGDFRipppJNBJllkk0MueeRTQCFFFFNCKWWUU0ElVVRTQy111NNAI03YaY6+ttBKG+046aCTLrrpoZc++nHhZhAPXnwMMcwIo4wxzgST+JlimhkCBJlljnkWWGSJZVbQROGAYyJ8cMIpR5xzwRNXXIuBZ77EKKqYeOWNd174FDOXkiCJYpEkSZYUsYqNM2645YFH7riXVEmTdPP+lm63u+wxHS3OPwc647riulWfFg5raiC0vqeZxrTw6pqmzOuKX1dn9I2wZg7u7Oqb21sGf0g3+Hf135nH6x2M64nr/QGt0UfFAAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKws=
d09GRgABAAAAAGpAAA8AAAAAu1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABqJAAAABwAAAAcac8AK09TLzIAAAHMAAAAUwAAAGBFqVk4Y21hcAAAA5wAAAGPAAACYqCnbeFjdnQgAAALVAAAACsAAAA6AkoPZmZwZ20AAAUsAAAFpwAAC5fYFNvwZ2FzcAAAahwAAAAIAAAACAAAABBnbHlmAAAMkAAAWTMAAJ5MKnWRjGhlYWQAAAFYAAAAMwAAADYQqZkFaGhlYQAAAYwAAAAgAAAAJAePAv1obXR4AAACIAAAAXkAAAIcI+Q6cGxvY2EAAAuAAAABEAAAARALxTJWbWF4cAAAAawAAAAgAAAAIAG0AlduYW1lAABlxAAAAxsAAAduSit+nHBvc3QAAGjgAAABPAAAAafZ2kROcHJlcAAACtQAAAB+AAAAipKM/Mp42mNgZGBgAGLhkN798fw2XxnkmV8ARRiuzdAWg9H/H/xnY0lhesfAxMABxEAAAEavDAUAeNpjYGRgYHr3n40hivnf/wf/C1lSGIAiKKAdALIOB5EAAQAAAIcAnwAEAAAAAAACACgAOAB3AAAAiQF+AAAAAHjaY2BiXMo4gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjAwMii8/8+s8N+CIYrpHcMvBQaG/jhmoO6dTKuBShQYGAE5wxJwAHjaLZJPKERRFMa/e59YWfizUTa2kvKmxp+S1ShmSKJRLJQZCtkMZSeyUFIsRjMrZWFjY2FpIWL1xGbK7GyYbCyMUhae331m6jffO+d+75x7z336kS9+Zoy/HzSmFWt14fnKwZENtUWuZIo6hCYT6pbcPrmEWdSU85NrhbUaKZiHbliGTdiDBViJ/DENU2O9VqtgKxqw1+q3gY5tVX32THF7oLhXT1xR3OyoxzZq3DPkc+S38ZPn3Tze3kjLqK9RapyzdgMPHqA+3NusJug7YmLhpwlNHb1nIWsCrcJS7Zm9he+o23sCf5L4hThhpDTzSNIjyZrz15PPmjPiImdOKW3beA7wFNAnDZi3aC2O99vNlv3P/Pc2ffjmvBznCLVr28IP9j2Nb9D19Mo6Jc6YFL3//S2svaKT0AHN+L68IfPsahM3RHPxo7nm7SV1C8zCzSjQBLkSeoI+RnU5u/erDWrcubvlvqvuzm27Ou0V30AX30JG+gN4uZQgAAAAeNpjYGBgZoBgGQZGIMnAGAPkMYL5LIwOQNqHwYGBlYGHQZnBmsGWIZohnqGKoY5hAcNihhUMGxh2MBxjuMFwn+EZww9GQ8ZgJnOm40ynmW4x3WWewjyDeTbzPOYFzIuZlzGvVBBRkFSQVeR/////f6CpCgyqQNPsGWIZEnGaFgQ07RjTSaYbTHeYJyOZtpR5hYKwgoSCDNC0v0DjHv9/9P/h/wf/7/+/9//2/13/d/zf8n/t/2X/Z/7v+N/0v+Z/9n/j/8L/DP4u+rvw79S/U/7c/3Pnz60/N/5c/3P1z5U/lx9kPUh/kHq/RKAdEgLUA4xsDHAjGZmABBO6AmDQs7CyMbBzcHJx8/Dy8QsICgmLiIqJS0hKScvIMsgxyCsoKimrqKqpa2hqaevo6ukbGBoZm5iamVtYWlkz2NjaMdg7ODo5u7i6uXt4enn7+Pr5BwQGBYeEhoVHAC2IJOzIWGCcMgBjAQhiGOITUORqkpIRnCggTk2rrWtsqm8gYGZKRgFDbl5+XCFDJgBPLIcsAHjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDZJMDJogRibuTkYOSAsUTYwi91pFzMDAyMDJ5DN4bSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzm5WDk0drB+L91A0vvRiagPtYUFwB3WSTLAAB42mNgwAAhQKjKoMq0moGBaRvjrv/f/tsxiQLZB/+/AvO//jcG8QHyBg24AAAAABYAFgAWABYAegDkAagCjAPqBCwEZgSsBT4FuAYIBjYGZgaYByYHqgjyCh4K6AvMDLYNog5oD1gPthAsEGoRLhJCEvITxBR8FRYV+hbcF9YY9hmIGjQbShvmHModnB4mHu4f/CEwIggiqCN8JColNiZIJxwnxCgEKEIofiiuKWIp8ipuK1IrxCy6La4uZi7yL5YwdDDsMbwyXjKqM1oz7jR6NRY1qDZgNs43jDhkOUY56jpCOkI7NjuAO9Y8Ij18PlA/cEAwQNJBSkLEQ7BEPER4RK5E4kUaRUBFgkW4Rg5GeEbCRyJHWEfiSFZJFkmsShhKnktkTCBMpkzWTQRNQE2CTeROTk7wTwRPGE8meNqcvQmYJNlVHnqXiBtrRkRmRkbu+1a51JaZlbVXZa/VVdX7Xl29zVTPrulpjTRaZ7SMNBKakUAYIRAYwcMGS+h9lnimZbN8PBB+tuGBzW6MEWB/+GMRFs+A2Mx0v3NvZGZl9TIj0Eij7oxzIzPO+p9zzz2BCGohhP4DiSCKFKTeZhJGZKrRDraD1Xaw2Pr0jVaLRF7/Wgv/KCLoGYTwi+QXkYty6GpPlzBGMUwo2dj8UvHkxV4CYbgNprfgJiiyiSgl2zImxCJHk70ofIjR83AZPz+84pKjW72wF8EolYjkvJyuIhe7jLkN3PLSWGEKKxY6odnu7Appd2mhMrOC2y0v4jK8EUkf3aDEjaxTPUlVRtTPRVK0loqmJ8gvxjzjv/93ykL4p5W4hSkhr3eSsXQt6SUmEDzHl/B7SYJ8GaXRIir3CjKRKDzZNsUY2+hoNoNRuZhZzC4qMkrjtPg58NWdbpv/KJf/Kv67Kh34Xd0Z+HP7Da9iNZpsZqNpEtkXjzEiOYFDaVOi5u0Hf0yW416mWUxonnHpSDooBXV9bjPNMGEP+xzxZ3rb3RW6BM/0LHoBrfUOMokQx1IoiBPfsFWCAgbRdKQ9ImNK7U0T63pIP/rczbe99eYLz73wlqd3HrlwfnN9dWl/uFpMhGdaoSBLN2Y7s214hmKhCs83213Eq5g/peIqFrFx2/9bxFVcG0fbnqsUFRaBT6LwRws3sGLJNuasgMUdkOAqLu75CP5erZTFotnu25wvViqPPU5Nk7711vFTTFNNvN8pRLH2w/A3FW64uXH8uCWoTsVlxuTkpedOaCHbNlRKBIFP/kN7P4RVx2z81R+qVOC/n9H1Y0cxkQMmI9//g8zW6IdzhydICP7MF9BPfyfWXU6CJRYCW/j+UDmT9hxZ9i/3ifd++OlPY+UnYMmxoyAHCX373f9AT5CvowV0Cj2G3o1u9B6hmKEkfCvZkEyCEJMR20EyIopMdsDqqKrQnQBWkW6o+g4yMDYuIMPA2xr8CZ84cxqjF9725BPbW6cfO/PY5sbyUqc1OV7Mx6MBAy3gBcu3FrCJCFOx0mduV8Uz/M+TOOL6ClmdwPD5Cp7tChG1W1w/Z7typ1jwdRaUN+rNtjjFbNe/o1jHdVusiwIpK1rCLCOufwO6qAQwufOjd24TiakBQnESe/r0VHvRHps8pNgOK4xh5UQ3Go/FnO7VmLKzPyCxO+9uMpqOuW7I0gK6rWr7QwRb9fq+Vi6/kNI6VTmIG0caRMZuJWBaTtGQKqUx8nVDA/fB7rx450NECqiEyXgN78dSMKmGThy/5hGiH+w4bPOVhGVHDmNr3cbkveexXs2dOpRRS5aGmaKtvujc+du17sbHq/G1VL73QlV2cPqli1hu5rPzvfwSsQ8eB3t6/90/oQXwde9Fr+KVXmQtZlFJTmEmncYau8aIokt9t7eIJJnJEruFmIk1nWlcqLpyASxOR0jV0Q4Cv7KJZJlug+cDx6iqZBsR4oFf3PxSE24xP7wFRbJE5Z03uVX/BnFxg0m4Qfebv4GKiEqu8ftgcMvLw4UaM5lmjtwAmToz33j91tZWL/fSiy9/4MVXX3r1Pe96/tYTj129fOHcxvrK0ly3XIxGChaLNMCjF0H5uLqtgAvpFPvuMgqaaWPuQCwMn/lOZhVXdtUUVNAn5s5nZgIXuKJa8M3d/mWhoAWujn2FnumAnvsa3eYk5RZ8xP+exhkc8cjzpWS+KpXi881ZlxEzWIgWKU0flyaJ9+PftfHWbMbymppCrFsHdW16PpcNRpMhBlZe6E45wSAFd1ugqVgyV8gWqiXJC1w+vr/7nqbtyCGiTE0q4FryQe/OV2NJN5PxMHFwM1YgteJ4JV7JzFYN7FnRfMEwdg7RtUPJ0Mf/+ezk+FymfqBrFqMx48LHDLKvVZmKBN2MTJRkcSJTPGQkNc3GeiVZr6STZ6ZzR9bC45+cHm+WjHSpWPDiYWc662Y8CKcSKYALgij7G/i9+N0ivpV6+QTEXbwRwmiNYB7lkAhyGPnBjb5pcMPNfpwKzecyEpUs8744dWJtLExFPEpofjzC6JN3GXi8r8NviPZc/sHzBMLrU3AtjVLzFNQiKhwS14p2K9N3U0KSURBs8X9NtEOtj6wfNME7ei+snQiRVE5y/27iM5eObf3F5y9MYEmW3Kc/91M/Gyscf6Ylyyp8RfAuwx+B7yygTC8ZEs8Nn+Ln+YM/RVA8igogPnjiaGH43aAeFVCZ6gyEo9YiHv6Qov+9J4PwvZhgWZZkU/ykg+t/N/jur8Ty8N1YgmemWPyyv/wX56Z9Gfwc7pEj8FtOo+nexLG1/XFNJmgfxyIbAHeOAHQi6HmJoycOh546fHB1aXoqlwnJwJmwkEbby2Lf8c62um0v6oKx7BoGtxkGrAJmceupgvlEFO6bhThnuQxnfHur8Gt/lnTgd8r1BlN0WVEh3ID7iZtmJrNKGdMdT3mJYHOsLck4aalUGqsHgM4Mylqg9RJTEoTI3vzhWLojyeRJO4lxrZ6vLXuKCo/gysdKZdetYeoYnkEXsRbLSHLAjhIyVqMbi55iWtpnTtOUIWmBRM4O5iRF8Oi1u/+e/C8yjmronZtf0sGNZQCtkOcZlpH8NkBjQHOBgzJ0WYDHk+DsPKDyhgTwsYzRDXCFYY4x32Q5OCsLvreGap2u26koLN6QueqvCv4JgDM7cCxMgQDHgQzwU3EJmME7VCOff+UVGgjQV18tFCgEIGOVfvgVyTSlVz+GD2J53lTZyx8iDNDcx75F1kyF3NWI+KtE7nxD0sUzH7q7gv4IcEEOLfvhI0iFKsAzWJugsSHulXc/c/ufbfUCGBQYAHIO5yRQ4dmWUFThOYeqXFAG/rLV/bEOcVftCpNsI5SohSVCbTOaLMWx/u4DIfPqWqjoUpBHdmrJBGwS81JjjHPpLPoxfA79b+SgbC9FBBPPcctF2/zXn4BncJDT5fZbFmzylU/8AnxcMQlJXnmrJDGm/G+FSlMU4CZEk1hc4ashf0B/CM9uomn/2U3Eb8zN00Lw2Lt/dRE8sYGRClEIm9xk2/5j+sL5p5GUnchH0uPJaCiaSXrphuCtCz7nKbC5MPc5/LdDqgGWD/8Lo3Cd/2YOaxQ3wpCPbGa7aLZLzsJD4Nd/XWIaqDxoUFOSyNdNFW5A/34fgEjZpPT/ZioSOPvm3a+RFvkM8tAk+sjml1JcH8GA0TZPegKbIDLhYj3MQzN/RpdfoATRnb3Xph94Lc7FHx/5GGNyoX+R4BM84NoYjZWTcUNDHvZkgf4iQ78Ntt5XhlnqDkEe93GVooie3KN/9lOp2sHOeiyedreomRyrz3VW/3M9awUb2XSnlonJbrrjZNo5gLef+WLvLf/83L4wY7n3zy5+5MKl8Yb6+s+XJ5g92fy1H2pm6wouRWv/8X0zUeD/TRDCr5PvQW30XE+fAvZXhL/zuRRH/AkQuQVPGdgEt0EEHLLogFEe8gXm+8Xdqw+84FIAH/+6/MJY2pHBjsOFgQ2AioCSRFxKIgBnIS3xQQJ/+oIAEoIn4Y7C/sZVcTgfPwRQWZKs9Q3FmAYOyUboUiF/vqBgkpgPKco71Cb+mmE5oMhGel0nqnHn9+/8lqSA79Egw5IJMQCHARLV8K9gOSH08OjdPyFV4MOz+PLtqwDDMLAgBk/YgfyAIAlYoIFuSxqgKQLpAIF0QFWF+EGBdD3MU2d5W4Gg48mcO5x9s0hXNVXXbn0z99i7nDN35r7lYFw6Vnfuv83exc1/3OI4LO4tvPk6ymR64d7VVOaKvtVLY/T4je2tUyd6K3PdqclaNZ9NJyDreRY/a4LehwuVZdwXex8N+v/YWDhvkPQKj5g8qvOPG34o9NFhhP+1jzT7JgIXeADlWNJHkpXZfrmBf/5b8ZyRnM9nK9VDF5jRmXxLw50qqyzfXcuG5dSEIclGFJQk1m5O02qnETW1gGobEok4TIo8duTMVMNktZJhNk96jmJ04SfJBIdkwyT2ygQ+WUio0fyZ+bwVvrYRSy7MTq7GrXxLx6aF1VbehOQhcG6qRgsZmaqBgkkYo5Jx5KXG1NLcsWxsrE2186uNhG3QJyXNtjSJ2pWQrc6ekIDn10EfW6CP1/CxXmAOEQ1tHtkPaScZ6qWiqZqi3gLt1RSk8SxD3oaERagSqCM4RJ5vODzzYJcRYx7b1UsKZk1Btg+/x0OW+3p573IZYYgaO8PbPGRx8x+3OA6Le603XaciprLrw+XSUaGP1rXtanm1WqqWK2WdpRu40+UFqb7++HoFmuerzmj+0tfQqK9KIufxUTaPnDwRYko0g3e9NagpZNoFgOPYTFelKzGynkwdAN0IJVQlYMiaPVNM5Ih5YN/hmTVL1a19DWv1ExcVq3vAwMtFORvD8kQlmMjFcm6gxvIsRCzcoyksQTyJflKNrBuxXqqTCgUChqFVrMJsKeOwfTNTU/WYF803NjxWO739fg3PTjL3PHwVlYp1xYzmT7QT05ZABdzPTdxdwb8LenUE/VzPikFqPsnxLIb8se/zy0NGEwT2L9JXoQ/yZdAMbxMEEhqqQqFfGyT0+SH5/ZT1N6aMDyh7uQcRIZlJ8g2fhEtUL9ditfp4WWHJRrQ72/G9gyiVcMcQ7gsxIpyK8CkjuakiQOJs15crpAzCfRQLrxfk2OLYfCSsUCeUlH/1UqBoh7GSPP8jUauxEqKRoKpa4UDY87CWhrxA1Z2xQtCxNMVy0z/0vTLRorZDiUdVJyj/OH5LI2RhGVeO/uWPAI6STxyMq5ZjqttbmGiU6qasyDY+OJtQLS6Tp8HWZ0Emx9Cf3c5jVeGxh4PmCQ3+IgFe5waKCcIDbkCGrwyMBJwKD67eMCY3719FkKISZXf1njXNf9CaOI/u098EOaXsQn8RowIEBYH4GDpWd93iWK2Z0FmqEQZbCnHRRL3WbpLkg6KiXzXg17jpFXyz9IXbwJFR2/PDQPHfKuc4dNU7H+6ZEmF6+krTNZNJRQKWy97sQqfc/MRVGpHnDx8Ie8UolcbLzJouZLxQMrnWBcyIp8Bn47MQ4BIJmZGwnp5QICM2jaZ7vlacOP74DwbJkZXrXjBeVopNYjSrlw6VsmOHVCJw5rtAjjOAM7voKPqL2wSDH9/wk6QK4j5dehLIBBcDvLQkIr+Q4EhpiZtg1afGt96cvCgsdkBOwWYo2MxDiJvfHDEvUYG93kvHEGHk2pBc9v2rXnerjVqtyq0RAnsL0vJBtPY9aHRUpkPEB5/7aTsIVRmEcQtHdvEv/pUW+Hdix6cmVstBNd/wnPVKhFnz08v7F4oNoocmnl9bN1JyIR8OxUKRWiatmMVl14zkM2PpQjQE2UC2HoTcN1BtPdeW1ZItH27W46kD22PTlYlHUu567weuLahYLZfGwiHv5zIFwtYWC0/Hc2Px1NHVhZLwl98CMn0P2OYBHLoNKTQdSLTANR4RhcchRGThJuk2g5SNS0tRPOVoP/UtDSlHKRASkTa8S5v6pu/KhZ4bUPKLCPAX3hmuGdA135QuDnSgnIMvVZS37iWTL8Bv5GmkjAS8gwSvVvVmZ71iUAXzxaywm6QUCzMcra9iyMkhY+sOA6iP6qTWoqgbMuonPR3uqvGfBXKeHQrPP5kG8B4MyXOpJAk6zKZSrcOMZIjJBtUn9hOJAnpSHKb/8LYaCMWqRG7/C4OYsu0mL85BMoxV6YW5ecxomdCcilOlkkKuUgWSMMBc1l/e+YFCIFTSQ7+AFe6FQKd3ICesgVwraAEdR9/T09f3tdKKDKGwHwejfLNrmCJSek+KGBF1DOAV2dl7cfrBF0WSmBj9HCR7oX+V+llieKyK0epydWFswQ2hCi6zwT6BKLqCJbG+JQ0LryJ3FIX+AhPJUwZnsdf3iphb06DAOomFVeIfWD76ZMLEVbWCiX15NV+aO2YpZuVmIDBFZOfJVTnQPqfIE5oHKJ+18+7Ynd/r1ha2TayyUGVKSmwkNPI9vbmrB8MSzmtjBxLKvsc8o9WIxErpK3OKUVtMxJau67i2PhkIBapqCByGlOnU09XmHbnRPdpmTjRohHK1UGsz6efnz4CNcVnMo02Mb0cwZGZ9KysrfDMMoye590GM7Awq8gFeY5EuA4TwJM51Dokrghii0a03o+YCLO1SU4hZfvncX7WHtvlN0caBtld7AzJJwhf6xFg6KUwpgtHaoeXF9nSjmkqYOprH86qoEvEIZ/Odnb4v5BXB3VrBwInyAuNwo4hnVV1eph+mQ2Lp54OReFCynaRlzkyUM6BogPTKLSWYdytR14gsrm+QEHtfbvwdRw9txpQ8Prk4XQFv6uXTlexKjr4acdysTGRVo9by9BPMkKgk1w2i29OVZqp5fmlNw8rnzj3zz3YWpyCDydfwZzfqkaXDl9PZfHb+R0N9+YIj7eAvIgPF0LM+9/nWMhrEndFNZ5/hD7zs8rgUQbyCSDHPQ0d2pMF4AiZGbsiMBWKKjAxsMD/d9MvkwFE6Wo3640hqPB1JTzw9qErhbspNN5ORdPPOL+xWqAg6DHjZ/+119OztAvYdhKh9jP7GPZWR5kOuuhw7ueIBCH+A0boILxHVxhzL/+3yvb+9IwokvHhIhtnJTIX5G7ODh/neRmaCuUtqQSWS5Uwlw+BqFEXykiMP97fZxpKXOntEL0ohSban5ioBzP8Th2d9O3qFqvg5ZIKcCr0sRL/+7wRO84IW3eLQ/FinOFOQWKyBXCWf89WxhqXObD4niq81TFX7zlfv/K5kmhQXcfH199r8/yTDkODjr+LHPc3fzv1v/A8JmXAd+Tn4V5X8IlpH59B39sy1g5QidgwDqOyze1LDiEkMAeaUKJPoTW5jqrAxhrd5uVPs0inbOlYUi8e18XtXcE/CEOZFi/7SAb2rHN3qpTc3MDp1YuPc5rnV5fFGuZRNO5ZpoHW8bgzk0a898FL/aPVisLW6uLs1xmmJIJ/p9GOkjaN8SyA40hPxtWBUctaa6YgXIRqZWWGhce38ihKyPc/WeR1Cd5aKyUwdR6uhlbSWJM58qhidyMhyQioNmifwFyOO5Cw/mQkxDR+ai8VWx7R9U0o0FfUCaYDgeig7VssuNXEobU3FrGrZMTtOqLLfJCyVKN45Ndpn8d13v0Ej5GfRI+hd6D/3tEeuagAEtYHOzyJNR7qGwMExwniSqMJfVX3HwEiBUIvYjUENIcLVXtru+0Y/Lv4Dltt7lvdm7lsJ6b/K0//777C7DswqdOvmYztXLpXGapu10lijYLJ0o8zurbL60NN3uKtYoJbd6uwQtLbuhbOdYocNyvf8UpZwK7Ux3a1LDe7Jv4k8hSXVDOQTcRmfO+IEp7s3vvvQYrqazl65osc9HVODkmfeVZ34xHIahx4pRh59htjyOw7MELkWaSy1XRm89/z86ub3bk0UXE121XAhPx1JazSz7JXH9GA0XWhEo+EftzQ1cuHMrBK+/E6TRptfffnUrYguGVWJSJqMcdth7+ucyuvf9o5K6KyJz61di3vtlwsHqjrEJjq5ffDmF3NeXMea/OGP4LkIVpabGxsnoorjzl+5LDtVricL8K9/I+z1LHquZ3pYJYcOyAAdB/aa5gUZAA2PgDwim4Cs+O7OtqSR/sZBmu9JPz8g2nNd7CTEJXT21P7ewvxMu17KpCJhQ0Pr0poOltjluaBfGOZi6SAuHWB/OBRte4t+pabITY5Tza7I7dZMZxLzphUuECAUFoorpCrqjov4yxOzeoAD0NUMw/gUITItMBIChKNOBBWdBrKn3eMhh/DCiKTIPSr/Zq4g1U3whpTpAfjYJq7bPHvlCiE6TWAmNXQITJd4KZ2ROz9158uEKVSNQ/BQqUk1CkKIyivr88tEUROgz+D3gfM4R/KFk5/mGwmAhRD5HfIFNAfo9BH02m27j4o4a7Og/IzIbEfC4CW3EEeo8Ov93QgLD0ou95PZu2QuFjIANEJlvmnRJx29zq3n0vnTJ9YP9Ra7nUY1HS+ofKcTsrcs3i2M+YmcSN8UMIqpmT40XcBt7v1C4P5mKg08gWXfDxaKAsW67VXMryvcVlxuf9EWhzpgJ/9VYl/+svmUS5h9fdEwOodZ6KkD0bF/9vg1jIksy5KlFKMyeQ2z2RAj+LOLbCNUjmJDIkvk6DF9el0nL0mXLuBi8dyBlDOzXiXfHWCYhM+rbsqZPu5Qoh2ZiUSWrjkgbfgvZWoQtI9pEmny3QomKzc2eFhUpW8AO0jgeFv7Gfjqb/043zeWg4+v1uZ4bvjpu1+jTfCV6+h7bh/BDA3kU+7Dvls8fBJ8kzcZAVKRpMimyOeGpZfpNyK2h8Si5jJ2Dx2QIAhvPEUE07nQp8W81NLTq8mJaqle8JPyyqBbyPdGXVEhF0bQ7zHam5dzNzjckoFFvC2sMtOd6ZKfXVx94sp0vq7j8dbGyffHKbMjBCvJl8/EC0l2/ClXI8HrxdQTb3MK6lqJkqBbJli2ciUQpMOIhP/n5vZWe2PnCdW7NN165UxAYnLszCsRho1Hj41VIrFX317zzpvYmmPBSBUr0iuvQSYKP9z0BI4EpkNK9wU0jo6gnT6O5L1xPEFF/v7UiAk091y2dy8L1Y9ATovFfp20V+W1Z8q1jcUCYwmh6YM6hd9g8ED1nqkK9Q6DI2l1d8NKHVd8ZWfktyX2xX+lnHliZWl76bD2Y9cuCT2W5D16PLaSm5kuPDaVNaRDK9jLprIRrtLfKpRXfeWxt918cn7MfJjCvv4jshpsfeT6sVLg0GlV6O7r/x50tAuM+0PyOcigPutzbAUcLoVICZEUGCDfRLqqqDpP/pGqoJvgCFRdVoEr8Bt5NSiwCTAKGVsmNgzLAM4tvckNQM4YrHJncKfd5a4Bfp2L8kn0+CPXLpwdi0fH6uXKWDkAQbnto3Oe63RDoprOC/IcWnquvxHErw/iNRMRGxg+2EoCtR2IqMLJJkBr+XZia7jF2BL5M8svAyTOlKJysXhY0io5gLWyRNBddFdJwwobcGFxKrTTlS1KlrPuajLtUEpDQXiqfA7sy3Eok9VAbrF56Oil7MlKpqpTyQJV3mH0zt8pkmPJIJhXP4ZjpmCTEyTg5H+LKAzgdq4wVVMAhir0zykOBPeZTIK/fvhl7qElNxcK2uqdvwpAFDbbpetxApKV7jCChBwx+a8gx6fRZ28T0SYzQGQKkYjCMS5YGLuJVA1rqkiBNZVpOzxB4rgdcmBdtAQYg537mYetBLEShZKdwS1214nAnMbo2pWL508cWzu0ON9uFnLJBARnBT2NH+M7fLOFEfsYyLI4wWFzfleS4OeFLAuVYh1yGL9WLzpnVmjLh9HEJxXwuQGuSjivka3hteCuDQlZVlOgmFTBf+ELUgEk2eiSBdfOezhAaS43teBEEwZEa95maiurhFMZUWduKpcL5AvwEMQJb+dzp7A+MLChHGXHVIQYZYXIujwWm6nyPhVF/sAHITevNKgObJNlehdJiiLn80nG3v+iBYkTMyKy2Hzh8eJPRLy4iv6sZ1UASlzBMtvCSKZ9YdYQwAuJKrdUrGjwnQrjmyTD7IaX4nS4lYcG/u2NFti7C+JoEG0qD1ggA4mMru0u5IC7OSDkSRNAE2lndMWwMiiWiuJVEqNzZ44fO7q2vzc706wXcvFYwEBX8VWeO8mFby7EzIwGK794NdtXgEHyDnC6LfaGiwWR/YJ2MfzqMx9749DDI9dSPqnLV06OnwgywzS9pgeCMiLXI6cjGiiOxAIN1gUztEOBTe9T73ijaJSEOLZ85eh6MXbmsWYpMD6uqFgSps99sRNg1q/IdohHe+5/6WWIWZ9AP3u7heWh3TaAbxaSrR0NMlPualUFlAW8rWMHdIjsxnY4FDQl3+f6eO4hS+z7lrjcTdfEVUEq+95YrH0ALQiP17o/gT7x8Y9+8H0vvfeFtz77zOOP3bi2dW5zI3iuMlcOnquV3VEXPRr2uEQ97ogHUvGhoMDV3SH226Xy0TnHHuCeM3TBxyKsb9WA20e/oyFyqAxpea29ZAMnPgieEojv4L7peVUXogx1TabFFEeSXn55+V4KRaPpUlSir1HeDm7JWRECqOaej1+J6/0b4wMvv5wvUFnRtcBeioGL3429doD15a7QzCOJnm2TP3JGLimSGgMpqPLrvy5Tvp0LUSEEXogMbkUw/Pejr6hk9KK/XzsN//p70J9ldPN2mecIff2JDTtDA5vc7fmY0ZIGyrJ73R657kp+bw7xS2h7Loit1eDjterj0z5ubOB+CG6LHDba3wEX1kl8LClEUhiKjlf/fdHhZj0a9UOrXds+kk2C4WBSqJuMkdcMa8yDiCfBF1P3SuJaylAgFKUrcRAneavJYybfg+YM4n06WCIaff3XIVJSRQqEKP8csibqywB4dPzu18hN4NEC+vzt0EhszPDdSCTJt0Z4xUvCl4cAvP5AKntIFR/C9NSASjBPwmLjbEjTyz/gMqXCSXIimfKSb0+rlWYr78xzbClaqnfZKzwhd4QCLw6q/H79T3SRskFvDPD2p864GibAPxIcvxY7ZNmMaKExRt9Lwo+sKu7CWiXvJnAxJlPHq9hyqmPR95C36ZDV2oKxGo1AgMcmuxOVuyd1PN+qTHjhZI2jG49o8xUF/w/U913bwNePoy/0gvPwjW+9eXpCwGXIOfo8zmlMpryQqfJtVkAZAVMXmbxh9TN9n8v30Nl76VwOSDLikqADZL5zLwHwr4jRy+8H53Tt0sWN9YMH9i/PzdaqhXwu6bkAQD6OP2rfC0DeyFNxJtu4NajRDVrNhLILnOFHogJPcUnEi/aX+YWFfqMRLyxwMtcaeKp+55IgO+zcD/P7fmhBFUFHFp6oUsH/7MUZiXiOgmnAORJtu7amUJetdJmEr1+jxZVkoBHmjZnMTB8JHQ0HCJe/MdGaposrmJmyJ5taRE4J72eXLkVP7GKY+x0VOB3wRt/1mVefmoTIZVHeDgehixduLcg16oycOqk98vkj2AOkGoRF4JQCjpKgr36s05FwdMrdYhBcsPB5wmxEnvF20JUV9OHBBqUMaiKjW3Q3k+A1cbalYMasYWPI/XT2CJ3LRI9wnwQRvoEB0WwPAS+eg69cQUterPxCrayCeT08VA1sbcST9Q2rH5vg8+IDwotVvB6/HAkyTKqLhirhj/cORg8ezElKnl3EJJH+iQfHBcANSUjZmAQu7D8RSQ5vXbI0jdDXsdgg4HU0+ufAt6fQp3vGyTTxrWtYRBPwfZunB4DfVSYMQlMMOjCt5l4i+x4iYVdJXuMRPT07913d6uP5c2eOrR9YAuDWKBfj0ZCjMvQUvjHA8/1K215OchgXdkOiitOP6oVhaLjPWIYGGe738ZKqaPccoTtiQYgI94LSh4dMv36dUtz+wdOAyPFPKDoNxbU8o69J2liKZ/aKVbzoHQuZPNAMykKv3fluzEJhQjpk/75FR5AFsuvhfViX4gDgigoJybvyoeT1/0px+LVXAZv5cZrqPE7zHBd031S47tu+IZH66z8Av1Yix+S76M5fYxC+TzGC826gb/nysTjZDUJpRnko24ZIyE1ABakr24auUX+XwjeCPUT2HiKXb2Uk+QVOg0D577kKInRB/W+gGztXanXv2yMTM+2yKeAa367gggsPMjBR2c5id0Xyu99EAOrbBG+69MUo7IJyDNfvv6QFMiycuhYpDEEY5Ag2COyjdDIvPM/FIx4hW5eIpJhBc2afJsF/mFHr6iVVT9lEBejllFyXSevBsqYTL6h0Mt7T+KUFkBeP6xyPUOeIezSiqKYFwlJJBrI1CXwQ2P1f/y2WrMTU/ulfNbJUDgeYyMCE0EzdUe/87uFPVcqK8snzS7h4R6VZCZAEBDqJCDhF0HdC/uWSn4H8aRq9p7+Nj/gmP+qffR3Zxm+OXrQ3R7fxfUAQEudm8bUhDd+djPE61UO297+8WG/k+L4Z3lNUGpzW60aH3az9EzXtYe2CpMy0dfGpRPn88UuTk1dWj7xy9cQfrx9wvLnHClMOWeiwkKf25tbGsiomP0MCn3jyyMZzF46lndUjL7701eXOr5zYka1rh3c+4KU3r0MCbM2tvXDluMprarPwr/8i/PZF9G2Dpj4Nnk2jO+qu5+YlEsS2dYWM+u77Ke09lK7f1EfgssZzkD71PSS+Ah/fPLgKv2Ll/HSlUa6VDYCge534aCYR9Yb7MOIE64NSBMwbMv1is2gu7jMTksmV+737j/6ocb4QdOM7y/Fr5zOZB+F+/Ptsn513sS7jYii075DSK6eDJsbGAx0/Jvb+XKlcbx+3GX7nO1XeZDmE9uS9fMtVJZ84fBjcSzm9Nh4LsaboS/nOuytCR7voPHoE017gkdVZqipgCACD+y6lhSQVq6I3iyMxxDfDFFVWdgYdXGIn1Fdm3mkUGoaKN11pD1fGd1dydZ966EoV/qri0Tv463oT9y0Z9Izfu1Qs4AA5dP3q9tbR9cX5qYl6bWzM0Vi0IYteoZlRU+nXEPo9nEzsQQzsxT+jqLBqf0sO793oG5bBZ7m5+Ru3JLFJOVqvjV0TpnUOrO36TEgJY23z6E0DS26E6o2Cp0qqRvSJC9IfLzeznqsQ/cJUSpd6c8w8c+xyxZywJfx9iWy8XMh3vnIhPeFCnDH7JqgS61QqOnEworx48+1tmdWrMi5EU4amZP6Jif+/sYPhyLih7P/IiVOV0OaOhk9c/3Kn+8hkUC0Waom8X/+evfsn5NfAVq+h9+BwTy8C7utAsjFQiw6SGN8RuIVM+D+T7Ri79qsqYHLadkAnmmb5hw3Q4LhA/Q3X2nvWusO1cXlEqfprCawyuaH3b/Lwlb3Jhy7im/NUvrZnrSa0I4PQ259/cgee/9rVrTMneQVyab7dmmiCv7BAU97QX/Q9rlCa3QaZ1nA3t19e5sXKhzkUrkK+T7EBNEf6eymz3Qf4k+//nE201Q2n8bLE5gJWxLMcDdyDNZ2WzdWjttNSVldy+RE3I8kSC1+IbSdIcmyMzZnJEDgaiO9hK5Fa6mQzhYD6YD8DYdM60crnLjaoVNpvfidJRCNu2dBVbWyG4dlZd2k1sBgk+EMfvMcHTZTyqnBD6dTR410IpHawPVXkmHQD9Ozdok75Iz09CXH9CEbKQMuGFUSkIInX+0cKlLypke05hvJQanuXWuhD7R7CYdkR8TrjhQEx4sdMeqGti2dOrR3qtOrVYj4RE9uSs6IheNBvUeUHRAd939EVIvbueR5drGP/HCmHP1wPxFYmP0Xb3w5TLMI9SkHsHfcbOtjn6dpqSKmt6aQmr6yHE9lg/OklRz9bs+IB8OAkME+powL2xdKzc5cSkY/O2jILXlzIlx6b1IhmSmGQMDEXeEcHlb9jaYXop9pGdDlCg54Z2nd0fPWSQpbttEWw9T8gs5IkRY6nX350OTmu1NIrwaBViB54KhZY1YluSREQGv0jfprEiXF5fQECR4X8EDqBtm8bvP9suE8sevvpLYb7IAUCuSj5IL9U1EsPKCAei5NeO8PrvCLU08cqL9Qa9QovCIX9Y2r5VjQSdcVpS8iQ/bNrI871Aejfn0UgsD+YZXFQ4f2/ZHJAVvAXIRaWIbblKCGSFo6FZsZlmZKPU+XwmEh4Q/V3ZJ6C+AheIjebNA8dpmz80aKX0yV8G5Lr/9dRZHBVmP0W320HjdHcxXQmpjJ+uPr1X5UIVQZJLE/FJILlAI7isEJJM3E1wbucvwK4kGP3C+gL/2o/Jkd87iXVfpkVKLkLFfVubVh+r99HYu+SxIcRN84vqbtV2BGCXuaea8OqujasqsfBGtf3Lc91J8fz2UQ8FrZMdAFf0Hdr6m9WiSUj7YChPZh/kLX5afCglQm/59QTEn7soWXVQCOQtLDcnT68spDE1wcYf6F9Wh/Ce/kaiTRyzkwn5j17MuYq+FMPqJROfb717BLNu53FTvushN9jZQSmH5RLAdHrdz6q9LpFs276Z49/CeR0A+S0hl67zQHFQM8jCm9aRngb0EX/LN1ueW/vRYHk48MuvTD/UBD0OwpFMS8FIYi+jV/ix5HFOrQtqLAvFaMc3O4Wq48lRRO0F4q4gxrSLnOH9VIIHAK5UMIDkt9PxDe5Wu3RvQz8AVz/2McoHTMo56eZPtgOhwhTMNV6xTvfp0RcCadSZMxyRaYE7ATdn5h5zvElY/bIE/RORsJ/+DVZZVG4BWflsITaev2HIaPDS3gVWwxkYVKNyLx5hYtiwFuJ8/Zd6Cs98+1P3ljMpxOKMWRxEoRLCafF2xqTwYsDn/merjfcnngAiS1I4sbQGPzPB4QG8HxA0CvBn5DxNp+C871/D7Q9IO8zP4/R87d2Hrl86dyJjfWFuXZrenJifKwcjVgqehd+lzVs1XtQ5TrihiJ+33RfGLu24Ad6hbforVDfp42Ks7/zCFR40Icr2jEjoh27Q6qVP3E1wo8bFDZXMglR745OGDj0QrYbBDkUbJvyqR1Gde5mUNNkSHTNWUPTcOvw4TbA7bgpBB/IrXVCNjyxvpCWpDs/zSJBRlTdjm1nDxQU11EhBZXIS1QV1b2RIrmF1didi86vL9zIFUo0QCUX8mOqObZEgl/7GsaXXv7QVV4bNIe6Iap946r0+v8J0P1//nY02vz8/HtXsCKrEnkH0fz9hxbElnlRA/7eXmhxHpTvIoA18qFr3BoGReCMKhNeglKYXwM2NGEypk5G61R7qew9VKJQlRJXVFGJJDv3XAbJxz7+0Zc/8MyNq5fPnFo/srZ/bvbbI/UyKHC80S4MWzNBthNkuOU8WtvwIzyLul6ruyvfFdxZIa1B2XdXVURrEweOfQxYHan7zg5uMGjy83tzi1ylehbn8tE2eWpHohPjVJtICAs16gtGXTeLYaKD8JmhK0XSIx+hihswqCh+AESg9np8JhWCZA8MP7hQddofkOZmJW0izWt4Ek0FjyaP26L4y0xqkcwJ3GxcJFKBf6m5MlupG5JpAW2bvuftpvItH6AaFtUTXinRQiYERU0hP/n9kqEY8NNBTXgvGocAhMdaXh9LGPPfJf/g/yHp/DI/kY/hQ8fmBUSN4f8BIOspqigxostmgLcmgI78O9CRZ0BHHkXf1TMvLcjgS9vcRQ0qYLrmVx1VUXXkGGRQr/T7pSv3E9kjRKJtOik+F0T8vNmeq7yIKaGtC2JPYGV+tlkvl4qZeNTQ0KPSI7yIifYUfW1iCZgyLNWD2EY2Hju8b0FASF+rhrFy6EL6jWp+eyFtt8ifN7t+A+FS1Xnp3QkloGhmbRA/VyF+ajxFKEdl1WLxzgxRJwpg7dbE3FuDuqLI4YSunyc/L2EjFwBZSIwFyOeo6CSkZef7vuuJeDeDNUKH+4kiETBwajb6xL/8lyAqnZhByGD9LWiJ9xz+t7+XSYi5uqKrAIB8Wz4JSeTPgJwW0Wdut0f2EsscaVOeqIttwZsiUePIXJxTElmg35pffyNie0gsGvWL99Bx8A5ZDt0ZoepP91hEc2ON6GyVT/cQeNs1cHRw9AEATdTvBsn1s/8QWsVFNsArPk6f7bS7bfKTsvI3f7Pven5/IZNVZIM5hJ2S6J2jgAEJ/gOMsHbkmHJkrBJTqGRF8YokkV8nX5CpaZE7v3HnN7HqNKrXoyrn8J2/5QZJWRScURjPYEhS9XrleIQ3eJLfgoXwWOt3Gf5p8nWUEt3yBFADoY8gPhCD5yu8ioLwiUi3VBZVP3gE3rDk9ZuUZjqhVdzvJy7iK3+Aq1kTggKbn6fSX8gU/k82z5KvkL9/K9gs75aX4Jv/k0Qh7gdNIc+7fw7f/8Tw+3nbqAAx8LvPicMR8HPI8PujndAs39Kt9MsnwFJ7MAekfebBX/8fCf223W//++nht2OIQTZxyJdRBtk9U8XoCJ/aUcD90VFw20m/C4AfzOVHlIgoekY94iR5WK8Ul62cpkLgscHXfy+oNiXnwfE35KiEp8YnjThTgCzCi94fgMd4lyr5Orx99yukfvcPUZjPC9rl9ZYYHXJMjA0JnhGjiir+CKoWJCvetH9O5lFFIeR33/EsBgtRQz+/IpuQGEP2IHFQhEWN5bG73yBZ/BNoDp1C7+npkBfLOczw4Nh9CWGZge3d4jblcMAvkqX+4UnuxcXpySpchowe8f1gn/7BlOIQ0JHDSwvt6Wo5nQw7aA7Pqf6pL5f4pSq/ftU3g2HFuDjs3hyO3oJYBdF7UERODw8Q+dgU/5IZWQMcFTDDYQizmhwEtsay0fRU3OINe2BXoVpLD57pjqXKMc2h8UWnms166WA4agTDbjoZULw4/mHHu/OHtuqliRRwN13M96GxdT4bzQc1SGPazDo5n2kceC4RDikR3Vlu5qP7D55MqpMhzQyWQuGtGyzA+fyWu9/Avwb6U0Tz6O23E5Cs7XojAdMlCTC3f/iuX1l0hvPYBEq/h85+MB1wmCDO3Ww6EjZ1iaIiKXIOh1uruAX8dEcGUfhVoPCwYy3sjp7v5+DPJuyzeO2wmS+xicbi4eny/PRE5xB5mhnpCIR5OTUXUGopNxoiRlWza1UWTIKDYaEPvyax4vaBs6dXyplzBxMO/hLgMB6aw69/5TSxW8Xt9aqnNGVnQTvwFq7nT9z9K/wb+MfRDDr/5XFEdo8Sp+45SuzwNmHx3EEiMvp7zg7vub71r8sLzXqIj1/h5fHRtmBRDfMG9a5dveorXp83+LOxeMQ5UIjZuK2EStnZmq66hFrdi/FsTJvbJ9s7BwsxfTtE8olgtIDfH6bMO7NwSQ2vB0nAnTZdSbZXwzIxzu9PxjbfHbdgSboSDpYdNLS/WdCLHrqI/p+e0cFEyYKxkgGYmEBEURWi3vKlz5ifT4vTsaK6KOZG+NBgN897yCr7Yat6zcECTuZPfxQrH0ju5+knjx/cv7TQmqqUUgk3CIrWwz1dmDJXNHqvLb+RJXNDnh1qIb3XpMWEFLDo78OH18xP4VGTlqX7Tdq9dUANp/Mh0sYDNQ0OTFsJZAMBd0anLa6mzutfYuEsHVi2FLrXrk+/aBE3Iv8SG2jvnZ8eGHjazjC148o/Lwf8M51/hX8T/GgTonu7N4UgHZIQk3gFxPd+zmY/RuIgPorQfHd6EogbrXizo0K4mn2wWg6PYPEm0f50Dlac7QxL+3y785ecGcmOaKdnfN1cflyLr1RbqnWpl8tgk9LqrEbdqX/z73KxUOhAxoxfLk/+Xq9wIoSJtV8o6JqNq60L5VzvcV7eK2WBS9nDH/LSLHo8qWMajvrx94/vdvBXyM+is+jvegbAY1QrgwC4pppix0QDS9Se5LMZAfdwg1S3QW0im0x0nCtYnA2UJGGmieH8hml/HVjwP2Bh840W2g9d2Bu/b42KkKaiHYU3moNTJjsj9GKgyplT9fLCWCle7hT9gSqzvmfkDX8Z0VJT3MVmwyOMvEdG6C4Rk4E7wy6CmeE4n+HwFXytEpadgGQlO22OoeXuTLJkxXLZquwUJ3KpoIfVVEi2bEW3qItpKt5sAh1Vxid40S8aTc9CdjWVTwY9cj0TVaLavtcwYGdIjF77iblHpydNUsklK5GQIiUcIked6oa9rRrf+mECRKZCZOZpL451OFW6HPH90sTdNv466PMiOoP++nYVMzGlw+KzM9TBGWUR3RVl4Hb74UiMiBODThLy4KjyuDo8KfzNLSr6W3CU77jf2l38Juu+qSXu6BIu4ShGmxury3PdZqNUEPPrFvGixkcw+oJsQ04sfBAZ9V27Qw/FgJ0MFi1R4qQVR+3u8Cxz/zikj+CfdmK8vlHOBONNA9vgtiipTYWMyQ690svFiSVPZrGUMo3wwgLf/L++8Er58RlTq5V1jKcVpwGhIZ3KJUMnXLiTQgnjufJ8l1eE89Q80zv3bTmbYrmKsQpw1P3T36d2dKy1P178yjEamLEw/bdUi7Sxmq0+c8if9fcNkoP4cxK9ensNExUP447E+CHSW4NprsO4s4s6BoO0grK/+/mgBfZDFkAIIejoxsH9s91GrZBNxAIGhJCT5KQ+wCqiU3rP1Kz+qdN+jjSCYEYAS/9glihS7QIbgWGKJXW611k2nXQQwEEonAhTyJmCYEiFTdWpNJ1xlWAjpcoHpg09mdTFABz8HYMYwgOGZnz0k4Q1ZqdTE4unJoKmFHJS+0xIQVXt+RhpViL193W1eEjOY+2cm3v6Zk6xggFybhA9wK42IU6cJZ9EBlpDm70jNvxUvIEUJjFl96TvYMgM55yKh6xDgnMBc3V5dqY+loeM31wLrJUKGvP68zh9f6K0BpMTHsqx/nmEQVrZbzeHf/6kGA1Gy17Qc0sNsPItzJzwfZyieIspRjgUD8KDhRwmxTqQXl2IlDzAQN4nJsCd0W9Q13GDI9yZKAYs+g0ccUwNh1JLDj8sIhnnyhYFf3P39yG2vEXw5SD6UE+Pw4+fwH5w6TudIY8gs3h8D4uGGPjy0M2PkjNJvvmG9Fs9xzTNg+aBmlcar3F+8nbgXX7S4XgsvnPGtxj29KuCeg72G3ZnbHGeYj0fDUerbijy48xpHdPVFU+ZNlIB7JxtqZFiowSsTjM5Gc060g6m0UretRnhFauLbskLRfPenV9mVMndsMhM0Er8u/pzHTK1ppN8NlEMO/kwiSSnTfyaHrByE4mqxTNCbs/4z8Gen0af7BmPgEGfZ0Smu2iS12Fl6X6r9vNnIsIl2+adhmIM2UMW2A9ZIKz68RtXL2+u9xanpyJhOwBW/TR5emjVLvXuiX6ixlGtDI+W90FOWvSw8Mq0AJDtheHcW3+NGPJR7SPFB1j7YzQeHJtOFPOpbC7tRJOuxmTP8+Lj6ZQis1uS4qqSEbIUxmRRglVkGbvpMduptZUVOSBLOBbRHuACnDvPUC/QnAlGK9lCI+xEczJWVCrZwel8XKIEJ07YdjaqpggNF+KRCMeVNDi9L8TmGlpNnYgAyNg5m7zHMYhc/wLIbg5kN44evV0ayRAzkA9RiQxcK88A5YHUBHp/CMFg82erFySoVu3D9HEyznal8WCY3j/Nv5ejnyLWfci71sZyZim/h0Gvf8kM3AOqW3Wbue/+8w/tfd7Nu9+gZwBjvAOd6h2PhwPUYI+dFNpqYgPM1xh6RF0lPIfhIR31nSFYiXCHcKd3oLc9+8yNnVoiU203K9EKP14Xrsz4aub5PTG8WuCbcD+auKzfCHuPaxSAbU84YXzftxN66IcDgy8WiqcYMdMd2SrHbVky5j6Zwlpz3dGf1kwnEyTYmUlT2RSONDadzJcnwNilYdRpGXoiR60lchgT2fKSsfGSrvmfnMAkEtCCXJkCEsEek/XqpQCmnhPUzbkWji/a5FGWmlg+OeUSBYdv+l73dMWdKOomixsfbPfD0vlw7pn3q8m0ihPMiCTMSMDb5+Sf8j+aVy0jb0XOECL35UO4fC6hw70DJlblNSxBYqrBn6is8gORXFg3eURH29gvEPFhBAxLUlDikrmELsQSyepMo1IdjD8bHl/8x8V2n++z4uxUA7MRzjvBaDSzGiUkMHuk/c1E+SG/q2PUo7ZlOEP2UmO8HY3PMFkKzH4zwX7AVfmzP0gtM09TsVXBQ4KeAB7KwEMHVfm0YtQ/nutsjkzTjY1V8rxkORjlN3z06MjI+Mruiw3+y5FjB8+8fNXx1k7J3ny5lMnOJVMxN0N1UlwJx2yMPzh/ZePyj7jS5Y1k7C0/V29HSltXWhMxFyuLzYVLKm9Mu7tCGPyuDXSNW9+SQRSWxHze5iSW1nT4HpUpvBzA7a4v2/5I/+BuU0WIS3nrwvGjcJ+1seq5I9VS1RC9E31BZ3B0T71J1EnFDpJInsTkEP8oze6U070mFR09FucnXhYW0o4VsuOKCn6Ll6W61ZCa8UgkUlCkOP99THeOhA6GVUgHmFuQpfklGjGMgQm915xJdYOmO6xbqaWh2Ek+rnb82lWa6AnpzFkJ4ITkQKZEeJuuhLGh/tEf67bet5V/ca5dTR0dFrQKHxN1nRX8N8DfWXQCHej1ZkwigN5gdovIgdA2b22O72Enn5G0OD89WS+kYiHH0NAsnhW5SGH3nQNR34b6A4QHJzD6x0SHRzX41qDCwg8ppvzB/GEpcHFxLDWb03StaOiH1vqckyRJsQ4l4gcCOuX7bsFJg3mu1nz7/TUU4/L+eGTj/enwlKazqKrd+dM7f+DzSsyOkKnjyIp0/qSSx29/YN1E+Bj8ByLPfEtP1zGhNSyxQUkhjwhllDwJ6ILHgZv+6fa+NvYnpRR8Gl6hfhiRf15iEc3FYtVSOcbPSwzDw4CZI3NQZwaVzxFXc5+Pl7RDYTOZD0Vri4UEgADFzmrSVE0tFCTfo7iqHI3v+muzshXAC2ZaVxrlZDXsjFmU2Fg7ab/2LdrQb0j2jnAbYj7zN/APAl8OoVs9g/D5ddX+oGoDGFPk72ZB8pOi+Zr6MxT8zHp0/FrJp+IjFB5OttWzDh1YXRYnWKNlxjc0OoMho/0Ja9Hd96xUh5jXxoW+PvX7z/qTugasxJvFgJNuRTVLLZTjwUIl1j1SK+YtNZsKRvO6rMVa+Vg0a9n1spaytOz46fGVTDSND2fDsh5ohIOeyc/ZO4XxypFIw3bSVjRbjQRLjqQlTXMq7tm2psmBTDA5NbkyXksWdzHUC+R5dADduB3sn43z5wKKAd2AZakk31IY4UpCBpsaoiUvs4cErnEqCdEbPoE/0PMA6nHzdA+Wq7xsF+6/eWZx8NoD0Yzr+m10RcWSIj7AElY3aK/cDW2d4lVFAR2pToYdDjZzJOzi8Qkl8EiJGZoi44DpxCaCMrODoI6Gla1lM2PtchGP4w8qYv8an9yfVK20ehQggiJ5gW/3pkqZIGZwK0lRFhqGRGQnHp+OBztjge/4BE+CRFxfwD+OTqGP9ow0OP3Fer/b+p7ZqBKYMr7po3zurkTg4lvrI42Mk4Npivcte/AKn42n0MmxaqxajdbuAQZiZsEADohhqcBSf2eoHwn7u3mCjWLTegQp7NrpKSaFa9lifQIHSyqbHs8HN3io38Q0ZCh2IMiCQX46qeBWqtEAxUajs7AacCJROxL2s1oeDiTjUDXbqHnjj46nYoeaUUZxVQGgdOc3FTvEM8Fq08GMj88JnspGaczWjbGVudL4zMJyMyxS3D7O/Sv8p/gn0TKq96ocNBEq30KDaYvOcNhpEB+Nz1aqtZB/YLK7i44GadJIctl/Yl4VHmGZ2PsCruAPFSdi4UwjnshWVw+Es97wuSBbzx5THLVQw8GMri2qZn3GUzBkpS+75Ua6cvKFgyXX27eYP3R2tR4e5um34mSy7I2fqlVSR4l561wqXskG+rr0b+DZrqIXeuYsOP1xfpKeDJSpjAifISPd8jcR+NAWBfNqHMeIfvwLIjHtRab81NatIf1DSLd6Zi2daNZmK5W8JmZb9YX/pqyBcDh4SxQ3035M9Baxjy581zbKcu7R8PvKi/sPTz+YfWWV7tNYNioTTBdoIJsh4bwB6IFmovmcDiwFGURSieJMyJsqhBltzKyutD/yAK4+NhlyThOjqzs0Kgf/kCXT7NjL05Znpss03XipynltcemULzw7sx5kUcuU+Vk64D2GGHENfa4XWJkgqhQK8Nl1g/A5g1RJltQnkcwnv99EBpEMclOMt3tcw4O03dnUecS8jPmLv0Sf5qy/DnT03oWQY958+MqtXhaj82ePbe7vzc+2p/lIOX+QlUzRNXwtIJo4q3ur5Db2hm3MfYwPAhxIaW9oXsUjecBgBN3QIfjdnMcWy9VOuZ0XRfOYriXHorRLSL1aSASIFAyqslaP1WqHU4pRGiu18kknWmKqHjSUZIh2KW3qajsTYEFIXUNatpE15uYaxXSV185TpmQf0H7L1ILTtcy4RlQrtxLMzulmgVOEnbpFFYVaE9qvObY9Tex9eRmEjGV13J72HGErbaKD3z2Nfrtnp7jfxQw3K8QfRs43OzvciWKFTyWRmCxLT97je8Eq2DaAyOCecld/0vyetUwSLubNF/fmRh343vVvvLQ/4vo0OjVWq1fK3hu4cj4QTnhyOnyN1jArAGEOsxz2zfjybN2tlDnKejr50sGxORULYYOqulI00yhUI4YkFYtv6s6Lue/+lJFMkzsXjz9RzctaZowL2QlQg0TLtX2JAG+2usebY9QFfPGrYHMX0UZvTeUlN/7+Jj5l8RY/3gH4E0kIAqHq9/30d/5kWdnWNSIGEMPnF9H58lipkJrwvLoBTiw6SHRHhgv3z8r3D/74Lw1ZJEP35DfrDaZbZUZfoTdoTVeKS0ypv/z2ybwXK4NLpnZYIpIzmcyqqpeIA+DQYxw5Gw5Twlbj5mJJNUKVkpef1ymzdUUOpmfTaVMz7KQbDNiuy+dnMMimN97/vBYwwg7v85OsTi5M5HSKb0VULYiGUiAbnn/LQlXH2Aw00xoFfxFOr6QdKgVSrmblTM7Hv0a/TBbxCmTF3V6b95QD8pIFzr3F/yXmb0J8ZPwc4wmMyqV0Ihy0A5oKOLiqgCcpF0TDi1/ZEQo01DjR6Dp4jQbWJZtFWlnVVIOxmBNtq5DeYC8XibmSCbjK1QBQNqxfhgcOT6uESLHouAoq4+UCQaIEwzIZC8BvuAi+9ifJL6An0HPox3h9mtATmJmDwuoBDrEpgR+vyLqs6Pz9ogaWFSTvIB2ZTDeHk5EjfEdE3QZrU+ObKBDo/1EFU9x37114LxkEl50H3O3B99jqec89+8xTjz92Zfvs6XJlsnOwWhwrWLwgBn5yFXdHiq98KLUIilzn/PFS/iRejlvhg/ZwlrUPXvuTPvlo5dHNadHoBFF0FRcrvBuHue3u62axEAnL4WRtJe/NLfUqJOux9fqKRSeaTaZhesWVdYnxGVFY1ZvZTNCW4k1dku0YCV1djk8n09GJfVp40paJttkKeXxSCElGekwtOJFcZBIfDbn49AlrOtf1jKNLTxVjBYKVxw5OKbf5+RSaxfRMcMyOOKZqyCxpgmObyhuSStT5s44dCkwESNpUqV5qywBOnz7H7mjJHOXgg9RJk3wfsDmKDn05wHviB2VYix+sxWibo7oAz69c7hEg5aBikIYkTrKf2OoFTCMcNKJmtFiQmefvJERFCItyjg9CGpbq6bpcS7up/16XczFdcpPjZCveaKbricR4osRIPJKt8JG0cyRDCPlFFEZZtO7/lvDoaVzxLlsyeCnTg8/j8nm76WQ0oisojMPy7qDtkZmfra7X8dM+7lfwl0oTWnKVOUthks3WiVGrT5pWIxnXyC+Wc+FQx8YTil3OplV8birq5hIGj3GX787ji+DiKqjSK5ZU3jW9wc95Dt5yQfBl/21hkfr6tOjTA6+W8d83wi23TiZJZWa2fwK/P6biNyUtkeM744vx5ssZJk4ogKVKUn4h3pgMBhRFVhzLmih4NbBLinUTrEYLFDKSTtr+fjafO3CbfAF9K/os+vuBzaqU1/4B5ihUVm4iU9d0U7uFNAK++mYQKzbcSdH9sTFbkDgHNh3LoJzlAbyn1fsffit7761EP/i+N74LhGVMVYnu7N7u3nvwQ4P/9DMffeX973v3O59/7uknr1/dunDiWL30TMUtJYK9EPiBvCi4sUq147cpcn8QLopok+ejV7g+9E+M8TNlvIPSr7r1HcGecWUTeHY4r2xkPN3u9DlB0q9GkWK/+0ocrKe4M0H5nUmE+yVMA6vR5UBQgTSAyMxYyYc+/t3plCrDQ/8VlTJYCkFEIgw7oclmiUWkuEQLhfKyG/bumXAGhqXYVq+Syxbyc875cqpsDAfW/c7viN50y4toNJf52NISkeo6lWXeg4wbRJYZgZzj+5aXCgWuYrwJ3DR0Io1nvoENrDohShn7bficMeo283XL0bDOPvIxTanURieigTpmI56ivvQ+wogxU72SGMy2E9NIqKS8+O6nnpZVJQFJaIh3LJNboiudsDtfx/ijHxVnoz9892dohXwNzaKjaAe93AtcXK9R3sY83SBkbfeF1uJt1YNT/f33AflvwJi+j8IeUsT99rn+G+h4oWMHgQ+TLvQJJMKPHhpXLi/NV8vVMe7KZvvHkYV4R18yEykMDyf7b/T1B3VP4o4IEXi3AaJfVOqGZqP+lP7ZDp/244kXovB/fmX5I1ePHFOTx7uQaOyXMGUuZO0SncHa5qn3zveOL7BSBcBMGKAVPYR/cfqQZJJTh1dKOT4rUtn45QNPGGLC9y8/+RSOq6XrU0/MjDuku/7sS19dmTRxHfTjlIRtGUuXsSytPcNPKL93Jt6UxsexwU+MAovPk04Xa4d6Tz66peeyaja0he6eqTfzYmoMvvuB9+Moi8Xa73v6RRfhu1+/2yH7yc+i5zDrhTPwKyawhJbneW8U4Glp2B8lIQHpdw+t705MH8xW8kd6A/BOKLv9UYNRS/+Ahc0HLbTfdGFvfLiG8BOSvA2Qz8xFjzyQXhxhv/mWJx/f3trfm+u2pirlND/CHnUV199UFDPNBp1P3ZE3pAhV4NVFEumPD+8Xz3bb4MQpy/6rncns7qw8ck+z1al6RIoYVnIfQAs+/WRinCih4NRH3hnBNHgkzwBkpIO2yZ5Zqc4kvaQUk/VARNOznqyZFMfCCduylXgxO54LBgKPhlKNZFqxsyXed/WWcoifHstVPoyP9YciYjK+Vb5xTTJdc/+Fuh0IuEUvWo2tP9YsxXKpdIAPVDEl60zIdj2Hkvx4uZm2nVRkrZAbc81y7fW/2/dII6WRYjZTjfjv5jgH2PI3Ra33PODLC72zc1iVzy8QTY2HCcI5cO4SZBkKUjAS79RTsKbcADn4RTWehvNcQ+KHMsGqEbp08fSpjSNwv4OV5lipWqqaLNko+5Y3HBswbDKcHDYzzNz7fsa+fY+8qmi09bAFYulPmlghHf/VUvgrZjJgq3aQHW4pCuHbLXp+3+ZSk0p6IQC4Wp4ev15V4dPc8f9MZDMeCFG9uzS+Wshvn/2pbMoJrRfMQG1huSjdMVcsvVWXcmnsnnohxH5vKTOfNhSC7YM6AELqJrtt2arbJg1hKtfWQp6tTY/fOoVZzDGJyUoTtfFCNkw/GEvL0TNJYJVTSt75iyka3GQvvp3otfedjAn+L9/9djJOMqiNepDNnu5ZOnB8TZTbLYyO3DM5xdkzOeVBn4uqun50Y3ammK9I/Kx2pT9rK4vFEEjfAvqvEVYGLygFNzh88TzAr93pDS3+QurOnldkdD819taz+WQ1p50GyCopZqNeBM9krtTO/v/FXXlsHNd5n/fe3LMzuzOzM3sf3OVyl8vluctLFKkVJZESRcq0LYuWoiuS7NRyrCNOU7tyDCOW3cZJm8OAm7bqAacxArRFjaqq66IoYPT4I0AbIK0LowgKBEiBAhZaoBZqt0Woft+bvWRRImIULQERxOzq7c73vvnu9/vNICqKBz8ilW3KKmQq3h/31gu2RD/3ZXF+6mnL9ovFyaSvkdTYyslvFwyXXaQQjEs7ZsAJW6ofV0+ujUy5eAAznaIIzypPkdfj5tAruwfi1rX1AfLgyjVJM5LlQ815VejUOA+Tt4U5YXdzgYFhhbAP7J/Iuw94CvkCH0uQSaucwIfybLZKhPr40GA27TmmgXN3Ch9N+OTzS//w044tkbd/+nElMI6v335fTIHN/6xwlTzfNHSVCswFtWknhOsWMTRVM9RLgoqA/Rc6oCAcz/oCJBhgKBAFIsQrK2DUNU05CnbV7DABWJja9QBX1D7BuuHOul2GgWhn3QDUAqOEQ9utq4DhUbSzW6y/5arNA9stKAshLSBvv3NhU5BM6VRnVc5rCEGM8MUrly+CuD/7+NnjGwMDo4V95WjFD+NErs87BC0gZAxG8Ulpj1+2I9HesfPWuMsUHoIED1TPkXo79MVF5oPQtAdMJwDZmC5/HFu8NfTFfk2iuynFsESN2IfGC8Xdxwo7ctlCSA0CT/Gt7xSqtVwqvn7m6smDD0gqZAEaSw5KjsHMP3iTMYxvXYwRbX+i2G9moiQkklwkDN+lkjWZ8l+Fsh3d2zzv0YG+hdlsIiGviwb5N0lUNm9TyBbCxUhC0b7yyyLRwoODGzkxiDYJ0XTJfuXMc//YnEBYY53ghBJTJIhhZeaOpMKxbISjZ7Mr8zspVcpjlnKhkJHs5Wf/yBo8Pd3Ipo86pBmdRjt57vZN8FN/ISwKjwiPC7/fDB3Bw53zDXzKW2q/ozMvpgtM0hmSbrUjDk3rnRgLqok4UGa0MAY+8X9OtGCaz5459mgA0zw2Uq0gUkZEFxbJYuiO/nkL8xBdYaAfXW7ELnLAHZQYA2X+h9vr+gIrXOphZOUq8uMdS7pzZCaRB1eg0qF8VIcANnO8XJnW2L7Gz+VpaKDfCu2tt1yj7E4dVP2xWQ+yAH/mYjpVLuVS3oQTncokQpRAQKFLAwuulVk9ZtDoyT254f2fT4NBJvlYCuLMTBln9ZfyKWaM9A/PMXMfd4whd8oiQ1VR9p1hcrw8Ojb05Eb/aih/ZOlQZDCRJspktQjBXbYqBXP9OHu5DPHHDuGpP66ZVBLbo979MunYcGwacBPecXWYyCfRBZZ634Ytgi3fF5x93CHMVhul2jSefXQ7Iw1Z0jtX2VMejvUMVg50OzwPyrl4vSTZlVE+T2kfGtPckZiNA5VpKRz3EhF2jhHNTGayHp+oxPKv1ShVNULHqg6fpBzfZ9CYHcdRypxHvMSoRr5myrZjp3KTfJby/+vMH3HJf9A0fR702ms6MQKhCCj5E6joJEE7lRuQVachnyPIg7YAUZVkUvIqJHDyaCMui7Ls61XtEv1iAtIdehoe/dFxWUzCdtlqH2uC3/5nmqeTdE3w7nW+0BPcaTxf6Ha7arExzw/aLcWbCmMS/c3DD/DjE6b9Es0rTAyFGcL2y3EitnhYyUPkFtjHt+FBzyOAIzbmOY7g0ziySCAMCOnIFY406gQf1cl2ehmQQEFg+aQUJfSbzDIiriauOoNxqpFbnoKVoG9Rzc3qyg4r71Al+Lw+covcgM+LCGYTWe3DwupQZ+cCCogpvl3kRlqi6jnKso6rS4vUYjHxBUlWnbStfT1Yy4HNmQc9yAiVZimmYQq4grD/EAacwt42//5+NGKpipAhGal9D9MtlNtop07vIfEHKNfVxoLODIfVSmNrYVHWXbBx5ylbnq6qSN2pDIzsrRmSjqc7dp7j8dUt2k8u0d8QDGH+BuvB/A11sX7RhNoCx5Jok9QjhARy1AcsW23htsmYSKnNqET7eziRyHs0S1//P6830vVPUm/8kI7QOXpNKAtHD77Zh0DQ3TZC0D3gW8Trtfnt+gxHm+5WrQbyv9tqoCP37zVAevchbfJnZVhQb+RjmkDHgoPiAVpr91hYvcuJd+dl8nKfKM7swGqjERnqtzXIuH6nfUnS25fo22JGU9TFvUxWFGllZwJs/91X2ni379DvQoYkX48JZOye/BVzd/NXlAtdBO0On4GyJS/FzZstMgMmJfLO6nyc0a+afYWMwkz/bPJM8j58E5IsOaN+paQinYP4kx+IYJr0uCJRzre2BL/+FXTaF9Ig01Q8hDIdJAE6ltAuTLiOEi3KZVYQonnyq5sfpTNgyX6EVTvbk9iefWAILj9GNq+R7+FpeXodQXJkefONzW+D3ztCbm8SyjEN27ibVeG0oL+12OhPmAIbuz8S5p0wmEpjF+Fw8EqL1GkXbY1dReeCcgq6ACmM9HhbwWXe3L/31NG1fKgx7noPrR6vWFcpfeIJhOqIhRkHMyaUhS3tHle3ANV878Enz5+5Nju+fCIirx6/vvNVqhvEsmSNLYZ800DEVsaUrS62cH/pyyD/ddAfm+tPG38afiVJewMcz29pSS/yas9QI2jTZCcvbiOyI8bWsqnCXvSXPfL6byPbTMQRmU9UKx3rAK2aS6nkwbDF0UTMaUNVKP3CBYP1UR1cMMeqWaguGHKcslSOkmEyBD4TlPInr8UtIuokRFVkgCEcHdqW7fffZ+SHf+ODvcaichTRQZiwAvf57/Q7QkU4IlyFvT+1MT4YprD3boNDifkB7Hmhk2oUgyQWxx4CfZAghOjYySnEMFA603cBoYSPbiRMeDuP9JRk+RhotI5y6VJpts8z8xU/UMjLlwhJg+4qaoTJSOLwvT+FPyU5JEaoPEg+RyTiOpS6UUpVcvUlSBmoi2QwcIGwvIJjnS9dlSRl01JyYFjFcISBzUA3zBSm/8lfWyBJS5Z1BKMYBqfANuk1ipBlTHlRwYq6GCuGsMovNRwcqCVf/hHECsryiiQrrICHJQpEUihZW4P3KIxKquiQqKtsrigi+xWGURlTnaqGRV4I8UJVD/EryLcY3FMHw/27wme2s1ODgUEt8gBuO2oGUFC+DxBz0S3euaUpI7Nktnv9ftwLdHmJfOlLxClFlrd62z1sXufq5r/IW7IsSCRN4niMZP+ri5s/lu/mWlgHWVkcX6z9TOIdB50f9HiNOkqpJzEOJj2LBc93Ynx2J9YigGql2a0B/b4Nhbz2Wr68rHD4OSIF/RvMb6VE8qHQxcfoF0CZvv6Npy7uz4ymyzkmh0FbHGcQImS2+d8Kgsx942tk7cTvignKTWyQrw5EJxMQc1Cy+U8QUSu/8BVQPDNT3jDAzCj1iactmc83vgv31aTvQAoiX6/ifQU9rzYkNH5jNzg/1M4oCqNkstV1DIxs7yHdwGN1M5A7uSBoMvZE9qmsyRtLsd2WzqRljyjlAUeddkUVb4DQ+GKhsrQDB7+RquXAY5IxPB4SrTCo7kBmorKresD0RxIBR0SbU0Wm4Mn6H1zsUwYGqF03UfUxhX9oOHHssO3r8Hyywb6fN8jCGQi5Ic9P9VV2vbH5Q8a5WZA3AnP23wJ79B7s8QXhOeEXwR69+MJzl3bp6Is6eF9Td4HE4zBAkCF3fRW/eDcHRo9MwUlB2M4h97oca7souLJCp/Xjx0rIIECD8gz5u+RgOXhaIkOPJ094ttKCm6cOM/KnC5ZiFndfGAYxEQ8klGQtFo3YZzJPtkW+aOrg6NHGI+a7ma2vwAuRR/efNQw9xxRlvuyY6foYMTYMskZk/0hfml5SRdKi3aAGhxOTRUgqRKIm96Syvlcp7k1rlD1CO7LsbgqrMk1WIWLET1TNuQHHt+X1mYZBa0PPw1cwS9HEzGytqv9g1aWbfwtJx9JM8Lx9HzZkBvbiJdDLUznCfUK3GAyybQQjQPfeGDbdeeA40gtvmMhtLQ5TebstwuH21qA2qPMk7tP3jfKYFjesRYVMTYKCyXNbb8l5HKy4XEuUQl5/LsRnetWEG7Hc4v4XLMPo3R7/Zz6+PQZlduy8oRH406Rq2JCNWmasUTuRJOLfv4sqf/d+bD4K0qy+eSrB+6OwLItk4hNLkxeidLjGttqZoSrogFZ5pjxWiTKVWgbhsStkUPRDju8qX5/xQe7TfkwJALGQOK0VhdWnuqWglrZ2GtotpPhWx7vVnOrEbK0a/lDLF9e/ifaLzRf9nGS884ysstCJZ+HWtAOR0YV43CkMqZqnMxoJK0uUHX5YJmLs4LhX3bMzHJqtXVZBrtTb8zAOhnu/x8R4Ik8VLXX4025t4Jk/DBHy8Go4GZHXP+3PHij1SyQUHvY5vd6vw281vHp1Y+RTK/MHqFE6/peZF/saZj0MRkUJfZUoiCckfESrJLM9ntD09nhCH92FJ0SEnxU+Ei1YP3Ln+p/i6z+ANSHBrHfXz4PAA9H2PYeLs5chmlDACcwHi+OBM6pECOeE+ytyhZyHPDwhFJt5lZD9dyW7RPBcrJIwDorYGUTk3z420Z68+c/GSjEnUdFSdxXBHYqmHUuPkCv7HjlZ9ZmrKuMrNfjQhJcZCZ7bd+Fzn+X5f3+zL8mTb4cIy13+HGGVp9iQ+3fqF/hRiLLbLiEG8304oVqLpWq5WIY6s/msyEQrtC8TElmIzif8bK2Y1HzjgeWKy2xdnzmY1EDUvN/wAblCT/J7nxCGmhXGNXuDcao6uBUO1ZmC7zZSS06kJgIpyPzLBFJo1zO7Uqh3XvmYeEiZy0c2KdF7BPQGXhVVS9tCaGFJ0rpSC645qnqHIKnwJtxDkstxTig1C/xrgwR5CUVYzWUh9y5m53JzgSjlbUVZv7+g1Zagvd2JuEzFiBkI+sbWl3vkf2x/xha5/DPYA7/Xda4b1dsf0An6lvB5sC0bRbQtDZcnLEHw2OHHROa/QjdWD2IMOj3VnoKOytF22TlwB8HE+lyAgxBUoQfaOM5BnGXR1gvVp4g4zzSXqITVa5CTgieIyRE0umtLlmOaJs0NuetRUxcvXczIUn1heLehTMQsz3XDmu+GjPJKyMhO6qJdr6Tz7rAh51UbJ1ts346DVf9zJwr2ypKtsGRGPFXDjqM8KIpMMehUXSSapcRsw1JYqUAug+8o9Wdjbv2Xmq4Vd4d8VU+e9lk+oSai9Vfq4xFtJKa8kNlTYhaLeKgXqBx/BlaaIaXmDSw4QG4+Pln3+uDfOXLrHP4E7yO1rd5Xx/cFP7gnQkAPAu+TrxOM/8aD14X/AQ2VZxoAeNqlVNFOE0EUvVvKRjeANiEkmhhHnsC0227hhYLECmnStECghKAvZGgHdqDdbXaHFp79CeMP+OAX+Cl+gd/gg4lnZ4dAFUWwk+6cuXPvuXfunTtENGNNkUXpr0kfDbbIoR8GZ8i2ZgweoxcWNzhLOeuTweP03PpusE25zCuDJ61C9rPBU/TUfmTwY3Ls1wbnyLbfgtnKPsTqg/aSYIum6ZvBGZqwHhg8Rm+sZwZnadZ6b/A4rVpfDLZpNvPE4MnMu8yWwVO0OP7V4Mc0bb80OEcTdoPWKKQ+XVBEko7JJ0WM5qhN85jLVMJYooJGHv6M1klQrHUDrFrQlJAEmAXlIalr7CKXtzF7tAjUwA7XXFXsceqApwcrWgv7F5E89hWba8+zcqm0VCiXvBJbF7E8DlirLUXQFnlWD9qu86uyt8gaPg9Ytc07oge2Bqh3Qb1PB7QBLOGSGnxX7B9scAlcR3ycuthoY6F4V2Ku4QgBNpI5wiGEDt3Viajo4H9nLYxS1cJA1cLoWLCyW2IVduWzcOnlH1husNqDRaRLEer0eYjLo2UghXEE2zPMIdIr9RmS5A+01gJKQHsiimUYMM/1lplSR/xMhb4MkMCB5y7M3zequ12n/B0uVMKzQkM9XFwRDm6fTjCfY53WZxV+/vfijfo5NVp8ROe6vzw8DuEpiYbRjj5NUpkBvh1ILu8Qo00w9PQduim3Scs4kCb1ikfsWkBHQENoRto+1UirkOQqNr7OgDvaO9PxCG1dxyPHaAs5Efq8V8zNEYYk2zffKnckslG/DFEN9Bm6+B7im8iuMsK1xypta6zQN46uiUI8FSpixGBLatWHLIavWHNd5riIyGuI9E8PQv7GF4HNrQyHQ7fHlX/Cz1004Or8ba+EsTmFiKeS1C7vDKXy2Y6IRTQQHZa0NNvkPXGtmV3H2fVlnO61wiM15JFgEKArRBDD6izoiIgpX7BWvcm2+iJIlZupQp5d60g3JTO2jA+47PLDrmA6EM5q1W3GVcXxlepXisW4Hcm+it1YdpOIi1s1pOteOf4b4b2e0J8RwXGkAHjabc3JLkMBGMXx/3frtmjN8xgxz64WNUdLb82K1mxxhXATRYInEBEb4QmwszR7FMQUT2KoLp3k5Lc6OShE8rWHk/9y8FNBwUIMKlZiiSMeOw4SSCSJZFJIJY10Msgki2xyyCWPfAoopIhiSiiljHIqqKSKamqopY56GtBo/Hl10UQzLbhppY12Ouiki2568OClDx86fvoZYJAhhhlhlDECjDPBJEFCTDHNDLPMMc8CixiisM8Re7xzzAmHnHHOI5dciYUnPiVGVLHywitvPPMhNi4kVuIkXuzikARJlCROueaGex645U6SJUVSJc22u2FqmkeL6HS5/+xti+qJ6lX9RjhsqMG1lR3DOmyEl5YNZcZUAqY6aa6GDVtoa9tc39ywBNZMS2Db/J05GzX9V5+u90X1RdW/AUjkSgYAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKww=
d09GRgABAAAAAJswAA8AAAABE3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAACbFAAAABwAAAAcac8ALU9TLzIAAAHQAAAAUwAAAGBFv1oVY21hcAAABHwAAALxAAAEYsE2ouNjdnQgAAANmAAAAC0AAAA6AlQPgGZwZ20AAAdwAAAFpwAAC5fYFNvwZ2FzcAAAmwwAAAAIAAAACAAAABBnbHlmAAAQEAAAg5YAAOr8q6ZdnWhlYWQAAAFYAAAAMwAAADYQ75mDaGhlYQAAAYwAAAAhAAAAJAhtBxRobXR4AAACJAAAAlYAAASI2Rw2eWxvY2EAAA3IAAACRgAAAkaObFJ+bWF4cAAAAbAAAAAgAAAAIAJOAmluYW1lAACTqAAAAx0AAAd9zkloq3Bvc3QAAJbIAAAEQwAAB2IVku1vcHJlcAAADRgAAAB+AAAAipKM/Mp42mNgZGBgAOI7q6MOx/PbfGWQZ34BFGG4NkNbFEb/bfz3gZ2buQXI5WBgAokCAHAWDLsAeNpjYGRgYG7594Ehit35b+P/fezcDEARZMCoBACktwaMAAAAAAEAAAEiAKwABQAAAAAAAgAsADwAdwAAAIMBfwAAAAB42mNgYlzDOIGBlYGBqYtpDwMDQw+EZnzAYMjIxIAEGhgY3gswvHkL4wekuaYwODAovP/PrPDfgiGKuYVRQIGBoT+OGah7F9NqoBIFBkYAKpARZQB42l1UPWhTURT+7r2xgcShbdrIS1+0BkWbBocs74EIicVih+rwMooOlYAOog4WpUOFBkXoVJ3axUk66OiU0UVw6uTYzUydikPx7zvn3VcfDXz5zj33nnPP+e5JcIQ2+DHL/DoiV3HLHKLhuojJkbAroan+Ae4SEf0d+mL1LaPsY+T8JSIh2kSTCHO2xM2rLecJ5kgkj7D5zrto2wPM2i8I7R7tX5ixuwjsJgI3oXuBeYBpa7ku0f+E/A518WvsLmaU9xnXQsQcF2SPqBQKmCSfIcp2hbVU8UxrrqJKfkxA+mbclBkqN8ihaaNGf53rgGdrpv33qx3nGdrUJlA/+5Q4+s+b19x7Qx7wPu7RV2Edk+Sy2JrzEF3GrypTL9V9iBu079lt1XFL+5A6h1hzrzDLtfq4N8V8F70dah0/sch1XWrzvTwlJN834iFxh+du2wMz7t/nBfD7perXxRW96zN130ZT9drTtxD9Ys8t0cf9+D8n+OCRqG5wI52djp+FddGStUv9UeEtfRWcBf7M2ZB3ML95j6JdwwLty9In42U+Jsix52xdF9tD7UI/Rc4fe6jNfOdy3BDmW8BWeHcrnVPpm/32PGQOe17TDB0/s/IbuKlzOlItIv92G4yL8mBPqhv3lbWe0jHiHBJFVnN6d3KSJae3O7SvCU7kibM5UQ2zu1a0vtP+LZzb4NzSlnc4ZTHgm3wipjPOdDQ77Jtwz3GVcbVjHqVzkEOo/wMDzm/Kj5R38FHix5YQjfXRKy6Ql7juIy5eV444X2HWn+GbCHAf+AcAHtfQAAB42t3TeUiUQRQA8LffZ6tml9phpjnztt2v7NTusrRMO83S7kvtvu8IsyIqtMvwqpQgrKhUtFaisguKwor6I4gO3fZ9X3dBtEREEd82TRYREfR/A/PmPZgZ5gfzAECFHzMMLPA9nSErS0Pto8bJ9Q5sASuMgTTYDKVQBpVQDWehBmrhEejwEj5boiypSl/lhnJbqVfcaj+1SC1WD6qH1FL1qHpcLWdW1pi1ZG1ZOOPMwaLZQ96cB/JgHsLDeG9ewo/zCn6ZX+V3+H0EVLER+mMABmMotkeGNrRjZ4zBOIzHBByBSTgOM3AeLsEs3IY5uBdL8BiWYS3eRA++twXYbLZq+2n7eftl+zW7xzHHsUJ7o3m0L5oZGRvp9AghpIpBhtSckBrnT83DBs0nqUmRmlrllvJIeSw1hb9pjqllTGH+LJiFsDDG/qLJk5pyfolfkZq7UqNIja/UBGErDP+p0f7QpONcXIwbcCtmS00+HpGa61LzTmr8bGhz/qZJdyzTXmvvtI8NmlMer+Q8E0/FVXFR1Igzolo4xVFRKHJFjlgvYkXE1xjvSW+V97C31JtovjXfmK/MF+Zz86n5xDSMHUa2sdnIMjKN9cYaY6F+Xc/V9+i79Rx9u75UD9Ktug99oPf0ip7TBTpPNXSOzpKTTlEVVVIFlVMZFdM+KqQCyqM9tIuyKJPW0QLKoDSaSpMpmZIomqKoCQW4P7p1d6orxZXkGuVKcIXWV9QfrutUZ69jdREP3A+WB+KPH/j/DIsVfpEsigzKnxtkv/k0svr6+TcOaNK0WfMWgUHBLVu1bhPSNrRdWHj7CMbR1sHu0Dp2iuzcpWu37j2ionv26t2nb7/+AwbGDBocGzdkKMQPS0gcPmLkqNFjksYmjxufkjph4qTJU6ZOmz5j5qy09H++8cA8gNmwYOn3fI5r0ZLb890EcFFW9wB2LlsBMPeW7HSAkgwZVq3OL9i3v7Bo+a/zxX+7dOXajZC5IWvhJlj3DfFRNZwAAAB42q1W+XPTRhSWfCROQo6Sgxb1WLFxmtork1IIBkwIkmUX3MO5WglKK8VOeh/QMsPf4L/mybQz9Df+tH5vZZtAknaGaSaj9+3up333k8lQgoy9wA+FaD0zZrZaNLZzL6DLFq2G0aHo7QWUKcZ/F4yC0enIfcu2yQjJ8GS9b5iGF7kOmYpEdOhQRomuoOdtyq3c66+ak57f8bfvB7a0rV4gqN0ObNoMLUFVRtUwFElKiru0iq3BStAan68x83k7EDCiFwuabAcRdgSfTTJaZ7QeWVEYhhaZ5TCUZLSDgzB0KKsE7skVYxiU99oB5aVLY9KF+SGZkUM5JWGX6Cb5fVfwSaqcnzj3O5Qt2dj3RE/0cHeyli/Cra0galvxdhjIEKebOwGOLHZqoNmhvKJxr9w3MmloxrCUrkSIpRtTZv+QzA7up3zJoXEl2Mgpr/MsZ+wLvoE2o5ApUV0bWVD98SnD892SPQr2hHo5+JPpLWYZJnjwOBJ+T8acCB0pw+JokrBg5NBKyhZlXE9VTJ3yOi3jLcN64drRl84o7VB/ajLrB7Yl7bBkOzStkkzGp25cd2hGgSgEnfHu8usA0g1pmlfbWE1j5dAsrpnTIRGIQAd6acaLRC8SNIOgOTSnWrtBkuvWw2WaPpBPHHpDtbaC1k66adnYn9f7Z1VizHp7QTI7i/zFLs2WuUhRum5yhh/TeJC5hExki+0g4eDBW7eH9LLaki3x2hBb6Tm/gtrnnRCeNGF/E7svp+qUBCaGMS8RLY+Mjb5pmjpX88pIjIy/G9CsdIVPUyjKSSiOXBFB/V9zc6YxY7huL0rOjpXpcdm6gDAtwLf5skOLKjFZLiHOLM+pJMvyTZXkWL6lkjzL8yoZY2mpZJzl2yopsHxHJRMsP1CiQuYDh0oaPHSorMEjh95VBk2XX8PG92Dju7hbwEaWNmxkeQE2spSwkeUybGRZhI0sV2Ajy/dhI8tV2MhSKVHTpeYoqJ2LhMcmeDodaB/F9VZR5JTJQSddRBE3xSmZkHFV8hj7VwZKyaG1UXrMJbpYSvLmoh9gDLGDHx6NzPHjS0pc0fZ+BJ7pH1eCDjtROe8bS38a/FffkNXkkrkIjy7Dfxh8sr0o7Ljq0BVVOVdzaP2/qCjCDuhXkRJjqSgqosnNi1De6fWasoluDzDWMRbR0eumubgA/VVMmSU0CP41hSa88kGvIoWo9XDXtRfHopLeQTncCZagiPt9cyt4mhFZYT3NrGTPhy7PwAKmqdRs2UD3ea+2UsRzKB32GS/qSsp6cRfHGS+2gCOeQa++E8MkDGbZQA4lNDTgF4TWgvtOUCLTaZdDgyP2eRRU/tituJE9Kmoj8GynU+6FLqT8OsdAYCe/MoiBrCE0N/Q2FdA8QjRkk5Vxtmo6ZOzAIKLGblARNXwb2eLBpmBbhiEfK2J15+jXN03USRU8yIzkMr45sMAbpibiz/OrLg5TuaGkqHDUGhjMtbCSVMwFNOCt0Xb76Pbmy+wTObcVVcsnXuoqulbuQTEXC6w9zkFaKlQB1RtV2DC6XFwSpV5Bk6TX1TE0MMNfoxSb/1f1sfk8X2oSI+RIvu1wYKPPwRj632D/bTkIwMCPkctNuLyYNie+7ujD+QpdRi9+fMr+Hcxcc2GergDfVXQVosVR8xFX0cCnbBinTxSXI7UAP1V9zBmAzwBMBp+rvql32gB6Z4s5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZgPeUEbQN9qdAvoO11PWGxi8b2iGyP2D7zQ7B81YvZPGjH1Z0W1EfUXXmjqrxox9TeNmPpQ0c0R9REvNPV3jZj6h0ZMfayeTuQywx9PbpkKB5Rdbj8ZflOcfwArcU1jAHjaY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZ2Jw2STAyaIEYm7k5GDkgLFE2MIvdaRczAwMjAyeQzeG0i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5uVg5NHawfi/dQNL70YmoD7WFBcAd1kkywAAeNpjYMAASUCozqDOtJqBgWkb43oGhv92TKJA9sH/r4D8A/+//jcG8QHH1wveAAAAAAAAFgAWABYAFgBwAM4BdAIsAvID+gQwBGIEmAUUBVQFlAWwBdoGBAaMBu4HlgiMCQQKEgsGC4gMNg0CDVQNug36DjQObA8gECoQvBF8EkoS1BN+FBoU+BXEFkQXBhfeGHAZKBnEGkAa4hvYHNYdrB46HtYfXCAiIPYhnCI2IlwihiKsItYi8iPsJKAlMCYQJo4nRihUKRopsCpuK1IrwizsLcYuIi74L4wwhDE8MawygDLsM5A0XjUENa42MDZSNsg3EjcSOAQ4SDh4ONQ5QDmQOdA6vDsiO9I9Dj4GPmY/Bj9yQJxBUkHOQfhCHEI4QmxCmkLUQwpDaEPCRApEUESYRMRFKEV6Rc5GGEZyRtpHaEf2SIRIhEiESIRIhEiESIRIhEigSLxI9EkqSY5J7ErES9JMIExMTIRNGk3UTkpO2E+6UGhQqlD8UTxRklH6UoxS5FM8U5ZT9FRKVJxU7FUYVUZVclWaVepWRFaeVu5XRlfSWF5YmlkOWTpZxFnyWjpatFsGWxxbUlt0W5RcAFw0XFJciFzyXWpdml2yXfBeIl5UXpZe2F8yX4BfvGAQYIJhEGF0YbJiBGI4Yn5ivmMeZBJkUmSWZOBlKmWCZdpmQmZ4Zqxm0mb4Z2BnsmgeaHZo3mkAaSJpQmliaZhpzmnmajJqimrCavxrOGtaa3xrnmvEa/xsNmx+bMxs/m04bWptnG34blhu3G8sb6pv6nAocMBw7HEWcV5xpnHocihylHLyc0pz0nQodKJ09HVIdVx1cHV+AAB42ry9B4AkWXE2+N7LzJeuKrOyKst2ed+u2pRr39Vm2s707Lid6emxO7uMWcOwA7vssthdaXcRTghvhBH6f+lHAgTsol/A/wNCEiCQQRi5X6eTTgjBIR0n0MmwPRfvZVZ1dc/M7nL332F6qjLjZWXGixfxRbyISETQKELoSySIBCQj5SkqYkSG+6tW1SpVrdzo2+4cHSXBZ74/in8DEbSBMPo98lVkogS67SmKMcJr6x/L3XaiFYUzAsLCVbhacF3EgkC2ECEG2d/TCiE4eT+cxPd3Tlhk/2bL4/P5Er5EXzEr0XB/oNaojoaCNpFpLlsqkkASB23nc73W2MhFI4UyJpaf4PJsNN3jDdjenhx5azCbCcnbC4KiCPizz3yfpHrypqqa+XgabgXuOYtfhl9MnkY9qIlirbCA4a63CEbIxPsbtXQyFsmKNOj8ejjEflGmWfjFZqNZy1H2+8Xms5zLZmKRYDJuJ0xqe+bg+USvL5r76k2PkoejuUB2ZrrRmzADguiZ3/QQIudiNz3K7n3s+oygwr0fR+fRfGtWJAQZXiJRJN1hegjVVSIrVD7Pnslc17Ci+JX9505vnbj9yKHb9q8vzM9M28HRQsOu5f0+moBnbFbh1tnDwKMEZfcLfzD4xv/txya23afNyc4zsgeuN/d8Y/9WZ3GtHxelGh81iZtjxj/39Yqix0/Kvfiz8JFq1FvqxR83NXrmrB188f1UM/9553g3ieH7jB28dr8P/wWjhP/jLa/83ndT1S++7S0SYZ9UWXszfJS9HknYfwALVHcoNDj+Zkq6PspeUwIKiWL4ux+BbDavfwl/hvwjOojOoEtotbU0kogKAq7qhJI7VSKieSyJ4hoXUySJ0jUYQ6hALiCKkEjRBSSKUXH/xv651sz04EC5GO/xA9v6mzbwLBgKh1LYKmUruFTk8gqsrdarwTCcAGYbmDOuUW3Wi0OYHWXCTRm7g7l6DoaUau5kBGq5LNAHbUYTroaLuWwCz+Ba8YPJMJXk1AFRxJIqnOizZ4aDJVLxHh6MC1hMBMKpZFhMnBDN3ljv8Np4jyZU6JliSsBKSlaDyTkiBnKVap9ACZlUBTwwXf10KC2Y2pSCcRATgu2jff0zp8K6Uqlg72T/uCUFQin2XGRRx/8u6P74ufrylaA2VPFPVFp+KaUIWbz/Adk7WS7NejDBDwuPPaavntsH604E2f2SoAC/x9E6OoWuopXWPhETJAlEugCsRVRAjLVYpvgCqB6YOPUC0hRFO440TdlCiqYcvOfKuTMnTxy+bXlxerI3VxrI6DTaj5lKqOAhHHKWpKsguFjDoVHg44wEjJRRR1wDM7hQ5GwFroYmMdDUa4H2mPZFAkWX8+EdIrKvOb0wz3iGiVYqNFK529aaHqmUWr6dTsinx4lEBEESVA9+5hlFpIpXwH955UXbHw3EbCvg8dp+WwwEhv4IxtBqqeRc4LPspK1JeoHq7Cx5IJoEqcOilB09MT4Waj5y8KpKUrNeWNVrRCEixob2k/+QRI8iSgJe+cVfmQ0EQq0H5m1/YOj8Hduegy9USXPixCYbi72BQHi8tRBp+khg6I7ziMl+3/XvkW+D3l6DmbgPfbMVPIIxubs1MR4O+GQJk7UszN6qo8lzSFHQlqvGgWxLANnwratYkuiWjCkN0f096x8bANIMUCkEKRduThjlhKNAmGoTAgnQSgRf2E3WKtyUglLpeIdQogc3NzdbofNnNw4szs9M1avFfCaVTPTEChpT4HymYT4ds2FiENxmYxbXa8V+XK+GqqPNahCUtkGYHmNrCw41mrBGYXHCouwIS5PJAQ3abDho/nqtVBRsNrxRLzK5IyAjv12q9dZNNdNn9Sx5Sxe9SmFfoBSVVP+Vw15qbsSwYtKVioxJVq70FceEsnSwdeSARz94Yv+VmHzofYKcK4ZF5YiGBfWPxwZaM4ogJDZipmYlInjrrlNHar2Cul5N5hqr3vOv8mkjD6QVK1ARhIqUx96o9siEikmGFut5RZ1cF6ZVtXVqbqCo34bvx9OV9WVTPd4kqmBY09vK7IEKCKnYc7mS9FuJOjPGG/hl6BvcJtotCzGDiLg9BFtIdmyh3aXwO/ZuIwuWLdEDlk0QAx3TluemLfOK2l4bhtGZ6xQfAD0QQVbLgO+gXRG6HM8QGuqXbLAepaLFfmAGN11T5AuH8AG/Vw5+MlG5LPsFr4fq7363/kOV+j+Exx6+673nqClQQdQ/9MybPqSz32jCbxThN3r4bzhoA1+Oj7DfCDRHJ5mqsNjjGFhmDwQL38dU7pQoSZ7O73g8Mtbe/W4Nkx9g+KntL73swi+ynxIV7PkAefEHPFiBS7dwC38CfmseDbcGp2vlZCIsywhPNcA4kzX+gAJgKLgFQi5jNDHWEwXTMi9Suz/g8rLo2Ihmg0lhrVifwfDkYRm+h1zRdT5wLZfC3HiUmkxw7zSDevVoMj8vaiFDF18E5wJe08bGA7oR0sT5+aNVnZ2Y7InLMg4YZgAbodmkQPE7w6ahxoqGPykqvpBOKTmC5Uc9ut/yvO12SvWQTxGT6WJMNQI+ODlg2+vruuXzvM1XCWNAdqDPP0K+TpZRENVbo6pEEA74iCi4j4xEQbwGqEoQ0DEGroRNCUYJB/z+gD/npzTW36g1M3W+QK0MiFbGotmSlRkzcD/WVK+M+0xz+1tyTN7+5g9i8tve5oVvSkTZ/pZh4D4us9dn0NfRQyBHw08FupAnCADCWzDfBgY90vlm4f2bT0VCXJ4btTbK6cC3epZJ80YmVswRY9JQ/NoMxZLXiOVG862RgG+zZfhFSZvd8giU4UiMdPQJHEQ/AW2abPUgtmiOseObhN3LAa5mBUtggKCeCepY+8TqKh+3AX9/D70Uaaj8nDf8ybyfiSxoHXa7znKr5fKRWG4qls3BP3nnXsZA3hmWMVG4ZXN5h7vAl9kiRmaY3USYPScCdiexbIMhXJc9+JQgeRUP3v5lSf53j6wJnxU17JGln+zTNJDX0vXv4a+SdyEbjaCH1j8WhzsNgghz1eBdh4nldxnCTKezxwgwdA0Q6cLuU5WbnYqyJ43sHMVYOO6eEzDT6k8PhvsyIo30B1wrHnSVDzfthSKzy7INStnV20xbgGYu1iv43Nj51WZPoNAfb/T1X6v3RzFOHE2GfGCwRV+op6+3J+QT4YuPrB4ajfUd+fl3H56IBS8ffvfph2bT6fD8ITofOldcmg4lk6HppeK50Dw9NA8sPQJ8/TDwI4NOtUwPqLm4TgiIewyLKw4HwoByBFgCF8CCErQJQAZgjYHgUW96xkLg8pjAhAzKjGdKGSujwLLIMNCRqzPz0rRAKNlnBh4bsE4CoUkSxO+33vA6yxObsBQfoZXxQODomN9LbBmbo5kYWAQB60QS/Lgi5DSvQLe/uf0Ns+LICfh2+PPwDE30sad6AHyxNcMmNg1Ylk+Md53CYpW2kCQF1mG2hU2YFkNgE5kEuiRcQ5SweOGWVIwP8TYVAriNiAS4rovmWU5bwn5m0QMYVUcG+lIJ2y9LqImbcltXsmXblgUThxmPuMWWgxm+ihtcCHKMbdTmS5zeF0/fu//2F3lJLn4s35rc/15NpKJWjm+/nuAj96YW9s1M5GFmpGgqg389H1u5eHrdb05U+1ZT02NYwrY+LgifEgK2gM88VNraP79ZE2WJ5CPRHDwG4Cj8ZfJOdBRtt4wDGMl+wCgDWBQEl7EVBQ5SGdGrSAAfQhCvAsSVBAqQF/Sxw3HgPXeBQ6TNwIEbR8EBgMYXOqN3jan8VGOizAcfeR7khIjH3UEi4VgrjNHK0uz0WGNosJhPJRSKjuKjamd2ms5aZTPEIJXj1Di+Tqno6lxmzZhwT2PAUUPEmVRYvgxWcbjNrB13hl7Zkzo5aebUTHbeElabkkSU6aOByL0L8y/wa4VYPB8LyY2lZtxqmZU+Aby2eHKgkgvGRouiJgiCaPdk8B9me8YPyFjyZaY1a/K0DWqRWKcne4vVhbGh4Fgu3xPOSmSwnlm0z6YpnGTgQqLHp+dCRg9RYVUAZAtFMqAP47B2vk1+GeVQCb2k5SuEiSTqmGkAH8iJC5ZT4IKDVINPI5wH1nnXZb7gNaWjClIg++L9XWTdFFwlhPOg1fOlfBF+Klew/KEQqAYPjXdUA5fzacysZ7MxicMW4FjmHobC1WDJEsL4D4xrLzXUVL+miHj7mbe/k5CAn546hSVlJPHxv7gXdAQWwY+ojVb+/ruY0O1apdprSDKu/Ane2P4EdnUFyDbTFSv4RMs/CHI9imWpCrK9AAZOdOW7CnYeCSK4cxKSFUm+oMFoplhAjCi3EsxzU3xMS6hbSFVDalvIqwgYff+tx99i6MD/k6FRtb1MRm46FCnwVRG6LtE1sNV4vmNUlRx3RxKVLZjNVg9GM1ON2nClv7dUiIZtv0ejEvB0RYdV0+QLoh+DvHN3or0EHDMH/6s2qty6wRJJMDd3CAfbHg23hQyzshV0dySTDcqCOdO3nAr0xIobZVHWLfBRwU/1zy0uzymScuiRVFQbnwqEFo698vTsQMBIKjj9rUw0nJbSfVOFrYv5zKIsUPHDycP6GKGxuOj3nqfk1yqS9cDBrcdynmC+LniFeBrWAtN7XwLZqKAFXHiKgi/GLIkG/C2CpQPxuMTwzxZMBMiAJHFFB7MBOHJHaTHxKTnU+OpzkzORKXTIYa2ILF5wC+KB50cc7WjP3A3EmFkn6UI3aat8aypC6HGXlnJdCXOvlQp2b6Xol2kPc2vAKgXDrkcaDiUwt2KyO49uwILJA1OlYW7EOLzh2nGa1Ir4JaHy0tAQVnqXKrnIsBmUPKP9dV8kYK4NTO5fbMxOLCeGE0J8oBAe8WjDmWqPqShkMyRMzT0peqcCRj05MuEP25O1QV0UjPnT77vng4PFmUY0GY8OfjcfHrl3M5vsKwYnmj7f+ARy/Kjv4b8jHwLccG9L9wI2G41xzNNGfIDvCRYuOIiw2xoFXKfLPe/yL+YchStcA6An4OMwG2zasQAca6m9pWS8GhSZjwZ+em0SpDyJ4a/rogPeS2A3cMY03yx2DD38N5hrYp/PtpPrjz60aBZtUtNAc4spfyQhmht2q3L6I6ooU4B9ZfwVcvfdRNQMsXQ6WI0Lh57oXTYSqmpFMgmz7/En0puzlNh2jwXQlIP4fm7j34WSgIOX0GMtdX7QD/wjbez0/yMoHhobKnFQXAFz2XS8xG4P0cXHhVqx1JafUAozaIxtHtzgKoZ7kYxtvzZS94WONRfv9GBi7veMkfUHN182EcUrY2U5Vs9H89LkBI7Qxva/3j7eu2BZOWXdyKiKZ9ZW8MH00nh/YrC5PEb9IWV+WCmSqc1D107mq/f+W/+UgvPhdH9UKhSxSfu3/3zyQLYnlujPKCNqEHRp72TMicW39UgVraAvtzQTFAn4yiJxWQtLGHwppnMp/MPiggAC2GoEVrsKI9RBnbkOMYFFyYKK7UG7SCvPhzQqOKv9VlTg1R53aZHAkZEWyWV7B8tlttabDOQwe8xBPFhq2YlQ8jU+iycYAHJ9Gi7ONRbl7cQamchzOFTBvx60REMMZwPycKYk9a7dNpaIpoq1FQA3qhBUDlX6p3IXGrMH6uHEXZq/2BP0StJIUWyMKFLpXDAOEqRijXhGx14rK4v78ou1ibViTQZI4z92/Oded35sdvJqHP8L6QlNry2Wi0PSxbWNbKLC93XAR8UfAR81iE467A22w0LcqnIuOYh/4OYnLcZCJuNte9o+CnKct/N+Lsc7fq11o4vr/oPvd13d7b/p8nkJ9/+/wu8xh7b+p9/jp3KZPLvJcPdN+hhWbYcNSkUWpCI5Kmfbd5yJzYlGQ6V+gvVBDeAdDojxnfv/Ui33orh9qKX6ABmOzVLbJ7hY68j1PyVPkzhwe+gp8H5wW7fo8DHAZD2EnNAARtfYIRYaiPidiBnN5ocwU4nIiWmAexIiT6vG9p+/8U2yQqYNWZW3//Y/SEQOUPO1i/skTZew36QKfeLB69Th5Rj6GfJ1/ELgZRhleXSWceQ8aCKBHHO9MyIcCHfmrZlhPyVlikH4mBTgc6Y4ZpCXm8b2F7a/4PORR7AsCOYzjxps00b26gqWPmFKWBJkEb53P3MU+Vtm0EfQMvxsAO3PYhrs9zNOiynMYo5ezPeWGoVmsZQvgbsh4+Kb3ijLZPuvtv+a+gURp//16hPbfw3a3fCyB7Ql8uQTxC9R6YkH6nNPSM4zNoFx7yefRxOga971VB1MUztiVEDs6RCBhc52I+5rK+QgOMOSJG4BkDfEduj6VsTmDrEFxKBj9tA5+6EXuqlAb5iTk5MrkysLc0ODt/tk4K3fNW+jgOw7e4zcn+LKnSlzhgewixUlV/Xv3hx9rJKaKg0CC8SfKZvNM8AQUdBB2rBphxJ+zR8dHitgQRSAZfBP78zO9ilJhFdyMQkfjKdm+xZORYpxD8ESGZhq9falA6m8t99vx8F2g4uL4T96b3h7s3uLle1R/ph8HfjM9ni++an77tWAts3pJhI0cM7A2QTPE/xPplo1gWgXdAz2GskiuhNUPEfeQYbSOIyPKm29/VMMN3cNb9VvGKkiiaig02+8ws44mB//5Yvnzhw/Vgj0lcvZ8XLeQxP92DaIu+XUhd+c7boUbut2R/1zg9ul2/kmwyyutjeZ2P5ge7OKnS3s7Dmx4bO4XiqSr6uh4dy+GGO4JFfmA/TVWblQOU4DJ5pCJMr3RxS/qRVzwyenpqemDpz1hl9+u52ZftOIPEmPPPSKA4v7X+DBH3+lYu1nn8j27+umJlQa4FDonlqG0gw+Pby8mB9lTJBoBSdfHc9s1FYtfAR8YtV48Ru9ATn2s+fWzg4kEsW3X6xWjjzkE9Nh8BbU9EC2+ObzWubNv+fB8Olc6P0C1q8sHBmtCcaY9lVtjK29NPz5Gvkq2Pkp9OKW0cQ6KWCskDWwsMuOaKSRjhSsK6B0SHBdlZl8oU3mLYmS6zqDdOnk/jbdXhLuO4cQmhqHn6mODNvgNVulRi7jhSnrcp1jmDnNMEX+sOMy59oRt3ptCOdc1A2wM1Accnax0XX/+U2PbK7Y+NJFLPhUW8SfDwuiXkuq5tVXm5p3KRL5B9sWaCkkvSMRskerd72ABeJKAq7jKlYwxc/87jIVNcx2bPxkZXlyEm7aa1Xw1vHW5NveznRDHHj0c+TDKA882kBvbflGWGzMD5AoHyQCFdwllAL/kwoSPS9iN1DMggxd6RXrH+u9KZm5Q2YxMJ4AMAPuC2aOkUPafR5E31pfmW+B61rOplOJTFZhuBzEFTgV6kR5TMyElgMZJ1QJ+gkD/OzDxSzNsi2iBK7OYpDjGRyoAUNzO7upM/hRLdCb+fKXvY3sRNhzeF5busuLifeOfd5vfSvTG9DwI/U+HAWdHyNeQThyVBNkWhqNTQ3ddScGf+vMSJ+/v0ruA6hfwUS1weGJV4/5BGVjivrDyuRRjcAJYPoXhxYVWDqy+PKXYwIjjX3b3x+/TcdP/hyRiESNNTeG/n3yLtBbs+ivWnYBeFNMEEGcxkAhrOUwdoO8RfD6qSjQq2wHUqSg2FnolIXbg8x35QiDWWtHY92a2uxQR1HbtuT3UrO9BNCeLFS6Q9vqfRYyhKTjLrGEODJlEeZZNFsqJrPxIosw43DQwF3Kh8fOATswxcX3OEf5poycK3KCLkeUOxBN8hYq3XMskS/Err7Tj7H1rqvpAPEIEW214U32iJjCNNEsxerGWCB1aelgMXVtefUeDzjKmJonXxuSaehXHlGzGe3hXw1TmO+6p1SAUdvfpVQ//NKAvHTwPz+0NLl4eTkakF180gN/vghrI4Ya6J5P5WMMgLdtSrhrIUg3LoRw1wKQdi2AIF8AAMEuSLsFXy0/mukfybJNKlfgk5gr591iviPjli8cCnc5WMXXcMH+cDl0x88YcDNvuMf75S9ziVZJOBvPhpg8Y6Ipx+fW8xuy78CAK8VYCv6n++yK/cIP+B3ZJbNccLe/u/0dQSXETsx9fDF/Tw3WLogCIq8jv4LW0MtbZoTpilkwR2tY6agKFq4Ap1fmC1yBBS6Ap4rwJmcVyw7iltJgIa4iQBM4ybXBnkEdQksFBetbWdo33yhYwWKmx8rqLImIsygTZCGNXH1HZvjS59u49aqVq/NEmF2rvx28p4SF7xlLX8XYRqYMo4yJZ+GwNnGnogq4MWfGbVIuEztuzjUAsNBK9aQxMWcZqgj+fIk88ynGW3I3Y6H44mtYFAX/mX0SrHWNPPwQ2MbePnv7u3ZfryLhn32crXksD1YKU1GAt8L2f/BwqMZ1AOPpHcDTOfSalieKiIjmhogstQMefaCmwUOljEeSLErn2c6my0+PQmRZ3dQ14rK0DBiaBYvQhb2jukk5U+3Z6anJibFmI2Mzzk5bWe8tGNuP25ydEVy+CsBVLp1gstqmrMPLQeClTNSh0djZ4X4K9rLWV8zojJl6pthXw4ovrhd6PLHXvTKg72XiiDI+pYHDLZFXvxKLdiEb3P5uMFsA4/eqVwEnuS3jjGO683vkfwHduYm+0IpOggaYqoLaPBI1BRn7MZHFtXEsuAq0F5xp4Ae6qqkELDmWnWCxsMVyAUGHArDfvbPxrAPMzgAeYRpo08I5h+ndg2RC5OMuvcyidC0/TPsm2iwXmXasjPw8E2jmnoMGnGEYgPObh15LxTba+2m0pqMUpllSQz9ggc9HntAKmp72EcXQ8jKhgmiELG+gNTxaSDw/bbq+8sKhZU3wKdZEDFsMhFc84sUXUM20POm4T34u3fqR92wc6MtqozUdC5W2zH8DdOs+9I2WLxswEYCpfY3RnKj72nI/CLrAp0u+8xqYHSbxqiKDT8PEPmiZgq57Nu2A3/BKHo/haU/bLQeZNwyyYFCr3z3PyV1YwsffhBpmrrgw15qd4eumVh2uDA709/WWS4V0MhG3rByAP8vKhjqrqBri2T5sdwl0ze5DssXy6mDttJeOleELqvsQX026tW3BKgnKGCd2fZeDnS8Bbftv8a7vjmp31srDD/9o58szf7jzGZuPP7HzjeuiIPw5AvPSix59OqWBD942eHGG08RNCk6d6F1XnO0jtb3B5DC/m8bcRWMxBBFjJ4CEbUnvOekuil7U28d4yP7oHECn27vSDYvlyjhJVGnGQq6SHBsISwav+Lb/1aeHSj0eiRDJ01MK6T5QNLuOMHQsKAIO4xD8w77w79vf2/4H/p3J5fXv4T/mcvk7LW89RRCZsyjLpHHZkJbhMwtTXGWb6o428K6DLqZbqJ2UVrkFndmh28lJS3bogAJIEUv17KJq5W5KQCkPYzMy7CSkBTGanhgdHioVC/msV0f78D6ls9nDt0XdhIUp0qjVp0hxCrcVBMtKaziax+Gqz4kQ5lw3cbMnnwjCIgknU4aaKMFiogH/dNwTfqNWDmX8RPH1BBXw4bSryzQqNFYUnP+NXDKSFjGhhiGoE704NTq1PxutVwayMUXWeLoAV+UK2Q4ps4eJOjMgaSk3r4Tphr+GOTiP/kvLe/629aWw32TpgG1RzMoiRxSgaZkX6l33eXQB4MKmaXg10TGEzizsoTT3UlrMZKads4xUAQVwIwlwN3329Kmtk5snjt9+dN/C/FxrrFkf6CumU8kRtuItGt214rn+ZrsuLGOtlO3w2FXvLP0P2x1HMFsBF7bjDDKNbxDTyf+8uTIIRRqAvd/8ZkJInMiwcq37lbishDyYGusD0sf/gmqGvy+oEDNl59WHg7pSEfSN45IR81YEZfImSsIi73n3G94oCkpIxs7UiHnp18j2p1RT0RhCBK0do9T30kdFI+oZPHtG1Dtaw5mvJZivIfS2lu4HI4eY0WqvmGw7+CE5cwGIj82ZCjKsbMK0Gp1Ay00pzR1KS+HuuEvEzjJCWB8XuklgtozB/mC0bDFXPKt1aWMn+ZJn8Qi+nRVRm+HbPnsQoe5/1Vv8np6CHvcxP06gS8uxyTFdEGybRMgz/7RbywLeA7j8XYG5dtbGqhS1iSRsXxckl0cJhIQHgUdr6D0t/9pkfag3FtWRKoJQL2LJjUakBO41MEfNu+7VFEEUpS2PrspUkiRDavOpi8y8gcySmJfNImwODLzJeZa+urLELdlUdZTp20JmIpM1djg1msKhgN9JbWECezNzNUXqJSLTbEkI0jgOBrqDGuB5P8Z4eOWyKOE/unAwSbAgXr7SsVo+UNXcM/kHUUyL38PYs2qp3hdc8irWoim4XJXEZ/4HFr9+GyY3sVzJA2vnAoFn3gYwhVz2+08urWz/n3mRnRWTtAtf1NG7WpGRoUI4pGsyJiUM+HitB2DhTgwoASufBZspS6Jmgski9jqwrdu07SIydxFx29bDTjAaMG8X9pwFftug2OqoXhstZKxcySrkMp7u+NAstnJcSwACSGGr2CWtVBYscP4ACaKSxZmMdzglajM9fyiQDx87FliwFP+FF3hVa5VliRmmQLfB9ABfHZaQPNO5//Hyl+MP5bnhE3Pbf7r9p2CKKdmvbP9k+xngHo+jfo/HUaNoGJ1t72/AUzmRaeYB7w41dE6anZM8WhCBOQDwQHiSPd9RZOcEFhx4urc8mGUBfWx3AdtGs5M7Hw4JTjyyDWabrotLvv7F18bCV94ZkA6nQuvnVOvek6HkvEmu9xbLhfo+Tbo4Mhuii7V5KYiPvf0bovWBF0X7Hr+S982oeMXKHX6xH8f8/tjd6/HxPznci43Wif88Hn9nx9e/CvJSRFPoF1r6CCIqKjLv1NViGaTC86gEgMuuAJiLdpxIfeWmhGY3IY/SpxCGsypDmy7xbgqmwhq1l7CVmR/IdKswJ1zbiXzdYCRAV4Px6cTAnBQnJzDw6c/JBx70EuI5Nxu668wuO4BPxJpTMU/Ujw1BWD5AF5peNzRATy4ooaAyfsQr4Zc+uKP1SSqksxDB61+P6fzqUJXvWY9dnyV/CrJTR7ejO9FXWp5jM0RWqiWGWVw2DiNBRrLA81kUWVKYS9WWLVlGW8ATFGI7ZXyzwt/h6i3HmTvjorvGgVPWHoLBJ8P0QmeoDNRgpC50kQPHozAd57c2V5cmxiqDhXwmZXhQHdc1AFFStiOhOzLqJlIE2zEYOC7bO5F5mZac/PUUbnQF5Kkr06Vavdi0QzsJOBQ/9tovYGNhl2ATY6lvwuuVEoPFUQGrkozr/TTQG40bptb3mnrBChd6qCeyVG+clL1zDcs/f3cEYGIhFsz09Oh2M9gT+sbbM+rV27uWwLD/gaMjGYpjymgp65X8y+c1Eo1NTpnEc7IwqgbGPUrs2AffePSYFw8aoRPv/eLtflgGshGMa6qgBYZTznoBPfGXsF5ug5n+s5axaSDBg25rlQXamesqEiTmDF9FHiQJHum8vrN0NDDYMvhmRJaNzrSFxHb47NZDze6hVmdolM34SGcUBnoPW17u8FuNYalSZ07dfmRj//ra6vLSPlbQURsd6AP9nPXeEHl2MgydXEFeFuXEP0Z5gUbVBdqOJ84KNHIdfy7XtTxhptuLs8FXJ1+cH/2tgKAN5s4a+NgEAXdFUFYsbINLZ4leyavbguz1KLmoL/bWMMFU7Y1p8/OOw+d7xStdW3pJO75pFrFXECbWV3os3V3CoITVwPARSR87GmB7OYJQnhcfEfNZSnS7rMuSlp/UKb2iPxLsKSkEP/pol5n9q6kiW+aPPebtsfrKadTJz/kRrPOj6DOtQAmLuMxi1gexhIS1Ax0w0ydjKiCBwgLsilWzfUv3o5vLG5LavtBNRpg7I8zOiCiDOOUuYgGLx1k0WqA8LUiSeJ4Eo0XSQdf6HkVHFudHh/t7i/lYJK+wDHmYsFBbRfKsNjdZgq9wODyLeXQlKPNM0pJTj+NIgls3x9a6bJAg+8DrfjbptbMecaA5mBvzr5OJ/TOVcvngiBkISjrcJY+qsDQe62ihWFvIprSjy9L46slVLXZlHnR/CHwpmWLi/1uQ1ruwujLSv+wxJD+271qYOhO2s1ogJfskEdMfUGq9ote3UM+O+yQ7QEKXlw+/yCQTEpZSUfDPXvIgkfhcgUtFfp38MppGF1t6BMzOQA8hyo5VAz8cK+SqjN00BZaKzXAOIGs3cTrVpkEAtVntyYUuCpa10PJExpipKs+MqsxSsX3iTDCJnfhh0fHas8CtKA658cKOVw9OPbdYnYyqPPaTC9hfxkSOWsXgWE9YF7Bi5RtJb3D7t4LeZCNvKVjQwz1DWn80rbDcqk+DtwgwkP0R7fOJoC6BSd3+/vb/rrd9fB3WUpCoAiyZnrtt0a2lAF+fY8Rx9IaW2p/kMai2j5m4MegEcqVvIV0P6R1QeGOQqU0U1ZmvcmNwSdf5TgmjkXQeC6yN9pVLRWBfmUePPDeLHtk7zgoP63VOUhM8LdtN3oT/7okYiWpusGX5pjZ0EQCi6v0jBx8CrrEeOTY3dTWEcXeg6Kt/HZ0r9Av6oVb4q59pw8Tf+5qBldtelJp4ufonDt8CwLc/B75V0Us/ke1sUYUVyWGGTF23vJM9W7nJaXO9neiaBhCkXnMOA8ExlwBt8RGYQcaWMdSfy/jjt/DouFH1V508/K4yu6zMyrj7CfBGIPfr/kJCNe57aUgPVnTxk7g0dKwvKqnWHbfrVF4L/a9YMFXVEMi1l5B7dMnhiSYIZNu+/MrvqIEgO9CLn3k/VkDqJrGTq+i//j3hh8CLw+h9LXP/2mojJIEmWpsFx9TlS9yjKzK4QfBAhldTqUTZKmNVijvB5lj7jEvLEoMYBY8ulwS2f3itTQIXOt65EN5yRyCWq8dSHeFODh86uAK2bGFuIGPNlXrLuYzpBphdZslUc7bieKyB26wiKe0Eg9zwmlN8yNdwl/ccDPg5msnVhYj/0gEP9Q6HFEG44xyRLEAKGwdDG+NEtC0Rf0WgulG01L5jD5i6t+LT9q/PzoWoVokrxpWHgpp3+e1vIL5xnXyYLdKQQuXtP9j+BpFk8qN/af3okyJoeExeClZIrBBSUQQqfv8Hv/01skodGOrfLuGP20SMC26dSRh03bdgLs6i/9IyT94GTMNrw7tcvaxKuRcHOFAUmbNnaMxubPpMr0eXuv29PZTmXkru9KWds4yUuX03ksCUJOHWzqKzaysAL1jkaKY2mkkyOR7LZaxdOQLMDsEs9JMdXsPaZuCy3ijtdgkdgd8NL0aZ8A9h2RCc09xVNLwvvsOjWJtp8X0fF/wNw1bNFz4S0iWrjzxI8CXqNVOK6tAczgpL818TlHgpBUQvC+vU6lspFASimSFzHuN0iIdMS/RHwNeQYLIpAE376Q9g3Ws5ejYnXL6IyfbngCN8hnRZuH98XCBGOBe+E5SvESIVXsOGyN/APLXQu1tas5jxqNJOnDkN8szqKDaZhIss1uzhoWLDuzvWvJfO3EXHpyfpnOKELOa8h8BdLy3Ump2ujgwN9Pf18HmBP+bu5I1pXk7fNTEwL3xpMOy+a17MTt12kFDfq14B0GxSES5eEozhoK36rgLv/cPCsdv3b5CKqup37MvL5pEefPYUEQxziAWosS5evvLrHxEMrn9M8qY3vupRLKgJvgbEQfz+d126LPJgtYPFgJfDwMtB9J9aRj8GAwgqPQOgr70dW4RVJBKRspQwLBJ8n4RFEW06mcNgCU520hUrz0ptdqh5/mJ+LyHgLQyGVbzQRebmAQyiQatUCJcDLA8gUGvUeRofRXTU2al192MBLwzh4jRuxHDddZRy+3T8TVAC268j8fFNdW7RS+Uy9v3whzDxn/3NN3nPlNM2/rT61R4QZCw88xFYf+rYeM8qIP3t/xAAt0heAyAPLgAkGq/tJw7PHrhO0XXyj0hGZV7xvTfrEDwoIrBaSvAfwSSzriC82gX+/8CT58//u/Dd8k8ulXfXQBq8BpIXhHYqfwtZXvnruIHIyZNGYx5Zk0V8yqNosrD9IfIXskeTf7JgeDRR+KxzzRDc3/t27o/dDhLgBmFm2Q2yrV+Cd99fgO/KVq3Qk0+eJ79b/kmkLLyDX+sqCeBHydPIRvQTPoyH+wNNcGNATrmqAGhBh2AC/tuk8hoqe8VGventkRXi9Wp58vJx5RHw3w0yXBnSIzIlPkPLs2ui61/A/3z975+7BjVYzwTxP88UCm4PlOs/xj/An0Oz6CAOPJXFzqL3gNiNo05ZmEIUgbDUa9D3SqdeLeJ4bUwaDQYc3I9iO832p7lAdOcCUXEnyW/vBXYK05wL3WJ4q/68RiJ3YNuBYVs2xv61pUIvK9co+hiocZIwnQT7JG+94daswepw69nqTg5NJ/WvWeUp22CVWe5frR1gcCISP1dJKt6NsfnzpsQS7AwvpYCr1eFMtCQLfnFkrnbYUErh7OIVg2qjhYXQW0DSnizqw7nyuErwSDpk+HuSU8NG7vwdGdUwPP35UlmOF3JRUQiKvQP5QGCoFDZTNJT1ZYqKmQh9cAKcFjuarQznZGfO7es/JhrIXwUtoA9+ql6LCk7VjltYI6ItGXNV5JbJRJjDZ+yplRnYRWzuJrZ2EbdyneqYLvo9VM522eT46HC5mEmFg14dVfAg2y4LzBBWAFJt7PRwYIxna4WYJMfdFdD4tSpME0ueN3kXla4Q5R1W2WbaV2ge9pvLZ4n32rEDTVkjMnhmNpwJZ/xE04r/EZGX+qiUHPL6WwVF8XiC5GPA/Le/g4AZNR46EfAdeuEkazqgEhXjPjwoBrwkHAYNsP23woTyQ3kYFqseyrXWCrN8nbO19T5YW8PoTU/lsZOn5OFFB6yOA13iJTHkPmAal8DIrsiJw+G8QypcfVbaVnYvmcQ4ji/sDquovYVCsexj2UzIiZ4Vu9MTeDrxJO40PSkVa81OHxT8kkoSRFaNhauJoVTvvmigz0eo16DR0a3RwQtg4TxLU6uvDgl4JBUKmwC4xfTQfYeHprXguCJSIVBeCVcfpDX5zOTwomqEXd1DwiCHg2gae9Y/VoLn9U1XQOfTLAYfbS2DxeWevYek5U23NBaxziJOCQil4JmAWHHh66gkWe5WSaXuMeZNx1g7Y6zOFPTdegxyh3RFQNhZKiB6oWvUzUjdGtqJsZEhVj8bj1mGKqNBPMhraEfDXIW0pbrJVoDlc7BllqWddRWLhbvzhBuz+EdrEx2R9ruSz76+VZSV8dWlxoyBH/n24OJIMWr1pYZyrYCIf2vkBZc6wsw80e0/2v4DwfaSioab8vBQc1PpOf+aO2fzsaWZF/ZmihnK9Ujcle88GkL3tNiOGrXgAiyQ4WgHwjYcMNP7iFB0Hrn57pF1t9rLqa7JdehE0BIir65x6HeoNltaLtRTKOR5CV3BljNdMssrMbi73ZVDHZKZj8R0b7CK3ydvf8fOn+hP2LpAvbYQODIViI6fDHjuOShqW2cPq3OyUcvY9A9+LMvmWnEtbad1qolqbUHSD0/kC6deqeG75+8NC3g4Pc5rFlgB24vJ59E4+qOWP48lMYAFSWdlw12ZzPn2Ewd59a+wSUEJ+dYVHthh6Ugudh7opjVvRWt1skOzcA6IYKLO74zaQ8kq+ZEkADt3iHeTbLoJHuNovGgl7CUrlMvoXSDbLVmCT3WWtMvSmniIjauOXNHZ7gjyimN32xxb/nvvMBRfnKUeLC9j4js8jS0pNxyvxP2i6o2UNIpfeA8WFa0/5SR6kA9+oDK/oDUX4Rb7suF4POwPgdLqTdrr85X3f5D3OKoAeElcH8V/h38HraGT6Br6RivswbI0B85oChM6jRXh/jGiKpJrxUZAhIhAyYX2iuMix4NpkU4psgtagHmxzmJ/XgOtXQN5epOMWR0wyATlKWnuNW5Gz+zcPVfOnT5+7OCB1eXqSCmfjOczGoBS7Mar2cpu1pr1zlaGq5DbPS52N8FwUMcsr/tpQ5Ww7KINZxdDpgEnoNdVeeC2ycCrA2ORtO1Ls1RIUYrYCiGZnqFzw1U9plqzRyPTuRIxZiaPHJ6eMUjKtPR8YqAnuH+oOvCxbCVdlgTBM5/ok4R/CDWriQWvHRaUsYI/k/YXxmWC3zmQjvrspMHkD2PRx6LovcO9pX1x25+zKKtiUNOlST8dSaZSyRFq9iZMhabqldJAs6+UKsYeaYxlenyL1nQmbm3/EpxTi0FdDZdkUQSUJHmz7dyUJNiRk+iXW9ah0YoJE6LitdaUKoEYtmsCXS3s7SC+yLpCWWkn3mKRVgO3ZaBDat6C1GLlmRn2I0hSL+xQ76FhQe6N/fvmZ2cmx0eGegHVVAMjGjgGTda8w9kfZDsV9SnSmML1KVyEv3uVvmt+w+0orTuo7nSc4tgyjmkwjkN28DNKyfAp3t/1Kj6jBGt9txWYOfwyD8yBEoy7NEqdZRSn0oPZHMzEFHduDUWNF0eqkz2FI/PNNN5lE/7r+ovkx15F3CQtH3nicSWdyObqONeImJlYUGY2gXnv18l7kReNore1PINRIoh4bdRPyHI7vN1mEe93wdnrW6e707XZNKSABrl5yDeQOXULOxQSEgWJNSPZlb5tIzQyVC6kkyHbMuGWvEW2x7C7QCrQre0YWuzH3fznJvfRTlXUG/XTW35XwYlKVQf25v1WEdgrGfEweW9XAdQzF1wN98a3afYOFx/TJMzjBOT6l69X0Z9zXo2jP3GgYRnJbGPvEmeS4jCpjU54tSI9BSAkRtulrr2MXpDZRsBzDxjgdfbuAIXxzslJvik5mO+9lECEBFnkVdxtOt53DaFGfWSokM+le6Iuo9UbGC24iHwHro/OEIfJBu60QWQa8P0ddl9OUo/apwCYjGVtArfoj3r8vUFenGQeHhtcTFZSu5j+k89Jgrnqwe+hto4Z0/nuGtne/sshszI91BtOpsJRpjNYb6TroDPuQp9r+W7fyAlgLPHahbOri6K83E6al8BplthmdRtoitwmqwrVRfAwtzQsy4bcZu0N9ObN6C2gb/XBCSyB0LC9cyyh+3aG7CUG/iYIuuP8mVMH1lmC0FizWhkcSMSCAXQXucvD0gmrTIfgxhRhKYS1vSrEyXnrBMUanXw36jSS7EoWbziOa3fEzNE4+ZvoEzw1JdKgpHqvyGFPQMOSd9/Q2itlI5fSqWf9Dq8iR0ThDPYYMVfp6F/UlWdTMH//nUaDqorfTUSUSrMi/q9qgOslYoE9fq3mDY9NtBWQE5dhOEyGeRxBJ1u6wAtmh/qIuNzuw9SZOkEC1NOp4Nw5Y3adYWkeLYugykBviXN4hIzQ5+ZwJ+HV5WPfzbjl8MB/ChjzrFr2d7Z/e+cJuW0Tqvi30GNYacX6sKC97PzxsZGoyXqOkLUrL1iaV8Gzdh+3ZmBN42mqkXX2sbOud5a4V1dltg2JtzywrLqs3k8/1uo0MCgjKmr0OAwTRO04VxOgjy/chL6Vp1hidJLGiiBuQcaUSuSlD7zwnsuX7rrj6OH1lUC50FsfBPPJgsA3mE/cqNVrxWm8V/DtKjgCTq7Hc1tRm9rBOAkl8K6r/zR2tuAYAowbF86HSESoLr782QzuzkVuZYhz/XZqORzuFo9yER8QVqWkMPwctpgatzLSLl4CmdpEX20FQabU25hASUygZie7MFOhE1TbJQY3R03Pg3hHYJJIFUR1R1JuQFesaFEVGLq6OQUP1R1YrwbKjlxoP71c/L+FVV3Tfe35AatbzKd473PBKu5r/wv+NvjaNiqhqXYbA7fdSGR9V+OQm7UT2Xy6XOvNswS/Zldv207xX6A7DWqUl5THX3zIpx5vLUmezdlwIhleP/N/SHqyZ0wngfTqw5L1ra1HNdJaumD3zJ72URp4CPuxJ37IXzlbnv6l9Fz4YDvWOEM0kLVFdAR9pRXNgrLOAXM2DtQFhafDimvzM4QuO/GZQV6S43SLRTuNY8GHcqO1EvNduZbydyBNPwzicYLIelup33oIACABvDVBZvXeGPTNhVtQsuwzgg4d3L8215qeBD+twC3CIllk2Wfh57a5O7FK2enXtFvaWG0sTzEPclx0UwurTB8IaUtniHZgOplerCldQobfMj1AVGG51rvcl228xVDkaHZgsB7Jrk2MJHZZlFhMHiDGw8cDvrkzYW1APna8LWv4vn1XFDz3TyuFMT5XGZirMMzVAJpF97b8s4N+JMoUFAQia7kUN6pOb1+W58ccuoiT6MfyS3lF5U6iX4rtO1CZZfjdlGKzpUdWcoFiuDej0Hh/wYmfT2OnlIol6I3O4mqXYe3C6AHOOBe/OKASv2TqwNjJaFpcqPUVk/JCL8U+X6F7TXLELiQXBQ+Z6k2M9VPLpPsyI1NTA2P76OLFmI29TaVU2v6b7b8mO2UoZAsf2/RgsjCyNH+3h2DfWhs73gN8WsOlli/pJSKeFgjrVbOCGXY0uEyyimrxEm9Tc4M8UyZoMsD1Nnx04pntJjPPb0zppxpjyTvxzJ0xNyybPSNYEy+XmCXLCNJ5tmpEWDW7CXmTK1guy/sWF+ZbwwPlUjYdDYErsEbWtDaAqjlebn1vYDPIQxbtflcsucHJO3LUbwLvqs3ftU7yfh9TwYFKMW6Xkn0JhZCgTylT7ESYVB6NupXq3ZfO63YhlIiHLJ1VxShy8USpFPcmQn4q8bCTAzIxrIsf44uge9fQO1rxhWmCpEUsoxooER2LQg9rz70WAJ9k1WEw6/SIpC3W3iPihHzdj+2sueh6J5eOK+wS68AooeNABj6XJJ+/BSWPGC/tm29NjvUCg2MRvw9kcM3purgnOARq3cQA5HkSnBMQdTZFnKzX0k6j4VFes+jk1LFec//tFFEHKuPBWT82SvdMDSgqpTpLgROJ4ZUExZ+bOe/3xazUmD2v49eLdjlpql4VKGicjuFfnPOKkaCqeZL7qL+UXMvLKpU0enDOBi/OU0xVNxL+gCLKupaaEfVrBiBwRdYpfYxSWqm5+Tv/gg+QiyiPXvJUD2bxA5exzi6uSFjmwFWW8cYrbn08PU7eBFZz6LETjS/tGsAcBXwMsWQ+USbnuyhBG1nBgl2wLItpo0C9ysOabqSMb/Z1mlfygCgw9PXlxx/HmBq5AQ2XJb3e32hJ+KBaiFXICfM3K296ecYsLSvFXK5il0cnq/LrnywIiWE3x+3HHH/No3904JBVGwz7RFhWa2mMVgawtNxzwzHa3vfI8zaRW6CceAMjFhth8mWs870h/lHqBJVvTmvt0FqdCpYsowJ6kSGHW1C20nuJkEvTLo5z9zWmJkaH+8qlQjLeE/XqaB7PqZ2dvFBnd67G7KejDkZBBB0Rdnc4qLun6hY7O/rislUO8n74ul2OByY03NnacD68WZT7SoFsa0njHVK0UZ3oWhF/Epb7U79Jg5qhxg/h9MjAiM8X4LsbH/+ku82xr6rJQzX5NffGFB9XETyn7sf4J/ijqIIOtLzlIqt8WktGwclfcbhrU4k3HtliOXI8esJ3O/0iS25nZf1OKym2udnSorlcsZAb4R0AeYKyk5zivNKElCpkV9KKzbwWJ3EOH5b68+MRSR/zk0eJZAek12HR9EQiVDt+1lSMklCtpqZiPhF/lJCKUBC3PyKpKr4saYBuuJk3xMceO/h+xWe7PrMf5O+/w3NtoHtaAVAmWSKxzcn9y9WK30ux+3QRRZaIxv0ylRK2zFg0g+/YhNgB9zTrmuCe4D0u11eXFpv10eHBfjb7YRZ428AbrMclzrL8KJ4P2J27xlKvhV1l1cLuREKW8jZDZnm+z85x/MXhk6S3L2ErsvfwIgUnWBeGfA+I/oCIhyvHNAk+vEb29YSofugksKk4MIB1v5qjqqBmbaqtnfbK+NU+5TqSHnyYWgHCWSX3b39UkfETP/vdkqzga27KITHxq14hpkbjL7BioorbvjnLmQKuozPoF1vJBCbCkdlsyiNhchpsprBWrcQFYeXMkii094PiO3WnvnVNpVx4FHnXPtCtaZx6XafilKW27T3Jdha2Th48sH99bWXfApuDQ+NsRyfSX91Jm3LZmOWMdMSQ4yg3RsT2CXYX5bF8lN3hDZ7VVnIqgUKsHemXzaNrOjWWM+JQZWKSqH6ajMv5hYE6VfKzSrQH9D5hGyTe2/erVB5Jm6GInCC+mTliTlpUu/2UXxX00CFAUaKpscIyKSPOTG0cAnxLWIaVpAsnlGxOkFUfrHNeGymHUlpRCB47QZycN4pfiA+LsqLD4nXzYWt87c6hd7bsQjbjA43F3kpE1ob742GRtSDw8F5DLIUHXZIlUWBsdzbdQJ8pp8AviCld77NwCn5vTciapTk0bMONkbl1w20KmB/PWCAfyeXGyj6WlR3q1AHz/ZhZPIR3ZRoGA7VbvaSCB0uH++I+XRRlr2kk8wFrZV0eVE1ZP3bGUtShuyoDEb9A1f3NGKiOADl6xiw1JF9vfT4RNGKsozP1jFX7P/VpzkDrOsL336/6ApzfOfJn3w9NefBIKcx4yfod/zzwcgR99qkhLIntDq85QLhElC61s83crDTOFuHUrkbgeYd0JzPtFrQDz4uWZ7tl95Ihlivu5Lqd2mkhroaiC41emzppbk2e52ZiLtWjTu9Q3l6U5bk7zfMaqJlrZ773gR05SrFlLaQfHZ6J9NtBmdi2D3/0o0y9Y4lMLFhRIyKXAVq8W1Co5sGR8Kn+T2BBicVv82GKP8PyZSXVC9R3iViiZvg2lfF07jrFHyf/iPahZqs2BvZmErO3rbBgBxFE7pyyN53sbeOzMFc4lRvIgqntl2y3BqLGsoHrFd4/suFUsLTronjvOAcPugmq8NepVmOmFlA3/jj177/XC4tAxJ7FXgBieu+ih7+1RYnEGgUfCVObCsQYK4C5w9p9VYA5krbYaxDh77202pBfG0xv6hinBmmMDqY8sQeelNPBGKvPpR6vIAgJM+B9/DV0I+ev9dPXPO6N52GJ8zX64HWZ59Sp7O1bqgKzycK3nReB5H0sVS+ULVm89b/1jpjM3wfxbwb+Dv6O1/xJo4uPE2iqNT4KNn8QON1fJsBF1sxJAi+M9eYFPc0ACzigrI85c3tE4eBYs9CXK40yZoJogDLkrcBYe6MQ24Wlzg43fxWT23Keywt/S8cQcQJFxTlRU2+7YoAm1pYGGPtK+8BqcPY1XqQrkqiMLDM0Yt+ZsZqMz1hbHoFn/QsvbVTV7R8q+RowbiDp7XnJa4FxNdmr07609OQTR3t0NTOiPfGklO6lTm9I9G38fjyDEqjWGgGWoxhvOq4CPoxgsswa92DejBQ0Tzv/BJOD2d5s1wsUquBYp3Bn+5ilSw1hkPo3hMLBwf5ILiYbhp0JGFa4f8D9lsTDht+fkD06jpRUuf0xy2IG+0DPPkA+hw6BFfxWy8/yPzawjMH3puP8rVntujNMAH3LVxGHPPcpLFOVirC2JVjD97UjWbxxFl+9MaGd7PA8h5q7hrZGnmMU09UMw+6MYfuFRw5vnjh85siZ6cl6dbC/WMypTtvP5k6rbRCEWVzsfhGX28q+3XaXFyzxnXynv/1OKROToVnW3yHALOgQdpJ29m2MhbOJVDkUsCJxMdfQ1Vh2uFydDBpDJc9ySDo+V0jtPbuQChjs9KotvSczsKZlBmZNkps8qfiMiUIgEvEnFTIqaHN9lZVAeKiQSQ6t2HRwyva3Tt+EIpXxxzIJRlKZsrev7Bs50S+ShdFD/ZoTwztL+vBbyHsB78RQzZlP787L8rw85kgwL4LgbZC2GCzBBzefzpftrNvd1U1tYJkNToMct5Hq2Uw0kslEo+kv9ASwQsK5XDiUI3eGcrlQOEetrJ0RcTYcyaZZXi/aJBfwnciLeltFVpChUdbEbY2l3l5DTBBYzivZhFsmBwJ5sH7hfj9rUBoO8ghcPTNmEENWvLKm4m0dL8RkQfuh13v33c5z/gJ4ZefI7wOWyqKDTxl4JwE+wN5PBr9ytl1PHRScJtbOWhNZRIEcF7FTd03g2VvegD8R9mcDWfYKwxCrwNp5oRgXhfCoW2Xq1LCFQ29Ravn9MTBUy6WGgi8WYikpInlxNKR7yOOJUtPrD3ibxaRomK1Ashf0a7gnoemcL4h8nbwLpdA1p1lsD0wDICWRZSg7b/IAV20TtT1D9kQ9XM3u0O0iufVZp1OBbgUCViBk+5m3zDjceb9WAjtv8OF/i3DGeY8PkTWZNYrib/Jhf5951IDD29/ErZj81reKOpUKD/wCe8XPPyngd4Cit3hN4yxZIk+jIhpqDfREgn6RSGAfJG55r3IJdLLgGeP9ZH/I7/fXrrUt/QRuTLTTGfsxf6dQjv2t13I1N1Ws+bNb2IrnBkM/Z+piNgu/uwT/J3J8+Lb7TBH/4anXKFjx6DL5yX83DGGO/f3aV7EncHLJYvr4keuD+IHr34NV0d8qC1hAJs9+MzBe7mhhtxI/hveH8r0WWwxhFl1op/DkZEDlVTfzIPeHR0XbW7HyTwx7JSF3PKoNWubySJDKoYG4vyiylPmIauU1t48tgFfhCvkwMOFO9PutwMkUoeAmyco6xnJ3GtqgiSUPdku0YUqpfN5wOifwPvteXeV+BHt9wU4tx7MOMncN4o5JPxLYefZaxBtH7qFmVR53nju1dfz2gxusi1yznrMCxQErkMv4diegBVjbM5u1PQNU2m54xt/NxhvJ9btR9SpLJehuIdfOXXPS6UO8h2euZJCgPQn34b9j0yMrq1HtU6tkJF6W9ECsv9G7ylrMldeGhXJZGF4rY0FV1mdXRyKaiMukhLcDTkudtxfUAFiNoaj0DjUs4ZHhhUUA0EWbBCsiABNxoDEc8VPWce6Jx9Mt1imtlX7oZUTDxBze14p1Os2x8PLDD12JNk3DH6uQewwsve4JHnf4BaSSB/D30RAab6kDGVsG36WtibwsrEDux+5cdX9njH26VCnzxswFrl2d7u5un/zZ9gso3UZlPKmd2y5YuOQBjyplD1y6fEWgRPEQ4eKlSxcF4lFgRq9cvnQgK6ke8RL8R0wonjTQXSL8JGV0lA8hcPBA2qOIyqXLly8pyO0/8Dvkj8l34Fmm0Dp6iMUbxtMxjbKu+bCAVxIdKf2f3dKipbP0OoA0IfaCNdxkwK5TKB7q2pgBq1RzeNPV8UJ2E6NDYXAQ/L4hnEXudkOjSYbHFMXCogDCikMHg1QKvPNKMH7igDyG0/G4ehegINY04OQ9rSnFV124ozUfS/3i+46Nynj7i2lvpV49HSev35QkDaCnVsH24Wupcl/0RR+wxCHxRBAPDqqnfl6d5y0CVnrEvvyBQ7967J7BZ7aF7YN4bL++zaJdcnSkwPYirv8Yf5t8Hp3Er2yFD2FBS2FFUAF7jwIKO0qIhFhOJNuSmECKQARWMwzCKdNLiO3x89xU3u5cbTu0aIsV9vP0aemUG0l1Zmiy+wrgTV/96S4x8GyXMG96CWvPJSq8rGTPJVi/MqZ3zndd6+YXaDVv+HkRsZyFCzvXuOlIvr8BonrwwMry/FyjXhkoFSIh0/B6qAisP8HTcPYmzTaaXW9moLJbn551lyDX/12ZmCwow3OX2y9AgoUrWP2YNaJ6dMvj7mBtbICv6z01MX7c1ucq6vjqHcvzIRoN+KNBEat+WQgXZDqZKatU8gw3QbUUBmXWXkDQqbWTcLu6oWNpaLLaG0vUDvil9EMH918W66ZhxyKBHh2UOJYGUrHeV0xk2Ht0KRYWx46EpP6cvP2X2/+DmV0BFa7/mDyFP4duQ2fRi9BHWpFVD0FqABzfF2CPcNc5InkGsShJa51aIFVXkX4VSR7RI4lXAUwKHh3wiYI8kuK5oGFVbW8qegFtdL0AtLl3LFABOcLqhb1X2TVysxW6et+li6dOHD28OB/Jl4L5YKHoM3YV9YAqcNRgmLZTyt1XrIU6+qH9Fh5HNTiJ+Uw7ZB3NyWa30Nk/n2RoXwLAXyvV5U6MjJf9eFZrKXu9P3Jg4OAWwKrtvzudiqdrHiKC90GpZzwfi2y15Ni5yWODkcnpuyNJ8GbLCTncQyUfpax5lA+/KZQsZtMyuXgxch2pmOizdxjiQLa24lQGRVPEW0+U7znmJ6LnyV5PpaSBzytZpQmPsqzk+0fjhYnePlUM5pT0ELhHgpMeZ4ZDDTubm/LAmsgs/lApUA3gmThU1o3U8LSrx/8S9HgUsHcQ5dCGW5APIEQAT/t8O0c60EnpZB0kACC3z4vsvclnO2RsL0st5ALBAu+ti9tv0eYuqcggO8DH8K6jeKaYrFlCMT3iF7b/3SCPAIh87F93juGvp8ojipEuDivfjsmAIr/Y+c7uP3797aAno2gEzaANdLxlT+vgOwfZa2nWKADKlRQ3RAPdtiay29YEdmxN5yhYmbWVsfpgv+13rEytaqd4rzjXMYRbrxlsz5MMYfc1sW3RY/ao6/0szDMkst3edKrX8KkW8ZlEteSUEBZnXnW62ZvNioKqCkImI0mlgVL6XKPSK1Bsl3Qa3cjZ2ZOvEMXfIKpXsuOXozL+1fsIkVXRFzfqQlBcOnX21UEyNUVYI2tCJsdhfaZOV1cnRhqwbouCT8DL5WN39r33QUXc/gph/QzlO9PNrXaeHbqOfwvl0T0tT0rnddx5kbSNd6j9ygwffzUwZ89OTPtmZzlotNmbtFksu/vw5uanSvVyLiPRaCdy/WzZuf/Xs+bkPmsSLkFL178n/Bn5HPz2/dh6qo6p2EZa425vovMMxKoAYsG88F3y4LobQhJ4LrnzrOtI1/e81ueWFzA7FzA7F7A6F4jiduSjxqKBVBAv3HAhnXXTOdt1vfZVGFNH2ZsMRKJdeK7hO4N4KciVS+dOHzpYs4LF2fxAfp6/34DB6VzXy6naHZfchktVB5vXa7ync6drCGv3XO1q95xtt3t2tOsMmcZVFkOhOWOnpNKZX+HPcBn//tdUPVuPXbz9ZQHstl/y9Q1ldfV3fydehhnUM5GZ2ciaqAl4agGXkqyLcaKMF6YA/yhLh9ZTBVZxXd6Wgg3RS45dO78Wi46EowoIAjY4+obTst46/SEXZc2omsxDoIDfRSx7xDtSEQ9YGfKyh4jUO8J6Ro/0SuTxJxiMN+K5V7FqegE/aGP9ky978Wdiih1Yyzz1yewq15UJsI2spnYELaLD6GFeGaWFuyqjejsVTxrIoIbOq3gnTYA3Ntzq7LWV2rRwFsg0VmfijtpFudnyHT64ttqbK8cKhUDezyp5uuqkZrBj0vg07n5VBZ9Kp7oytGPIOm+ik9p1VNy6kR/I2//bI4p/NSpSMFuSddtkT/i2ATp350z9iIWJtzr/nvGwhyX/tbYOb26fKgzle3KmTtWpkeH8IC7IM6LpN1oWvXTxXxTZ84EYOapTMFHVORpYUI/mmleUSFLbX5sZtH2ySA9eLefs8EBmcSw+Mpsfvve+2r1B0F+hgyGD9aN0cuhBL/WjB50dnQSL+SLpUnf6GELiqV1lPklGhNup2jdSteJtAr6LyyPxO6fZroLdZ9XLGWa8ws87rz3+PLLZf+l55q//f1FDzl4V/GryGCgE+glT5NdkZV/hEK/8CsO1S/dTCVZAsyneh0VTWNiXLJILKlwqnZqlIWlkJMQiR/tIGn+EbDx3LXoAnPt9+DJJV/h+6lfxv+EnyaeRD5U/oXBzDBP6NHNtg6DX+AeTmVzWWM6HfYQZ3FH3rWelYrXGX292GqwdXl82DdBBop98Omb5DDwzAXhmYZkGuS27Ar9Tgt8xUfr/ru1LwOQqzgNfVb377vuYvnume+6ju6d7RppLx0gjjWYG3UggEEgg7lO2CcI25jIYYzCxzYcDOLYD2GFxWLCABPA6Xl8Bgq+sSXYdYgcfxMEOjiFrDPO0f9V7r3tGSELezaJh5vV7r6v++qvqv+o/HtP8fg5zbjeHObeXx1j1ITdRAJXcLaYhXtAWsDVypWGtnwUuf3ugTSOfJMgwV0wgk7V9OkgId8G8JLncVFqmG3cjIGyGPQOSC8Qab4r0FKhpMuQVUqDuJa0yDMOUpl4nT/UXVthmBz/WH25LhfvH+A6EP98/0Z7PxARt9FRbkuxTRzUBUdqygDu4b7I4krrLunSumbKUMoQgRTyHaDouxmRp+p4patulgRrkHYEat7VqAC0NrWA2J8B6Bv3j/ycbKXp3GykK/N8ZSd3zEzyM/hTfw6W5LVPBd56fzD6Sh2EEGbXFzVEYxDUzHPtsZdfj/++nK/hjxzldofLJ1chBf4afAWEqzQ24iFaAJhF3sfrXbFtYtoU4K22nOROZrKh8xSsst6SmZOvjd4MpHp+GCgO89pXWJX4mGVBk/oNAym9WE0uvGQ4XP3Sk68hB/Dzs0dnD2KtP5i45arih5v9kM0xV963I7B5jg+7H86l1BnGKTLcxYckc3YNXF0ZOEhc/GYZZfQq0GFl3Bnn+xaAkJckZWNFl4e1DmDRzUq/DX+D6gF4VBEqvltVJqLGcf15O8tDx6iIETJOKFMbCZZtlmivoRHUQkKzzByYwVojzL84vl1U+oHMFRIwEATcWzI18OGCLHB4ECZZVW2clvDjAf5lQtbEqoK2Et5SYQNBW4a7/GFl76D9ojsEneUniF2fg8jT05uW3vo1c3cvP/1rlJjn1ieFaFy1KOXiCZK2udOUz8lZFkn5EqPkZ/i8OFyPHy93qfFeP8jo+rT4sG/OjuVz19MxQW2T3m51vdXa+dbwsrr0EmTsXPrGqPHdhTB+tbL3xrE0rtzvv+0yhAD9svqizxScBP3WYrzDlWcg7dE2iDF+JVpa6mAyXsIT9+kvFlv9KEE2JhmJKoDPs53le5jXR5ttk64Kropoxg+5Et2KxHBfkwNmbNdFYY6Gv4q/LWMTOXztfoTnFXZeokIB+iJzZIOGNIP0sdCJ8gDGmbpZz9n4uxGUBTvWJfA6UOIrrUKOWi8TCBXaYl2OnfwVqys8zXOYjpEzD0JdH165E0oCMe+VOWTKdeVOSO0/vRLXOTuf5D8nhsERENf31b6RUkUjhsIwWH0ToQYRDo0QQyGgI/+4vq1X4cd7+Mu5L6dThBIl6qg9/uVWr4Quw5sTHAkvX/rHLGLD1/47M5fipd69ZwJY/S/X8/VZSOjzu/LPzk2VlCry8R59mufvEx6JUfugAWCJ5miKlRCPIJ6lwAgu1C3lqg+vax/IrRyXiVYKhThpVaCeBnJ/8aAO1B9pT6UMfOIRgq+RQNtVpTm4vX3/+efG6YfLkjcXI+ES8BNS883+TXxHQAJEohIIz+Y8+9CUzxGNXpN+7WeFvz28KBWkBHUSC8c7TQSckHsx0b80AzIMixWOx0LKR+3vKL7NMSyw3S9o0KYqXOZEqPLVmTkpxXtCkU1aGw1eUgEYnGgOrssn8oGSHCBou1rIV3ac0IeeHIZbS3NT44LlisDis4rigrtolZA5byLyiMWAE5vs1XkACypQKtQ8GP//ZJulBgvyJL+UeD6JSRuYZrYDx3A1zsIHbxoGC+MSe7QtznRys3/xSMItLHIC9lDX9ZHkhBzp1rcTGFop4w6XlTEGtoy/E/KPtYgCbQed/Br1hYGTNTOwIIBTYMTFjISwKumXRoQKYfvZ2c+5QwrISh+ZMFw3OHWunBaKGR4bfmF4zNm7CbLvD24WwXBjcKIaC4sbBAgjPuwTCo9bwd2F13VAqV2gbWqfiXQwxaMc6ELqqornuH7SZ9WvW6xg5f9uca1rDQHxsIUPnulBqmgHZvyyqjKN3YsJCYVfGd3Ovs/Nk10WIhkrGjrUQGHqnFQERo9gjFXUVkXpbVkHHwgUMI3oaiHJ6Uert5YksxmiFZaPvE4a/RpYg9+8lZGhoUYwSHhhRd3zFB+tJhbz44nKsvPii1vf5FfFuBfM4IZJ4orqy87o47utbunJ2p16uJuLu3u0F3NyPv8rtpbwU070bhsHAfh2uxsIeeqrDrWUzgTye5uciYLkgPBQNA+KY/9SSpEh+TXPRyxYRRab0V8gKdCJeknli1HuFgF2eslU5+rEzRcW6bfdoUFbtqbIdEHrrBk/gLdQZsNDpG2MwcDmbU6UD3d3n1rOimsvKStgADX7HDiwIZp9FsxkQuyM7fqDekcu0zV4so7nK6rZMrqN+YDzbYRNQ6QSrzxQEvGMHPU7m1XSl88yzGt1tt9XC24fmC+2Ns87sHHJxw3G/Q79F6XfXZ2iOVfTb37m5tdj3yC9O9nvkF83vTaFDIM8/zqW46FQI5Ar42UuPvtCmnk5Xc/DrOzeaYp0oeQmSot8sJEoRG+t9WZGE9FU8AiZnJwvoyUR7OdsXMjeNFkKE11fv0jGWWP6Eeejv76C/Ni48FfBttNBbMl7ATR0oGl5ylNioFd0P84VkPJJuC6ctwjc7S7TjqxPFUP4Dta601eqrSAdyLTqEvs/0ozpXnmoXqFkbBOm9vIiZGIu4eq2rnE0HbUMD+TwpuXLs0gEuHXz0BJj4Jz7YHH6xCEixECDlzebVUvTgx8OiD2alvZweSEqAp5+1LlvD8PKmwTgOMpw1qPdayx0G8Fav5TKAO76FO79S8DLcNU7wrJAHvGZSgFcx3ERr8flj3mXILkyM15djO3nMu26u6E50I/C8Vdxvp0yROkKN9bdpPEyD59gZEagtzLV1M6cs3x9LZzHV9JarxwnIs5K7j80TfTdy4u8WT/Td/nc8tPyHU2k3yINgcqVAbWxoJ3O/O40qnLSyFzu7U9r70sVeZq+hihpQbImiPbJ0RfWgiH8w3KRbw5RitSSCGKN+jxttui2JSFNRINEdDSbioXhnQQCxzQgSMSWSoAESnFDojNNH0e42GyFVw5/PqIoWbp+ZSgtE1mPtMUORiqmJxlMvdIti9wtPNSZSRUkxYsFAXFewkJ6a8epbN45U2XxNc9dyz02ZvRIM8v0Xn7HAy82CLhUYP4ip4mWcKGFRuuQoPIdmNSRJ8mm0gl+UWouTypIs/su+eRSWW99L+N+Dr3gYP/b33vkVal2+6r1XXHbO/mJ3Cmai1BtgKZVrrIR2JExr8HjbF8QOqtLgIuMTrZiwWrFAbSQ9yJuKDGbZCkoBtw3gPZVjTKW/rY6axpWIcrLDWzQdYTUi9wVDcVlRA4kOOQIqoK5FS1HvUUc8kIqHgn3egy26xDcnls05L+nw9rFu4zsHBlKN8QAiAjaiIQ1WjIZBhsX6ZCMdTSSi6cYYe6iZyVDUYI+MyYazbWAgvbIzSVcCWyLJzpXu695NWB7uXcZA5jmOn+au4lQuyuW5YXc1WDwr73ga6DtuiPbyOwF2/NYebm9vD9Id0WjVNe+otVzzOt5ZiB39t2Ii6V15t8a8mubxo/7CEslw9ABhkAtwkakgQdx6aoY6n56towBu2idE7JHwYKP+zWQJo4eB19vJSwUTD7bHBFVyTuEFhZfQ11Q3173ThfkjL+NnuQLVI6msQmpNxZc51EsmcRlVkW3jfOmQpkiCIKhZTdR6chg0L14yBh56yDDQgTh+XNYF3gKBR1NEMdqFFYw1JdSJFFUySjCO7iO/xRX8BHch9Defgv4aIaoFeHLQpHde71pVGqwuPOVBjLRb1AUJ9FgvAM9f7tQZB6QnP4uTR23oInd9jptO/t3XqG0lQedFu9QbVKKWomEyt84Mhsj8nGIqyiMWrwhadaJvlSZVYmYkFLKUaEjXyht1LTOs8oFqZyoX6tPEnBxQkCoGooF4Ev0O1CTFpEW/MOFtjHlJ7OIB6xqekwVRMTVNXGMVg/BSR3smFqreNhUy46GeqKwm90ZJLiEnwtWPVIdspT8mXZte00FMYkd8WvUf+DDQqgZ3Aycffv9CBeNBnwu6lWOHmat1y+LYrIrdPHXwFl25RGt8uBYcX2iM+GdRVEhnDhMNVsMrWs1gKoc3fSlYpF7NRTu01vijbfOz9ZW2qWWHAG+iQKTE3t7O7pFaWySeCnevkJEZ3lFVYI1s+iObx/tBmhzIGXwuJJXymoiMjj3K+JgareZHlZFBVRRkKaaaJZQeacv3dKfLo5rIy6VeTV5fKFc38pKK3tpysNYxG1KDYRn0dlE3BsPh6TEDltSaXimSK3bWJU2Xdk0H7ue1RB5bU4mYkm9L2pG2tvU2wkJbok/qJqIWoOdS2XimK60qAzk7ZMkR2GABU57OB2o9mgA4l468im5juejmAOfrx/IC4LydCU0MwTX32Ic6HwPyPXm80hI+2HFB88THXdzNgAE3mADtku3A9vFTIxhl8kRQRbUrj2KlucEBDIgCySL9X+QwAmVDiERK/UohoZpYRPFstjdohaUL24TzQqq9cJOJUDqry7JaztF4rRW77rsSNLU+OZE0H3xKiWCrN2RGO/JlKYtTQRspq9f9xToe2Qnl+lui7vpac6QTX46+wS2AFicfPn1LXx4zXSXcPENsLiYvHtYrCsHctj07qBcQYbayikZbW7FWraBmDQpqQKQP0AXRbLS7XIrZhXw0v+qP+mOiGFF7BG3DEC/PdojpM8ZkXhexEktGMtLeW2rVdHTXjr5qIt05gEtx50ggpgqRvIDWYD6k4IsjeiTdVd41mevol6xz5juxLKX0hppIrrhIRmfPnxfoGNn9FzqWDZ0nXelzyqUvNiJy8bILdvcElL7yyiNcqg1rYzlDJ6eqYys9+2PnkV/i5/Dz3Ee5PwXc3HPH2iLgptE8fmJOkrWW4s8qavgLIeg6xMXCFF9uknlGsfzyOf3u0qEKYdHfhNCOJLK2XL7KTomoPyFs1iUF730bZEQMgeZcpbSvQg+LXefEK1JZOS4HNUukZ7IdBQVX45s68rHChmtIiDcwvg0Lt4aRhnNyrkjEOMF4B0FmPRdNA8skFyMlMFTo7Jm0EC9rciDMy/AlYoF6Kxn5eVnAIon1ZtpzbSkR8TcF8ObNxd4EyqXMnCzrk8Xu3w7kFFD/uq18PFaU27rLaTmwvhhMJDoLKxQQIZ03MMHCBmDe39REW+hsl/JFiwg8msMoajWyQkDE51SGpBXbS3tqhUYXxlhVeFnk+bBJsAX6KOGF2MDm8rceyXXrM9V8LJ/py8jJO9Hk+MYepCeM8Xpi3DSxGY97Nooe0CuuAl6zM055jesP5us4remDZUy1aEryhlv3KJXlQTpyp9OrkSI263b5pyvUEQUP+DeblVO8ZjYVMpIUiov6oIbswZyEeM1S+HYZqTzJIiUhhuCGhEknMAtiCiHV5IklSCACaho95UlhbI9aRkAWZb6dXPbhpIDSSMxmg715odFtUY+PDqyHgkG72FsMZya2BbE9Us4KZtrqMIZ6NefHfPyJgCpF1Vh7ONyhGmOyqhCDt9VsOBg1YljUwoGgpOhfDISRbE+kEqmBmALfJIf+OCXwKy6x+Vh7sdNOF6lUig2NBhxRvecN8gg6wnUCbrMK4JajXkYMJ61Q4zKzbUwILpWwUJ48Yi3y5EBOjOggeOPgOestElx/TpAGYcI8R8TM+QS/jcS4TBYORYkGEou64YqUKBh86ooNROdlgjUSfd9WBkPgyCR6Gea3BjD0BZgNangMTSDYon7gFkxiOMPsbRkERDyDwhQ+Gh7LnNjppmlTgUMA5e2ejw9oiKZNwoGLZuGGgIHJKwdXSVJSkvrnK+i+EM8iFjHSKrkV622VVoGcvzKEqCs3PAqT3FnqYgHW30vqulLMy5/u4qkEMGY0gLFOZSiKGlgdbiKBJTXQKXNha5NGVyyuLydkFAZMETl67lpFWXtuVOKxpEfE7EWL5FdJaXgWeAaPNEEJR9acHyM2iZ2/JhJSBcDR+0/hXBxNMBw1oP+BELVFVSIpkGNBnGcrGZSEiH/wUab+kbV+VKOQUQNewGbJfQKMa/2Dh6fZi4CNYllHcr1jsLEUT1g0dMDUwuCOJqJCV86D+IVUe+iMtpK5DFHoUnQpryFzseAiq7WmVgOsRSqLIi8fLV06bDudAGHHXnt14Iyi7q6r+y50192xsHn2sRYl+o3Ku6vtlPfTxXhMLB9roXr1dwLOa+hlwnPnwHjWhY65Pk+4Qj0J+FjTVTrOhB21oHt1whNeoUv64o3LljTMUmzZhCrwIlGGi8unlK37V5eu+8aqIE/clX8wuHzlYzqR75h6wof6dyWOmnzssElHXPrIOHkEf5cbARx1hX07MuN3NB+zJ4n41ig69EI0xrU8GSnri6bpKXGNhJXBNmBZUxtygbUjBk/CgemtYbs9hm9z0EcR3doi77xn7qf9fcKIhjaFRXPhjOlRFQsSyhGtqIRBau8BvfJjjnOQx7wMDBPdOvdyX5+WsQ/sCni1wcbJsx68JbZGa57TT8WdS5cNuNBRqZnOGtc09qFgvehJ6ngdADAybeXHJzSaI6VtkAHQ4Pv7fjrnvIencQBAF291bkOxDju8dTqA/xKG2K6SJHAKbXT6jAVTDAd2np+MS319L8NXMDZo4Cf6KHfkNlCFezQGbzvA+wS3EuDtpvB6+gPK8MNNRhf1oI54B+1LjGj0ZZAwuHKpoSmAP3Rr5c6FbR0AWEOTXIxjWdAmxvPW9AiFh6K8I4ZucwAehD9PYxmc91Q+vrCtHSFLzZy/M+DhXSOKmCRq+xK0o4/ymK2JdlgTT3AT/pqoL7HuhSdIg2uuCERdU6qe6dxDLIUfhHBPDSynafsjMJUd2xburKCbJYZY5Bx0bsOxdobYMOGNkbWB3KpRXhRgBbUNfgxGsutAGHRO1L5t4eMV9BHiItc56OGWDr6okSRd6jR7A52PJTSM0tt2xpOawVwnQfWZ6OAKiKOiLosCwj89IRdIIUG04TX0RV0UwuOzJ+YIs+NhQRSF0kce8tbyG3w/wDoMsOZUxsPF4rszcVczcMkx379t9CQ4+ljSWtmdTI6i2/aveTfOLuSC0UInwcHwUhirACPImkwGr3lqhxtTchJ4/frotu2jiSSD4sRs9edr9q8JB7EHw0nw1wb3czbfMYBP5Sh8AEzzdIv6CVKUAUQTIDKrN48BcRQFGxNx8DxCDMv6uSjLorT5j22ERD5w/SkEBPgWLzRZuxbbt3XXk9tVxFoJXRpIJPss6+3fCllpU7tIsA0rYfJGlUcciIxxWWiT5s8K8CJvfuIUyY19HvFgjkLbBvMd8HBHsefFGtKZx4+Foa2x94JcSKS37zVNYla3xAT0uiYYt23SkSDYVDYqXTFhLJF1TOZHp2FP1vHVYpaJGxYSSDZkn6TdOiaIOsVDbEv17X8HWUaSTH77nSYAGpi8vOTZP6A9/BmAsx90sFLCQHgJrNVlsKLjoOc4Y1i84Xhow59gozOWDM659FiYpON9BeAz2F5vU9xzvmXbhwJQ81h91XOuYwgR8oATdkaazxAqFN+rVotCWJP4jbd396uiqJ57bz/gIigUqyreZ5nOk86TauccLzZqKr4DSYTcbUhqfZruG+XOdRGdCKpAktefDpRNIfp0XZUMTUZypkxwvFNGApFcmSR7ZAKv8eTBKJ37GK1wHfB463BtieDMRBLQNVxphAToRQDGxE5qyU+1oIr0+qQhYonXTr2+jYD8ADi6/lSNp5LgVE1Him4KSjeQyGSHgh6zDFRBQ1olC9qkLoo9n92n8Tiw77M91KIjybkhzfmO84IRwB/V6+O8MDqoO09668rF8xD1z1i+Xt2t7m/0SSCy1EbZcNMKeJ8Ys11rm6J4yv25VCAAqOVFPUxRu3ivaePbfMQuXmmbeB+dCQy0SP3MtCkJtpC84TSFyLyLU0vwUSpYbALUJTildDREaQDs+0DIw6JbUtWl6vAzjjx3CC8RQwgGwTIhBOro47qC9NqUi9FdH0pB56kP7XLROVnXkaqoKlK6KD5LioQfN5wXnO9oQzkXn733nkvH1utiM1vR0BCqGHTl/KVRHwN8Dun4NsutFfIL8k1scrPc6bCvts91sn1V9wl8mHoMuVowtQQuKQZsYsnDc41W5PGWej92FWnvbFoo56lXFl3bbpwkqukkwKf6pTdeJ3x/SoDdyfNrb8yHNS2cv3WC52ErCPD49TeWP1bVcP4jUyL6hbL4N8VxVR0uKLihFIbhCutYl+Q1IzKopPzIGp0HUVZUPrUuJPI2L4Y23UGTKqm8fvw37jSek4vtopjLynI2B38BL1nnNbwG5PV13KmAly0bSjzFywTxqlLHKHqox3eAzhj1i/P8Fujk+nngWBo4XxKnEiDDSczbNYHmbKMCNYUQWcrcuEXHkhCYWIXQ5FRAkLA+3khkKzHJlmKVZHp0jD4OTlclqTodpI/HRve8L95HcDYvy95f/FsiExLYclNewkYQBJJk/VPO332qlpIQDhpYSvRHCuPjweD4eDo5EPfeyfQJ+FShL+O9Ex/YsSoxw/P1orK4W/Gu8AP0zPzIL3Gv64cLeMmmotQOHfD9evKNCTxcr7q+hrQCGKrlIqGgLgNB6u2F3aDGDMEMOm8TISwQZxHd67x28yH8WdmQyHsOXtm2MocUHOQXdxAJ2PCDjgOy2b1oFfTbDf3W8XNAq6gtdnplRMFMP1jiMuGavn1yv9x1r1l5WqKyYazmS7b+sQH992wowVsbqglJz4tb90VruzefPbyuLQo7Lja7dnUolgmvDpDwQluqNBXq6nhuM0i6Q2E1HA3u18W5gVAoiN6OBFWjvsEQkHXrgZVbDm+Z7ejKFZW2XPzA2gmDl2Jrta31K4tae0rKt3U8e76N+qPBws6Z/JnImMuPj7o5B9DrgF/KjxXKN91ECwGactCN+29G/39WBTHpu98zTXSTczP8vsq5Gn8yKcnS4nk0oiEpoSz7xc6zykceRc/Deq5x67ndnPrEzg1rRhLUfynmZt5oYaxayTKfMj/XxvKyGK6NMlQrN1N1wN4PwRQQzz2vVmdpbstSmNwgmZomp8KlTLK7MtWTE3iVEFGld/VEoLMUytSn2ws6L2gi/+VuPVjpiJuIT2wN9WofTPZ0FlJRgkJEQtvmNUkulOW23h333bF1fb4riPWCqqrsrp4s77z/vh09mSGLR4ZdAoXzRyREBgsfuiwyIX24ijJTdxcXv5rMpk/bJ01EBm8e1jWCnZepX+mRfyJB/BCLvZMPhyzFPVNhcoq3fgVYv9FgNdgv4P8pOA8ToR+W7cP4VkfGb6Lf4z+jmW/w4gz1LsVPziMkOAgzPrXtyN/j9TjF/AjL1I/Qzc9RYYkTaCFbyge8rA5+ikkmFnj2l22fvRLlavF9lnHepcnZC4IietqynLVi8MINbZeeZ1hnXRw//dag8Pv33acjyVAV6Dp01nTcwCCcYCO+dr8tIkUzJN76wM4YzP+2I10Az/Og+63lFmD+109PjoXc+WfT7kawUwirvkJV9TI6wQWABX+jS2BkRIzOO4tAggb8EZ0XFnKzOyICwJ8eiO2kjsbzk5axQ9saf9ayXgqtMdr7/BHUG5cS/oC9SvyvYvSLjamdcTpQ6pI89fFV58SKdGwPKrpM7mYjjHxuAAbXfl0ipnhjk3M/xARFsh/QYMhz91x0tY8Ezy8d5mAdzEG1KTfXGh79drUCdurd8L2raMQA212tVJ4DqLTVR7UQ+vR+6dyz2ITkcpHYdFR01sK2e1qMTscixRQdFAZCxpsf2BlfF9tznQwToylIkE3Nrm8BqGgODCO+pW5rFo07ZfmqtnE/x4+DnCwBjGJTToZFsc3E05a1+NSvWNClJ/vsxt9Hr3NZeDfYpA3NtCDNKt3eMCiRwO/3M4PAb0GUdRE7/8NLEfID1rLzbwDWH7+3QxA1/pOfdFOELKn1aEFfEpVjGJ2gynYGSXR3zEo6Op0IBujPzv2C9HtdUskzwFl1SXh7WlWX14v0aNkfVB4ScVNcET2GvsdtoLo/8yGl0+WXS4r4RIoJKkuU/qifT6g+zE7giswbETeWZGn4mRFHsE1ChjDW1iaKRkTF14r9u5WgJfPkoBEyrSWPUMd0enV/3H2IMjfZIdhtth74oMj3hMIknlTxOI72KqYVwXjbTTZocgZ7GA7RhyhQMLNR3X3s6jJcAz2Nnga8ZIDuxG0Vs7O2pscVhXB5AbnhGnr64Py20Xp9dCv8vrA83FdavbpzcKBz9ZubLx8bOWWhPjY2MpRMDi6cMgi/T1lw9VG/H9BHXd/DZX0sa3NJO/S7M0dGyHaS49Lw3UQQeeddDS+PdKiSdC8iGtMJyJl8COHrESaS8DB64TtE1m3yL//KWwr52qO2SBC/H2HVuQn9OXoE+L/opJ2kRNAD7vka6Iqwrv+KGwTaJB+erBYoPjwvrpjrR+q6qrOcfp6BrRrxT7m9c7SGf1S55Oh7ZP+Wc7ZZcannopVykZftoLp1IsMrlf7eRFsEk2Rw/eriAMHSjg8U8kOTHWtXRuQdY/SFsXHT1Pj+lX+/65b9oZK+YUYoY2zu6+fDM1NRA1fFWnK9QPSPW/Er1m+4GNtn0SfbdRA0z3Lzc7g6+19xXcDRZ4HeTo0OdEcR8WxA0WxLsUojs1mg2j+ERzRjN6rUfa9o5tdZWJKY2x3jzbXVOxZK7aY0vaWnnM+s2ER6C9XpHXPLb+G7puZPWd0YWtnI5uR5Z3jVphV90WittoJ+Xjemo4/1jmcHQuq+vK3F3rtJqu9pO/qG89VzVm28IFfa1dml7kUb9q8e22fKefZxm4pbPuqPcwlYLzKlF1XXxsn54TE0UyXTd9fbWEUxlNGJrBG07pZVzr8jFWkG9cGAjTyBNvCaIgrolPs2Os8xOr88p534mEDbP2H+OszdALTnUnjf5gqwptJBmeo1Lu5tN/1Av3ukAdJOBtmi5eq29o2CpYkYU4Mb4tE3aH4lGkfII0Y78Y9hVbxd5zUR4WvQpegnMrtaLBwiCOgnedazpf0S78M7QEYGuufGY9B+k8xcDxqShlwPgloSoQlJ1nh0/fU4KIgCJr/6FZL1IIbPC5KEnH90XhSDoOFLOLz4KhAdEAO6UPHoPiKMttJ9Aipam+udEQurTNEsqaiBNHl54wikb9rnWkmjjS++isOscedF5x8R9IuKqGtJH13QR8xwcT5cG6Y2v7qfgYOpPnQsuFXhAaSAU2FOeKRkS380s+WGfBvPZBSsZrMXrPjg+oKIIuZ3skM3mRiV27srY9WuLvFv/8YyplF4eiBfKG/s6Bee+/YyXNKzRcPTpyNhKoU268RSsu4SIzqVfqaQOl4A5kth6Hj/uvmbCkkBOK4Kt7D54e0MBgnvsJpQ9AyNV0r90vN/YxjfeUFdM+eCYHG+X+ffg+xE7fx1aneMeR5cFnXajzaTQjZdHpjBnGrG7CS/+a9QaqQ6U9GAqBDDMlUrYATikdQGQemNGc0HdlBT7PhQsNDWXu69PNqWCgeTBMOWUWUxXviLmy7/3Jk3WqgvnV76SFF6Cnct/vvuchsZ82NGbgSaeilX8fdjo9Ai364m77li1L0yjywdY5N2ArzTJpLnV6paSE/Wc5l6vLvcW2grKoLJy8MdmZScivZvcu82JHxjXpM2nq1gImaSbQNmIhGabtcD+WC4sgB8015Db/XNZT18Psy9hNdzHX68UqjWPNRpHaf7LtF13+OhkVq9gVd7uhS+Oxxty0+u9z9EUnjU3LchHhiYm+tKGpu7wwjr5oF18UD//Gy3d4Px3XbAyXe5btCC5MOVviiNI+OYW1lr7F6oPTUi0XB8z7QE+mW9gTwTZr6EH0+tHg6H1EK2ND1VyGb4RncHhj63rVULXelojd2rz/OL19n4aptmZUPfzU3tCUiGNTxk6p2loUx+Zp9i2HonfJypOx+2BMnQZcnlHVwUfx/PwdyNcxuBd8xMrRyWqawe+oPnUPJAFvKlCFxmCAP/D5rZBBUiTedrztdsG4ieRAgbz76Tm/D3GZKsazISHrMEannk2SCZDARz8TI3wJ0Jc7FyUFwyF8WmCaXYnAtv2E1/RLc8xfEe1JqVS5c1BNM2UW1ry3dk1xXNvk4pVCkPEZg2XhntCQewzvdU8Pt7u0S43y8u3n7s+yle3zl1VBPo5ezoZlsxtf6ImlBQIltLZ/Ro75Qhoziao3fSdefyd9xK52x7ZOPSb3nyoQ24+Snsj1WAm8FycqmvnyfkMJ9e0kwg0S+EWkdfhdaIvT2kyYp29c16ImZ++Grd1hCIPHj3GTMTkzNn7MYs2fq3plfMrDtjt6XZ+tUfNmMJ/db3wYvWbvRdoNz7AhgH9qmgiQk88PGZbCyWncE85gnv/F00mp0xFFlnbwXPhrcUY8bNbUNpEL6PU7kYV4R1nEtGDJnF/B1zVaIlPrIjx150gaab7GmGxKzazXUFn9EPWz6yI6Dvfh9oNtX94q7+QjERKjIzMD17YBdBT9klTK8VYAd50GBJ/ExYiH/kVdPmjhjDhvOobaL9DwlUn33wVQDtiFE30GYGmXPPIwKLpB1CGjULJw8kqEUYLQigvPLOUwzQxIGkB6fzRRZnS/Hj0iOFC3BtgJ9E2KYnUS385EthT8OTmncYZuzFm2ym2wFSmhTmabrVDEn4KtPrvuRTFAx68Hvx4/ga6KMD1lMxY9G95kb486DU88y+U+xoBz5aZ9HCSwjd52Rdcl5+67KbUY4nICH82HkJVoAu416BX3zCwmug76dMfI0pyeLN7xtedTNIGkF88y1Y0DUR2D7Gi6am+LStBUuMy1P7YdJorm2dqeWiweKoG/WOBiq18LBVFWXUAexdkrDzkvNjMUh4lPvd4isSasJwnmjecgsVbfAtNzNx6ub3ckekxe5W90zXeIY8gkdAbhqG/nvSNu2fd/WiXsQM19wkironNIiLneAR/qAuC4ri/Kvj0OSDuF3gCTFFsngEw4ZqnOBhp63xwl0foyXzBNSDERJMWSTOL5yfIfH4j7xzMAp/g9vOPQTwHzg1sIQ2cK6hjvd13grVkKuNKvt1Un+8i0nMlV2X9f/sRoESiYqJA0A5sPNvN39YFSWQoFdfN+Fm5GDlbN/x3zFvuk++uXgESWhoWasfvvk/pVVclAxBcv4JFpIo8Hdt2CDottixvoDe5b9LUIyI8tLvfmrDxj/ku5798EXYJ21MRopRGUkIe9yswFaiZ7QCKdz13fbkFPx42Bbsuw79c5lXVb68Zu617WUZK3pQHph/elUhWr4qJwXi8RvHhoCQR2ki5/iBgXFLJ5GFkT0lS5MCYxfHXduZ2z+V/VM68umF6CctopSi0QxbbEV6xip1SjM0vvzJvW9GBTvsdpwsXJWXg7yoYrm8/Teza9UoMjVVA2oXrj0Uj7udK9bKSwpWlAih8YEDcVqE1rWjPu7bUUXPjtpKQWuxc5emj7t75n+0HTWULVfif2IZn/lCAEmbLzEQUjc18ulw+0c+Y1h33yudc3doqSEVNm/44lPktqQ8eVbKog4VVAlF6rV7Yi274mGAqe+k7Iqe67zno8Usil6f1KIo33O3B1gu15hVQZqfbRRTDDRqTETqB/csNSYCbLKZOnvCDobsCQ86pABd2ObR1X6uDnRheKgsunThD8GVb048WZyFTTwELOg7aPdJIc9Z55syPT5wGODtY3S4Nmh5tvc/AI8+uCeLT+SBi887WbwuZj2I8RI9dB3Au6LbcHnoSeqigm/qYaZ0uo+YmZae6FSHa++uqTpv0hgaHn3Otj+H+RSP2cW7q68XaKIQWbVZiSqbN/O6zm9ml1u89fIs4J9KHvLhRNjlw/WmPZlx3bLWkgTO4HU8B+h7DteA3T4qKEi18Q64fNDEF+k8tSTrlM9iDYWcSkudgb6mvLVpA9eVD8dDMu3LP9eSXEEskCfNrqZMPC/JsrT4KAg31cXnTAvvdDs6jWYWX/yhSqiYhV5frC/h7Qi0JQ7vgTkKUp2X7ssGTQsaYKOiPcF1/hxJ02kFYMxDI3DpDFomsmFmUgoPPX7bpJl4jmpLcO1Zvr0pH6hXaHPCnM4zwxPIyEkJa84RXqcNGdbiT3AWUPVtgWZUEkDmeBhk0fUg8+SAnla4lZw1pddrPd2dHYm4gQTfMOVrwK0kYkLA9TGPdLgpHQJ5+HHrZ6HhfIBpf3cduO62c/Zia2FsfrCyeaa/80xkoS6hq3fTPhlv0O7YZ9IMl863nX+j1xitdF4jyNx3B/rZ2WcfuCFqHty6ImG1x0vn3piWDt4Aww9mbtwsyxfcbmDnNefbyGaXSJad17Bxu5s3xR9POzcEcmtvqZgyWrbNYwzDy+zJ0lZEhvORZjaPYwGPzwJA7Uwqdvr1Gt6w+IR257lSsk06985jQnwNhU4I3XqOPCjLF94OhAqAXIrzItcLNGaC4nxlfaivsz2bOCHOvVRtsXqjHwmUVFLHBURJD3VlkCo0nyTw22Oi/dXZi1Kx7UN/vfcsojqXzMz0Dp+5F50Gf2t7937gklP466amrl1/zGFsHRUCQ3991l6sdJ5y2eULPcN79zo/9q++vpZcu2rVteuX4b6TqwHu+7sKiRPivsM/qKW56CZRPyIVbyzArY8/iLNvGQrxZ1zxHaIePvTQzBmXfwe1Tx8P8PCfXLprY2bPFS9gZfH1Lx66dDNcorYebvlaGQJtVn1ivFE6CXhbCXYqLfsPcSsc+DlDSscEni2c89ZMJVKXrUtNtMGVEqqv/cdSEul8vqunUIlIxxzGR7AQ2bpw3uTI1G5TYJft7RtHNzivZnp5xHfnC719JrckjsTyz+tcGsNc4xntPJNSFVXXJPSMZTlrKHXBn7KR6XwbiEQrn4vfhs7OZVzaxA7taEu4h5GmtbaNnqZNMRLVANKNGraXD4228QN8T+tsbUkbFAx0N2vih6A+0yPA/8Hg2A9N+D6FR3+/3S8s4A4F/wB0Sui/mw2lJxeX4bt4P3S/+CeePZ704F+DFvcOe7yn2hdqxUilVvX06aaV3tfrmaDta/a+6d65g+nK6B7k68p3AP/QOR29gl6BNZQG/pFK6E1bfgaHWxneWM6RWBlE4fq/E0HE/Es8/GBRIMKPqBf6j5575pk9e/ein8P1S7Isv4TpTZGo8Pxfnnlm7549NGcD9xXuW6jOqfTcE7vy5tHRur/3zQwczdhso9+gnzM7a0x0zzgbNdcPOVL3YlGBboD0XnRPeCxUAPHZl55pMqPvZxAP4jjOfFVAymRQ33U6jBDnO9at68hjjHQcme4c2o0RiFdJ/DUMr34d5XQhq4h9j+ooX163rpyH5d19QyTexyOk032XPPIWOR+9yYlA/aqw7wb7szKiNsR2u8CH+Swz2vfjsp9QDbgb7C7PW4Ym/YcLoaNgV+vtZBV2voB24i5JJyL+s79Jo6e/RyNjkCgINMUvlr93Xzb7jQewiGHCqs6DVLfaWUF3fAt/E3WCgHzmwQC65CoYkoZe0mBAV50eCl6xF2HrtW87l6FvuvHWR/6Z+xa5AfAeAS6pPpGOBw1mC1mC/8AxL/1ZWf4n480RetS/+EJz1tz47q/w02yeaXy3+kQmEXpHf3940Pbvjxe0zfq8kdvPX0NqnAZ9FqDPbCJkevawVkeo1dFSg9iN7+ir1T3+ndeN8+rRF4xWfOmIiB5gZ2HiY6bnP+xlHqEFPIBufInXL7qICoh791KygV/SYd/ERfz2ApAN1kYE2jC8NhjNEhi9KbraKM3dgwz61b17iWGQSy5Wyb/CV8kjrBkmoC2Hg2c2uZJHOT1oil/ReUpv9u6lsFz0e14n3waK8/YCa2UZHFQuE2kbIdc5yg+xW4kC9bdAr9QuPrVNEA2yd6+Kfw1N1AXqIsMO8cgjtk+HryaPoBsYDXPPSPwTh6of8+4ndCrmJJOfDas9MzfeP3jo4PlTIJ/rQKj6J9//Bee3NyERC/zVgikbqxv7RGFqfK8hw27RMJrq2fIMplVvWX83QX9Xs/h6jfbHVfx6CVIrkGd4maGX3BnUET8aO/dj1alVldvPjY1SmVNXJy684EPXXnDhBLpalwWsjYd3pFU1vYOm3xZk3drc39PTv5nZQXV0Dn6F6c9hdn4W83huWAxHfP7rFuJigd0sU1ht2I/BR2cT+dQQs5Xw+f45BeiqtDvAPgvbpiT8ClEMfuygeXt5IoPUg9cLk41NJQKUUxbIxBXmHeVx9/bcwXbCLYGH+hz30piIRhREZhwVo+EIO0yUin5JJ4BhDJfqJVaHbRzXVmL2AsD9a9q9vUcm4VP74sQ1ndh7JEFW5vtKaBGnzov3JKO6wuMPTfKGQvp2DVbEc8pXYPmaeLf74NopIsiCXJpdv/ZgsZFhespK2KRj+HnQiWLAZ8JBzfXLcDUUN4tiLNqGyjWYwQgZMxfTNiHofMzrEs//5ZPDzuPYeTxsSIrGi7RuHXTj/LnzEKhW+xbvQa4uBHQZ/QPQ5TiXpbwsGRBcvcsnvUtc7QARfYhR4KRPZ5+nesu3fOqLrvNoLfoXRlbfJ2FJJvJBRmr/zaetMK4jXWQMve6NKxKUmO4KqCTYOyJme0fIh4GNkX7zyb8ivMnzX3pCFmz89OIFaCMtKvK6ZIgwnD/HhGC0Gm03dKwpnWjxHrx/ybiCXILiLmRRHt3BYrRc1lxvZyPEjP3E0D9QZoKee5ZXFAHdIVDW0emyGdXC7z1IhKhAfkGw5cy4fMS13XYBQXkOpIARei5SsHxf5VY+taYs4CWRQLWjsiD45yeNOrpo9fi2sWseCOB46cHLBkZ6Ujvvrq4GVl38JP7Qd+9Wuga63vNARNDj1562fj5q33/hnIXx4Wi0+3u3R9tmN1752ZQuWPtmz3q/Vppff8GnnQMP/jqEtMyT1xS7RofO/nQpg4M37r0+zM47PwCy1ovcFKz5oaDvh+PWPHazsbBpoIuM3Wmd4rmnW+ysPcP7Jjb8g1Vra+skDAxa41fzmhCrJDpWq1YoHywRwdgxu6UiSiov8DRpX2XLqaU+CT1/4Oqugszz8uymoKBIGEuqENg0K/OZWEE0UysuKibXXrJ603WmgoGNq+i6TXOjq9eKfu6JfwL4nwcasoP63o600fUTqlD3Zb+uPPXH8q1LdA6Yf3vZj8ahXs9+RHSseVY+XGsd8HlHr1LhpZEdCUxCCwO8PtIxi9RL4jPtpbAs8oKk8CRcap+JX6Kiob5s8EB3x+XljiStshDoPqV7XaF9tN7TqfCWphC13DWugEz1/OQgETpHRJQa+ZgYwpcfSq5rH+2PYiTJav9o+7rkoctxSJy/CFoI/dmm6alL2isDvJDNxMtz9T2nnVHp6+ocjWvmSGcnYng4g81jG9dHY1DSzGaCfHIdXuL87Z1bx1xPby/jIfN/v0IXNenQl03z8NV8kn/v/bqhKOnCjWcZcYHgS+4KBu+6xL/AsDnU//2AETS++Lqi/OpezZDCUrL9tqfiYwovvPCJQOATL/gXjJ+lYJ39Gv+Q2w7rbDbv5on0FSvf2wggYaXyWgfJLugWYpWLmlkZPXvW8DEWKJrk1w/U+6s2HusPxoYKIJACZ1XzcgHrC+Oi3Z3dEsLYaAiqRjNXFGqZeNdQNDJXHVwjLFmzk+X+Utc2O7DuXEuCNhDS9Gher65KKhM7FRToPFcb1DYOCCBYIGjEDO+dqvX2jvR2SUevYW+N/hJtArmA2iTkw/mE7a5RGq/czBDDqrYTu1EP1dwqlGk6LZs0WelqVKc1hKJ/axsGrXL/X+uJQaBLs11J/GvReVZsW10R40nl07drIroaHcKSs+3MaEDuvv7zs6eNsf5XHcmjtfgloH7t7FzLbOooAYZWajGiQTVe/AfNDzFcK4oWXmXYgqAbo9HzsWKD6mkaw/EDolh+lKbxSu9ux98DofpnghBTusTFDkN6ThAjSrd4YD168AFVbzfZ2PNoDv+AO5s7H/o+b//GKKW9tPA8TaNIT9SZR5koRdh6oBGFNBFJYYAGJLHkJUd9pEs3w7AzTPOLVmMVpnW7p+xeq/BBooJXoA7jlgi2LZ665KJt3QRYMo0aJiGellSGjWssvfZfA8YVFugBF3vTbQKuJtOFyW1nCtswqHBr14q8SHCgOpWzPkJUhAO1SUnoLOiEEOHBB5qX5x5g7yXmz85Z5x3AREY4vnC25DYC78XQvGbEnEfdPEfcJSBDzrG1Ij5mMFnW3SeYpkqaRBU3dJdmxZ5DGvVNfeIJQkBRRUG8+7TTdr8iaaqEXlLRS5LAo6Dw61/xv/q169cioii0G/Fj3rzihMEw9lKgNOpA8xrNRiVV1hBtEv+ItukUVKcgqZrkNwltPrxEfguxc6BlApIrpFWXy3QtcSqCzmnJSFReCzelOSZA/cYXja5sCmm+PFeayCL50FI5yvNB1rnXAJ5BGjPGxji8RDA7SqBkVHCZGDc84glp2BMnJSzvChBfgsP/yxPJOkZSxL7MlSZ5RefHr4zccv1y6Y3z41aFN7zcE3maUyHk1rg5YeCqdL+wyrJ+/99OHKuKTPldc094Z3VviIH/i7wO20xh9YkCUH//lZPL6wA4kDTofz09q1MYDk6i93dF0ZsnhE16N+SdGPCTwevIkVfEADZYvHreovzMMyadZFxloezHVsZQkP8NszW9NXaC6Er+655tCjs/bMZYPuyZot49whL5MZYe7P0Ae/0PjlMsF4pCK1iR/9oxgxXfypq2oLWCFaFv57878C7/k5OMWaS1MbyoRVe2fkVSAd5JJuPNTgWWxde+E+Z3nQJ6Hx01Km8yhPuOPaaVJ5qab9CHbx0U0ssH/VRzno4z5hNOGx2+8xctlLTmr+Ht6f+s2H1h+oS76an/l9j9FEzg9/BD3KkAa3+ErjXon/kxBmzmuuiKP/mcbyIBDShgM1dH19wQdXO9URLOvpZAee851bvpI7eyMP6eHI70KIC9nkicKgrOw86X4A+Ow12Mvbt2x5mJU8MGz97FqEjvgwSv29tXb7d1EX9C1GEYzi+cnxNNJGaQulcHTSKCbBVDUZHeC4gYySZ9T3T+2fkxyqGMqAm6KINQhoSl592dwInkwwM9SaZvNhfku7hJ+KXQ8ONhTaYuCa/NrTmBx8Tin3rBOKfEVNv1TTi+98Qvm2fGvq9TN6jV8uGhPlAYWn4UvL9gju9IwflQug4Vzs8P7bWwrB3XpWLxyx6Y6FLmWyHOrjjPVmPHca5wTBdQN1iql9vPEU4COEGmobLzkFfPYL/7H3fS7zFDB7xF3xMfQ9TmNOQ+5/4PuoYDQAAAeNqlVF9rE0EQn4ttqgcGLUVEHxxKH1pILrm0CKalEFqCJamlTdGiD2V72eROk7twt0naj+A3EL+Ej777XcRPIfi7vdU2Gv9nye1vZ2d+Mzszu0R0xyqQRdmvRW8NtsimzwbnaMG6a/A1Wra6Bs/RovXO4Hl6kMsZnKfF3GODb1qlufcGF+he/r7Bt8jOtwy+TQv5HpituRtYvdFeUmzREn0yOEcF67rB12jXYoPnaMV6bfA8bVsfDM7TSm7Z4Ju557kXBhdoY/6jwbdoKf/Q4NtUyD+jHYpoSBcUU0A98kkR0yp5tIa5ShWMR1TSyMWfaZckJVo3xKoNzQCSELOkIiR7GjvI5e+YXdoAamJHaK469gR1wDOAFe1Ew4s46PmKV701rlYqj0rVilvhXZkEvZDbXiBDTxZ5L/Qc+3tld4Obvgi57omOHICtCepjUJ/QKe0DB3BJTXEsT073RQB8hM0ejaiPzRhL2Rv1BUADpwgRezrH0JA6ekfnoqbj/5G49D1bIwpVI4p7kqtOhWt86bj0zdEfEc0yfAqVWNck0nl0EZ1Lm0AKowvDEeYIeQ70SdIqjLXWOmpBT2WcBFHIruNuslJdMVKRH4TI5Nh11tf+I7C/a63iXzRXyrNFEz0ctIsAt08vMZ9jnRVqG37+twmn/bwyWmJK56q/IjxO4CmNhnWKEl2cMb4dSL42E9MTMAx0M81Kb3p9bEjTkiVTdm2gLtBEpz21zzT6mD2dq8T4GgF3tHfW8UhtvYcHj+kAOZH6vJfMrSmGNNuzG8uZimzaLyOqsT5D2hZn+Kayy4wI7bFOhxorXCBb10QhnhqVMRKwpbUaQpbAV6K5vua4jMgbiPRnj0Nx5uvAq1uTycQZCOW/FOcO7uH22u9eDGPzCiKRSTK7oj0JlM9HMpHxWHY4vdn8RAzklTvt2PaxHyTZXjvqqomIJUPQDzwZJrAahR0Zs/Ilt/dafDCUYabcyhSKfOVSOhmZsWUxFkFfnPUl60AEN+qHLFTN9pUa1srlxIuDoUqcJOinEZcPGkjXP+X4V4T/+px+ASTcdiwAAAB42m3TV5PbVBQH8P9/N16X9W56770ntlzWTpdberJJNr1qba0tIsuOLGUTOgmEhJIehgdmgBkYmOGFDs98CWBowyeAbwC279nwgh70u+denXuP7pXQg+71z01o+J+Lyzo39KAXkxBAH4IIIYwI+hHFAAYxGVMwFdMwHTMwE7MwG3MwF/MwHwuwEIuwGEuwFMuwHCuwEquwGmuwFuuwHhuwEZuwGTHE22snkEQKaQwhgyy2YCu2YTt2YCd2QUcOBRRRwm7swV7sw34cwEEcwmEM4wiO4hhGcBwncBKncBpncBbncB4XcBGXYLAHt3AXH+EmHuE2fsd9/I0HuIMP8D0+xI/4HF+wFz/hT05igH34Bb/iN/yMPxhkCJ8yzAj7GeUABzmZU/A+p3Iap3MGZ3IWZ+NLfIVv8R2+xje4gR/wGedwLudxPhdwIRdxMZdwKZdxOVdwJVdxNddwLddxPTdwIzdxM2OMU2OCSaaY5hAzeJdZbuFWbuN27sBf3Mld1JljngV8zCIessTd3MO93Mf9PID3eJCHeJjD+IRHeBT3eAyP8YQjPM4TPMlTPM0zPMtzPM8LvMhLNDjKMis0OcYqa7T4DC/TZp0OG2zyCl226NHnVY7zGq/zWT7H5/kCX+RLfJmv8AZv8lW+xlt8nbd5h2/wTb7Ft3mX93ifD/iQj/iYT/hO0HesWEyPddUSQ8p8VtTFXNdEIhPYbdTrRmCkZnpG3wGjPloxek5ZPcNW4JhVrRvB482WZTec3uGa1TvcsjppWiymiQkxKabEtJgV9b665fieqcJCtyotHiuF9o65xmXPd8PGmGWl41om2z9uWqbb8lyj1QodleGAYZvNWthw3ca4bY55wW7Lb0a6ula15qnBSmPcUa3RhicJfrPiqAWzaVEKyGZEVWdcl3F9ItaVubxYUOZjYlzMR9Xqo3anushE4DcHJprdGp8+1SnzadCpVM1TSIXbXm2/vmH3m9eslmc6nmXYIbPe9K63TC9UdY2K1e4MmrZZbxtxGp40Qy2/XPNqhtedS4snxJSYjhrt+VyrdbluyIJaPCNmo0230Wy4ntVwDDtgOFVbHZamyTxaKmI3qlbZsA2nEpZmw41aTnvSllnuZAbaTzacYMuqW7bhqrxkTEyEyw2n6vqd6lWP2k0tFes3r/jW1fYZO2VZNa2LOeWQxEO5bqHtFf3R9n4MTgSdm+lFXXPMNq/J2ESgxlR+pqjMxkVNlLfMJiNlyy23vzbbb0lXelB11X3bs5r2demWrZNvR9NlJl1m0pMD7YWbplOxyv7T3dAlK58MVhrefweRT4syXpQ6iyVlSdWbiGXErKiLap8SmiaqKhK5mKjyU7mEmBXVGaTy0l8sBVpNo6JOIZ2Oi9qksu2PSlAQi6IqcaiYEbNiUZTxUkpMi0Oi5JUkr6SL6qfTEypf10X1SsVSqSAWxdK/HLfwkwAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKw4=
d09GRgABAAAAAF0MAA8AAAAAoegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABc8AAAABwAAAAcacggO09TLzIAAAHMAAAAUwAAAGBFiVkuY21hcAAAA3QAAADoAAAB0gm5h6tjdnQgAAAKkAAAAEEAAABoHwAEamZwZ20AAARcAAAFqAAAC5fbFNvwZ2FzcAAAXOgAAAAIAAAACAAAABBnbHlmAAALpAAATMYAAIXIiPZ0QGhlYWQAAAFYAAAAMwAAADYQS9kcaGhlYQAAAYwAAAAgAAAAJAceAp1obXR4AAACIAAAAVQAAAGY5VIM9mxvY2EAAArUAAAAzgAAAM4cDPvubWF4cAAAAawAAAAgAAAAIAF0Aj9uYW1lAABYbAAAAxoAAAduWDuHsXBvc3QAAFuIAAABXQAAAd0kW73NcHJlcAAACgQAAACJAAAAlYH3c5p42mNgZGBgAGLh065T4vltvjLIM78AijBcm+itBKP/3/yvxiLNdJaBiYEDiIEAAEsUDAIAeNpjYGRgYDr7X40hivnU/5v/3VikGYAiKCANAKLnBsAAAQAAAGYApAADAAAAAAACACAAMAB3AAAAcwFpAAAAAHjaY2Bi3MM4gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjAwMii8/8+s8N+CIYrpLMMtBQaG/jhmoO6dTKuBShQYGAE9CRJGAHjaHVFBK4RhEH5mXsRSsvpa1mbtfmKzK+uzS9ZXVtK6COVAblpJag9+gThuObrwByTFweawubjhQjk4uCgODltKba3DevZ7a955ZuadmWfmRQ0OeGSJVw0wPhS1AlurlEc4xkVEPxDWI4SNn/YswnKLoMYxbVbpP8eAeYBtbOI/OHqIiAlQV5m3jZQuwtILuJpDylxhgvWCuoB++jLahYhcIibXiGor8QuG5RtT8g6fZpGUDVhyVv/VNuIRDJkCa63T94moVOtvcsece9qvSMsuutX1YpY+UVzYrGXJM+zGXLpD/nNIehxLnO0L6cYspoM8cgjpKXo0D8s0YUUPyGcSAW1Bu5QxSF59UkJCfrxetmyxThbjzBvTTQSkglHGPV6aIY9m+va4jxnu6gZ+DZHPMfvuo1eLxAV06jL1GuLcR+P9vJwgpmX+Q4L/kAf+AcBJRPd42mNgYGBmgGAZBkYGEDgD5DGC+SwMG4C0BoMCkMUBJPUZohiqGBYwT2GewTybeR7zAubFzMuYVzKfZL7IfI35I/PX9////wfqAKl0ZEgEqpyMpHIp8wrmjUCVV8Eq/wKVPv5/9f+R//v+z/yz/M+SP4v+LPgz/8/cP3P+zP4z5U/vn64/BX9yBdKgriIKMLIxwJUzMgEJJnQFEK8iARYMQ1jZ2Dk4ubh5ePn4BQSFhEVExcQlJKWkZWTlIPLyCopKyiqqauoamlraOrp6+gaGRsYmpmbmFgwUgRAgdkEWsCTLGABiIUS/eNqtVmlz01YUlbwkTkKWkoUWdXnixWlqP5mUQjBgQpAsu+AuztZKUFopdtJ9gZYZfoN/zZVpZ+g3flrPfbJNIEk7w5RhfM+7Onp3vwoZSpCxF/ihEK1nxsxWi8Z27gV02aLVMDoUvb2AMsX474JRMDoduW/ZNhkhGZ6s9w3T8CLXIVORiA4dyijRFfS8TbmVe/1Vc9LzO/72/cCWttULBLXbgU2boSWoyqgahiJJSXGXVqEanASt8fM1Zj5vBwJO9GJBk+0ggkbws0lG64zWIysKw9AisxyGkox2cBCGDmWVwD25YgyH8l47oLx0aUy6cD8kM3IopyT8Et0kv+8KfpIa51/KRH6HsiUbek/0RA93J2v5IsLaCqK2FW+HgQzxdHMnwCOLgxpYdiivaNwr941MmpoxHKUrkWLpxpTZPySzA/uULzk0rgQ7OeV1nuWMfcE30GYUMiWqaycLqj8+ZXi+W7JHyZ5QLyd/Mr3FLMMFDxFHwu/JmAuhM2VYnE0SFpwceknZoozrqYmpU16nZbxlWC9CO/rSGaUD6k9NZv3AtqQdlmyHplWSyfjUjesOzSgQhaAz3l1+HUC6IU3zaRunaZwcmsU1czolAhnowC7NeJHoRYJmkDSH5lRrN0hy3Xq4TNMH8olDb6jWVtDaSZWWDf281p9ViTHr7QXJ7KxHZuzSbJmbFK3rJmf4Zxo/ZC6hEtliO0g4eYjW7aG8bLZkS7w2xFb6nF9B77MmRCRN+N+E9uVSnVLAxDDmJbLlkbHRN01T12peGYmR8XcDmpWu8GkKTTkp0W+uiGD+r7k505gxXLcXJWfHyvS4bF1AmhYQ23zZoUWVmCyXkGeW51SSZfmmSnIs31JJnuV5lYyxtFQyzvJtlRRYvqOSCZYfKFEh84FDJQ0eOlTW4JFD7yqDpsuv4eN78PFd3C3gI0sbPrK8AB9ZSvjIchk+sizCR5Yr8JHl+/CR5Sp8ZKmUqOlWcxTMzkXCQ30iT5cD46O43yqKnDI5mKSLaOKmOKUSMq5KXmP/ykArObQ2Ko+5RBdLSd5c9AOsIQ7ww6OZOf74khJXtL8fgWf6x41gwk40znpj6U+D/9U3ZDW5ZC4iosuIHw6f7C8aO646dEVVztUcWv8vKpqwA/pVlMRYKoqKaPLwIpV3er2mbGLaA6x1rEVM9LppLi7AfhVbZgkDgv+aQhNe+aBXkULUerjr2ovHopLeQTncCZagiOd9cyt4mhFZYT3NrGTPhy7vwAK2qdRs2cD0ea+OUsR7KF32GS/qSsp6cRePM15sAUe8g159J4ZLWMyygRpKWGggLghtBfedYESm2y6HAUfu82io/LFbcSNHVNRO4LedbrkXtlDy65wDAU1+ZZADWUNqbmg1FTA8QjRkk41xtWo6ZRzAIKPGblARNXwb2eOBUrAvw5SPFXG6c/TrmxbqpA4eVEZyG98ceOANSxPx5/nVEIel3FBSVDhrDSzmWlhJKuYCBvDWSN0+qt58mX0i57aiavnES11F18o9GOZmgbfHOShLhSqgeqMOG2aXm0ui1SsYkvS6OpYGdvhrtGLz/+o+dp/3S01ihRyptx0OfPQ5GcP4Gxy/LQcJGMQxCrmJkBfT4cTXHXM4X6HLmMWPT9Hfwc41F+bpCvBdRVchWpw1H3kVDXzKhnn6RHE7UgvwU9XHngH4DMBk8Lnqm1rTBtCaLeb4ANvMYbDDHAa7zGGwx5zbAF8wh8GXzGEQMIdByBwP4B5zGNxnDoOvmMPgAXMaAF8zh8E3zGEQMYdBzBwXYJ85DDrMYdBlDoMDRddHaT7kA20AfavRLaDvdD/hsInD94pujNg/8EGzf9SI2T9pxNSfFdVG1F/4oKm/asTU3zRi6kNFN0fUR3zQ1N81YuofGjH1sXo6kcsM/3hyy1Q4oOxy+8nwm+L8A0V2TWZ42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNutLMzFogVhblTj4OJg4IGwdNgk2MJvDaTfHAeYDDEwMnEAel9NuBgcgBPOYGVw2qjB2BEZscOiI2Mic4rJRDcTbxdHAwMji0JEcEgFSEgkEW1U4BDiYeLR2MP5v3cDSu5EJqJM1xQUABnknaAAAAHjaY2DAASKAUIVBhekAAwPTQcb1/7/+12ASBbIP/H8F5O+G8eHqVgPltjHuBIrbgdUdBKrbxrgLyDcG8QEMFBt3AAAAAAAAFgAWABYAFgBcAP4B2AKmA0wENgUYBioHYggECKgJugp2C2wMLAy2DYAOjg/GEKwRaBI4EuQT6hTsFbgWXhcQF5IX+hjIGToaHhsCG8wccB00Hg4eeB9GH9wgMCD0IYYiFCK6I1IkFCSKJW4mSCdIJ/An8Ci0KTAqTisQLHQtWC4KLsYvvDDgMcYyajMWM4g0SjUQNb42OjaiNv43oDf8OI44+jnMOiA6mDsAO3o71Dw0PLQ9TD4cPv4/kEBCQP5BqEJIQq5CwkLWQuQAAHjaxL15lCTXWSca996IG2tGZkZm5L4vkVmZWZlVudZeWd1VXdVVve/V1VJ3q9Va7VZbsiRLSDKyJPvZFraFvGAfsP1ghrHBjA2DDF4wNsvA4Rk4gz0P887MvOGAWWdYHmA4zKj6fTcicqleJA//zOlzuqszvpsV8a2/77vf/YLDXJPjuN/EJkc4kZNeozzi8FS15W/5Sy1/vvnRe5tNbL7+l030sxzi3n9jAj+Hv8n5uK3XMOIQ2tz6Qv7Yub4GP9a24BNumjsU3/rCtPMZhx4dfNZXhv99cHu7ryJOljgf8hExWA3nOu1el+t1W82QGeRE+qmg4EFfwbwmabtTPP/7hijGyN1Y1iThf/4AJnDDHOby8Nf/DfeynzvM3d1X6ogTZhHhsHtLCU7iBE4SLtu3Rnm2jOyIiJAigdtJcEhCjw5oxi9XyaHtvjZxOmxYT1pWURaT1ZbV7i6jVpfd5BKaRyEzYIRDrWYKmUFRR/mclc+J+TrqOVSlvEhFagbDzbHLqI1LIvWicLMiipjXD2QouogF2fDTRAILC6osECKoxsno3UmNIsJjPthVtL/KFRBfDxBCFf9mYD2Ifi+K4r7G+fvvF6UYJqRB8VkiExnt/tLuLxEV8QLWvCLGVPB5CMHej84tCJIY5RVB1iWMEa+iHKrGj/0ICILYPPx7/NPcLHeUu4d7ta9zSODSiAo7iFDicjINPKJEoFdANTi0A/wsbDFG4R0O4yJm8rZuS2aNyKpA1k9yCK4JiLsyIB2/Dlrhv3jXmZObB/cvtacnrLWrkhiqonadVJCVAyaWrB5IoJUJh8Ihm7FeZAsAeJ3PlSymQ73uPGqyfwyhDfSlHK0iCpRiqwmC63UJ+xSEEQRBBENh9iHKYJ6XqCJqfETBmAg8eh4Rfa1UDoQud5R9x/cdfkj85m+CPASBV2k8qwvkfejBfFI8Hax5PDpPFtHx49rEwaDZbRTo4SdQ3m9E1rbFlav47YggjBAWiNfACCuW1cpnyysqkTd7G8ubMoJfJ4oBDFyQeVxYy01JQI4o//ciFlsFa/fPa3MCrP/AgQM8fC7eB4zlmjf+Av8T/ga3yf36awcR5QY2WOQoWAXF1zkwMoyugZHwOwLi+doWyILscIRMEias2hsRW0PiMhlYcu5mYsQRRC6O1jD7Lt9EBBc4jvIga3g6dNb9VkSOboOglVK9UrIqOVGMg4SZRKhrMiFHUkuo5RgPk61lC5fJr9UE4acwo8HLDgk1dVRFzPbw+w+udpbestjT0aGpA9bk/CWDFzwmjnzofD5//8sBcWvyxWPz0wW6MIE1GZGI6PNhL9UzBUy9PgGBdfzhyYvR+lsvvyCZjzZz/si1FQ8vYWn7A6b8xE6y8I63rT0UM5BSxj4tRn1+7BX5l96PBCIQX9D2SVkwqjzY0zS3xT3SVzTEnN7IJ4XHLEjYa0GVPZet0WXbckzbcghYjrDXYuTyg+X57lUqxsYsxTWUFAoP7MOL4dOOw8XWyEAYOc3lgQCbwZB9YQmj9NAgciAvgce//m/KwaN3a4ntq8/rv/LINmgtLwVcQ/j0kQM4kk/lI8gj4A+EV44rF1cK9fJA9UWiB5hKC8a7Ljen3nbhARMj0AyENZ/gKP2HNs+IQCDxr4ONIeRdKVz6JMf0PA0M/Z/4M9wj3I843FsEBqscVq9zED1UUEPKE56S6xzcIxGYVvIU8VdkYKKyzSlKYUtCgiDucKJYFIGJ82+yXoGVWGEK63zRcHVVhIhgXHvLfVcv3V1eCxfL0UqvpEFcQO1ux/YoTHt1ZIbA+3QZEwWIDSTMOG8Lo9MuWVUEBMzndB39Bk024XoWtHuvYDrtvFWyg0kvC34OaKrIwl+myWL2Had5kaDFcFRemfVRGTHXIlIBYjZB2SwhMUIFMWgca9Pl8Ordi8npFUuhYUIfFMjud7+zMRIcfj8vTaZZlKG4IsYQNjQR/YqyINXqMkiDiORvMPIX1AyEFuZ5mNBefAnCDTFjgaQkmTcwfCwovmM7IQhU4q4AkWUkVgGX4UYhBukGEXnh97FIuaFM/zvI9CHuY45MexzEQizy14HlmKfXOElGsoSugzORJSpfYVZJtsEbFbYUuA9uB0THFZm/6dxpJYE18MuvDL5itK7KgRyT4JIuXzh/4tjm+sJcu2kVUslIyKNyD/EPaIBFerlBMHljgXTaS6jDBFtHtvQhoDB8wISP2ku4yUBCEDNSttBRAJGCf5uHoAX0eetLie2gRm4rkvhAJBD6zZkzx8AJoWymt0CzXvB2LEhRQROXMdDAs4tRY18vk6HaetRe7p8Acb2RLCCUKUIyuRGQQYiEonc9DzHHa3SJxHgnCOQGx4uCqCeCKZG+8xkNU4YmKHZkOIg/b+e+C34cfuEjSKADD1fmCC/yRLzOiRLACJFe4Xge7TAXAGFIELgdZp6T3CAOvQG9NaIvD0Fl8VZ6ASgE7uJoHQ/aUR3QwSccT8CaxxZwnHB28N0CZwekKOK2zx5Z39ef7U5WC7l4VJW5t6O3K6ARQu77ij4dO4yxgMWiWLhl2znzDo7mtMC9dp2YJrBw5wV3IOoS6FodldrMe6B9T3ziTSMUi3D3PmngYOMZ2j3vJ5F4vegIvXxvbMOrA8qA/0k0aEqEJ15KKA9KgAnoDJHTAs9n3xL6yLNvGMgiEAMrv/pew5yt7Ij1gnRRkHiAJH5QACQRDTwCQBJCJI9nNqTF/IaqigJoZF6BD9PW0M7JOyAO/gT3lb5yHmnoEIJbcHWkxGkcoFThiu5RmQZyO4oXdAvcNThkuNEhSHdw5R3IrT3kVYbpi+yCQwXJx5XBupvoQNpFxH38ox959f3/xzufeuwtVy+eOr61urzYa9WrBeYLRO4n0Cd9IHnUDLHoma8gJ0jaYbIFsnUtOM98RafdHcednXZ1qAJ7yfZS3YxqHfUIh/b+PhvkBudRr80UrI5zbAn7KsiUYAG5X6Vgr4D2JYXvSDwh4ETqaYEphLd4OXo66AdXMISt+155JZsj4tQeAjIGa/ciYUglvBMXI6cDHuZxxn9LUvTx/CuvoHSCUFGTvUKBEt04nc2cxD8FSZufgD+B+3r9WxBIwBc7qoNU4iBdAVGC3vNuAfR2cFHG2hAFe0eg2c9+ova/7Av5J2N9rxc0+R2PSeD7EVJMcG8Y9C0GSvdPoG+r3DN78tKoHT92ID5CAKF2IBDdAOJArjECa4ygyiIMwDHmD+Eur+y5AgpkIm5upl6zioV0NKyI3CpaluzgMRKzk3D0DAjuluMhmJTZlVbIzVlsjQL57tWVKhMJ0eiiFyKsVtXoAawsBsHPg0HrG5u9vqyIBH4OprMeSjZyOVGZzNgS9RXvje64vBQRrnx+MoYiEKjB7Xm8PMZYlBT4l0Ac2P2Tl98vAaNd/jObnQW//hTwsMt99rUJFkBcHqY4HrwkL1zHI/AK3pNcGCYUldtSWUOq8jDtSAyoOOArx9uZ4Iimn73NZUiKz7pEAjm2bWPeQqn3eNbBvC5rh/ZjJw1VlHOtJ8+cN7vAwradXTDzQ798VxQYykLlg/EjPpUBI9Er1yg/t4zMZ44uHp7ITQrZmCTGpq2DPv5J/DZNEL2MU25g1T1/8U9o8dzidL5VS5bB/4nJ/VMa+k+u72N8fJn7sb4+qYF63n9vAQLqMAvIUMKqDWhHYDpc2NI1lYiitONRZCJJRWnA0r101k10VaDrp9glmwx088otBMCsyHteeu6Jtz1y5fLO+e2zZt3yn45bT1z12uD1pnxhGKGYcjL2kSZnQxfHx9kup9d1EFDeCWCQYLBsfI8CO4UQRt9pN5AXu86QSYbapZBbABZK3pxxOH4HDIHnE13wOMcReoTXoz5w4bpvK9INegGmEt/WooZ/C8my5dsCEehF0zYDtdx70lDAu4CRKM35udXVcJh5PSoKqv8sOCmfh4ylMGOpisF+kAQ5yNwOFnZ/BWV4XfZiFUcxOBpEJD4K/rQuoU+iUOh8+WcpxopjQwSgt0/jSVR4+X2dzl0XbO8mYx8AuzEwBu7Njo8ZwMHvAR05yb3wGqR2wxw+DQZAAK+M2xp7EGEHTKAojEotN5NZI7KqYJdaXIqhJY1fZxn4TDdaKf7CVScDv300YqUuR6x2DcWORYMExvZyoSDDOyLN3Fx9GZOoW1QhWveg3ta81TCxq1uCtaaJ+oKvIMtGc2vZKk9HAJ1qHjpRZ3hlF+8tuIyXUgIAP1iVRADmQt44/dcrrxYKAAyUUPhwPygBlx99J4gf7y2u2HzPcxwfB74/zf3wL7ztkQD7SpfzyfFIoUgQocDhy6JKxqNFcjxa7CWyI0Z8FDFuuQo8T1Lu7Y8+/NDFu84d2zrYX+p18plYxOvhnqZPs9Qja9cJKeMlk4GbeuQg+bDlwswFLM0wg0t0GS0hhkCZv6MmHYKT2xja0MxiqAMmzRJSXMLmIA+hSNXX4hv+CERyhIMbfv4FuG+lElUASlJ65WiUoI3IRGdurjOhaZAG0kuXwMb4bNeGG0O7OpVJH/eO2RXeOHDuoV+XU4Ss0/fQfQpztzzzYxCFwJooX6DYA/bCzF0JQu7Iv/4fMSqunLzrrlMrwQDLJUF+BCgdKPFtIo4ZFPE55oSSKILe/1O7vyEDBm02X/9zJStIuo9BgCEGPcG90vd1rQLc237261lFxhV6nLKoSHYEW+qSE+RlPC7ycRJrnMQWOMAHwgiYxPdec3KKjQMrywtzncl8LmLqqkS5E+iw4gIFV8YBV7yOh02DVMKO07VFx1JJB+sxz+w4ZsLkikYitFFD3QviM1eDwrtxJ8UCGnjRi4fDuNN5C+p2+iY8Azw7BhShH4zH9nsYeXDd+AgO6JDuvcuVEPWkDwfXkExiEFUKMk7AGqd4iYRnn90V/uO39JggEg84QnhqghXmD0nx9Z8TMT7/+j/yWTdKsloYyxP/GH+dC3NT3NMOv00O0NoOWCLkgoTYjmsSDbDB8KI1vFhGg7zPAG8GVn9xSMOqYhFWcyMcpPqgsuSsu4ogltF9sdaYyPBipMqs5NYyca8ruKVgt3QDjs0pgHXR/+W3lHueODt7/MGHHl4/hIx7EplHUHVt0WOYvqVeOFPvz7Zi4cX5J3tJ/HWkf+jae5460Vpd3Xwmr7z3sUziwh8cukcjvDppFOe/dH7jXr9kHfm5i9ygPoj/2sapd3EvfTHMYXHM9QNCICK+TPfWCPkdyGyL/EAfbyWzRmRV3qmywzWGBwak49fZ3suB7dJLxQXrqiQmbvL94CtCdkx3+MWUy4ZNbxi+B6V2lrPoWAy6dZDuWCHR9Sa//DXP/FENgmF77a3iPRdTqTcIy+i+2oR40F8IscJiPoeOn5L2F+KGMogErt/AynKLBqPSbGvVQOjJt+t3CLvzVp4ZKJLoB97NlitW/MAEx/ZAmjeWbD1tc8e4y0joe04emSGilOQxRwaQbZojIicS7rqMBE4SBekKR6nN/doWAADR1snJLdBOm88T/ECp77zQGi0s37SQKXzjloVAzjGFGfuG8WX9ycEK8H0U/PSV26wc0TMgHTlxvNvZPnv88onL+1c6x7rHrHyjaqlitCq0u4tor730XDsC4GcG7dKyjaUZtHZMyyIQnmxowKpdY7WQFvi6cLNXsu3NuWAG0QeJt249NLCvp2yb+8m3Qb6K5ETaWpIpeFJx4kA0Wi+0Cw3Bc/iiF62W2lPN8+/wom5EWBfrNcRnNXCHiJeDqWNqS+R5dWSGKjPNd/95WxIQuKxSqpHRZRp+Kq/Oo1x7Su589R1K9vFmKlr7D+9SUw90TGmy/15T6angzGk+lHPs9cZf4r8De30L9wLi2Bamwl1EIh5TC4EKhF7nFEhUFMGuPbu2KyFKndrzUEyTQyu+80JrtLA6XFgeVwt3IYIlCjNy9xvusKxfu+MKeD4e8xdHC0VbK8LPvOOxR+6/9+6zJ45tbsz2phuVcumqetutuJC7Fcfk7/ww3EZAw0wCdKjUXiI9p1jK9kbfrDoi1CFvG+5LtJyiaqc95k9cUIk/9zl9p1Hkw8/UqLhfEPSIzls+gWrBSKosmQ+kZRbwJeyteoOLa5nsqPZRuBg5s7f2gdbN1WUtFgB3g/atHYmt5H2hmzbwEPZMl6eV4HbPL1gbWnsqnU9ib1unmlGqqXjZF1E9PimmzPqaERGjd72IxduXONSQBzwR2f0f8J1UnQpvpdJO3awNMfMl/A3uDPedvnZiHWx2Ig4he6BvFnh0SPXYlgXAe57t2gk7FDISiKeD8ucooN6R2hpRjyJs/mZqBtZ4dHG0igGeiZuo4ALHiQIoFQBw/uzge3k7BveN40cPbR1YbUxaxUwqGs5Jouls9zE9YR4kNIo0+VwD2Qk70wUH2ZjMxww8CqhOHY2KbeEeg0RBd0G7iyfWVnpX01HyEvKGFyTBu/SiFrrSUxIJKnrmsOFhlW3+7JaiN7YU3KYvklpnttza4EX1gco8YEzPLPUEQVzS6ub5pXRNwnneVz0dS8UTP5DAPTWd5iXyZ2BI3mhspY/VIy0p3A+jPPZstZsPJ2sq6veR/l0qU17I2rI0wYF8Hf9r7iL38M8vAkcOOjLMsnI04dH1YUJW2AKPAthxWxrsbaQHNJxg50rkyhiFvYsRptzZ04e3phulQjLm1T0qd5HeLQ+TCLfmbJtTy61DtUdVEfhp4NezzSQKBxm0tON7HZecUiOBgD5IKVjawSrWOfSp+LP55/Neu+KcWDD9EtsEyvvVA8n0frMaimdEqhIPTYW8kE18+90oj3jsoSKGvEjWvKVEpg6I+WWPvpjzsDq1wArT9t4CgcyC5N+/WkUBKlA5lroQkiim59cmAiLbAUf0O6yCDL8OicFuNJzyScxPo9e/xbNvBwNlybvN9wWwoRvgsy9wn+xrKV0DC24A5h/YUFQERADfuMMyxMKWvYk99M3WzQTWkKA8jOlhuGDTcBhdGb/cT+y9wvPcWfc6x9sGod73ZLVUfF8ox6BXL2iXo4w3BPvDMpaDuTAjfsOaMSAw+iOLMyeejd4zjvq9m/HYKkP9JLBu4KkJOfXJy8evQaKAW9Ozb1zuRd0exi/3Fh/aQu9Rbgf/ha9+NrX9vgub1B825N/+95KIb1O8xb/7h0Hd9XFw5ae5g9w7+94cwpwJl/FmjWJuwxFRCFALpP+A9EGybGMAEM8kHbCfgT7OoaAM+1NapjbsBX15jF2DhWfthXjHIeMwML/vA1Ec5NZjkdNp01+SxXg1YGfajI09NxoxjgeNIYrJuTDXpnAQsF0JoSLnxQwbWQSzjb15USFqZfkJU7HN1QxJSTKHDh78YSxMOq07W8aaIYoy0bsZLAPN7oeoYBiEJwUL0UkVPyvyUoTYRSSAroKCdz3o8cf/ileEsOC27oi8oROSxAqi/Os/TZhgwQDm0BJRbb1v3fgLPgJ8fRf3qb7/7iOlIjz4M0vz6RR820D54x5NZmCA8VYSedaiUdhSkaJMKgP23obEsknKQNIvwE9Yecy5wBjtkuCdwTKH2XG4pXdxz//AU299+N577rqwc+bwVvGJWvGVoC7GbL73blNjsnlv2ECx5BYlwzdZQzhomL0lwdlas10/22tn8nFpmIuDmGvDDtxx7QH+08YsgsyJHq0yp9RUTzGIXWElA16cRT96FFIlWkg4xapEbjF51OcHc460FYIyGMu6Gcubz/OlkM7iJuZBflv+fQGQDBGXcyL67GcQNbw8yWqhh9JbBUSDAVxD2Jdmsg15RhUrQGPibkVEwfcVK+DjwZyCTlmEj7MwRHhtd14jxBsu1JcKf6QRn18him1xQKXSCCYNFe1+Z/c7CJQb/aloFL/ce3EZKfDYTyFZsGv5MUhsToEuPM/9aN94y6FyEezhHWynBG8uIOKaWUp0ShsU3DABNVAku2Kl7S2A7KGy9lLZNZAEuyK6RZCbL7MyyPPPPPn4fVcvnjt5fHX//OwMhKXHS0WfB3LzVs7dWYW/SmBJe/dKXYPzIkgrbAqmFTmrNzBZuxLtukjWz2XXopu3VL+YGnUAXOTcnrxQa6wtr+Jj+yZnppVvo7cKcjdhRzY9dzZ0KqhA3PJaOp7MdBrxkIKIKUgyiIFq4ctnNQmM2Xd4WmaO88zZ5X280sqDKL2H0qkTTiILqDDoR/UG+gqSkkhBIFOqBY4Fj6i8pkNAnFb+HKGQoCJncx2iWUQUeA1dOzXfSod9kpdiKcAKy45rKIPbALR+CX3qX/EyklQTwqJAfF74R5Tw40/8LpaUAEUKVT2ODqRA2v8DdOBu7tW+51wbdIVbnwQpDRskZUmwZSVShTA/YJfcWOfXaO/1JhprRGNvuMbsj20a0K0r4xeZD4Dwd+bA6vLS4mxrumxl42ZAlbm7+Qsq4BRuj1nbuwQDiees4b6qjV2WkcVs100Sxt11zrSdNbFFPHLX+KmpOdUjIhzYmJRfeD4WX/XLbIPyVP+EbdP5UlQgsejECTmQL7C4p00tPh2w3QHVZu6Ff3wxK/KwKGf84A1UHX8GDDAGcpqUP/GxBx4WVCKaMuM7s1hEFeH++x//M5kHz6gBCLGduId6hN0/gm8KJGvJZxWP7CMKa8wEucyBt/wWyGWJe+W1LkN5rjwKrO+IQ6yhhVXuGVy3G70KrBx20wbAnWitIa29C5C7mQyMEiR1hduzFSAXZ0rr1S7bT+sBlOZ6pZxb8Cem7TsZ7HDq/SAfzm50cY0WgLjd5cJMbY5iAyvq8nnp0JkIq7MicF0kI/llsIY//VOBvv43iGxflA6eTogymA9vnhDIX/13TCSvhvBptkA5sQnMY3BOeUtsJgXMBSCBI6//DMAYJK8e9KWiisrv/jPbznfz8++hf0Zf4nrcEe65vlJEnHgIMhKm4jHWLQJ4WRRETgAG8KUtyHFt9SxtsXxmlAD1y8AckfDi9RH97UkBeLOi7sJco162CrkoaxzqoR4D3sXmoMrosMO0Rj+P+kcctzbIapk6C8Fhy6NTN7HjIEV/CpkECWU8Acm3zMrMGE81aGBfFTR/bWqu3yz7Up7gVkJWwYh4LO2+mk4ls9oEj1tqaKK86Etq6OOI54l2KuOR8LSHhRg8qaBebdVH+48XJqdTPs2z+wdGBUnBQ0GEGoVaRKpJ/O9IWqi6Wjt6mvhsHpdv/AP6SfxFrsYd4Dr9pmJvDbNyLEcgQbHLtSzr4+Ab2I6vrYdlfGhlObJpxeFpotWAnao5+0fsmd1CksuZ9jLqwmMPtiEDbea6HY++pyW0u40+iLScFBB4mqtoMa299GMXkrEjtNnC/qDIm0x1CPnnRQBY7ToEqzymEV8km4um/Qb+adV4d27DCBCaADiknepf/3ee/NuSCfTNb+oiEQI6JrufOIbURQwP80NKOjoV8WXC+9c3bGyVAx78DPoyN8uV+0UOnDu44uuDKnWJMcAp5HGHqpXiTFmAhy42Q3uKzoMGIvvB3S2epluBHlbKnAL0R/lAeuliyP9wJRBIvrBJPfnUjJUMhII+ifBqIJeKm6FYxqfGwiWv7+4F+akALydmdHyuOFmf2npQQmqknS6ZAX8GlFnV5VBsY38jUQ9HsL6mDOwGqyDTg5Al/fBrxxHYl+uFpjgiY7DY606BkVUoJdUB4bJMdwBtQ/6MWIGJdf7aWc+dllh3WrLdTyLuHEDC9bWV5W67NpFJhYKaKhDuINpgO2FoCbPgYAcF105sT3NH63IKkaEOMLk9gBEMW5KhPdmFKbZthr7otQJIexUPTYcP3NbOVpcOmcFeUkAdRNWkCdFBkFAgvxbqONaVTnXmJLmAv8CKBuLrP6soA0uS+NsY3V07hwK0QjH/LUHj7YaqAMa7HzvqWBpfqG2ohVeYbEqurtW4RW6qPzkZwbbBgVcjAr4ysLUS8/QDpQsXShObFnPgxUEMLY2apoF1ozpLThxV6Qb7Hyz02pS25p14pGeFjKxkvnABeUllXkbYPDd9ugjgs1K5flBO0aV8cTqiBrOJ+bmAaCvfRlyLN5et4pFrCipmeN0Q10MeSP+06XSjd1r5s3YwuZQCkCBEEl5mT70bLWzhb4D+/RPrIeQF+ExmXluza5wQkgX+AY4VReUHWPMHc8W1LdYn7KTlJZaWSxc4SZq22yWcYqy9DNQQ1iGZu/79LJx+o4XWHRf2J29ZQzjWRXyFVQAgVjmVgQE9S/31A6shq10slErhrCImq461B7q9juv5GHJx61st1z92wDdaTregi45Y7cbRfLexBT57Io7Dfm0xgRoNIrLo6SlPGcSslKuF6UK8lpcNLSlLhqc3aQCirc+Ei3Jutrgxxa79OK1k0f6PMWhpeBGrtFxSLhazuJxNlitFv0Ct1NV9GFMGN5/+5fLHuplyNjUBV5z9LOVGC/1X0NU2t8H942tZuDXkCrEmsSII4h5wIi+lNkcbzD04Xe/snIFwAVg9baMaFq4n7TWAJK9/n4sch8UTCsDt+mjxm6z7vpZUx5fYZXHEre2fnWlMWoVMKmwqEtdGbRb4w47JtQZhCqCosx8y9Etd92QTtrMOe38f1bEb5hzzgxi4aUSCIlaaVihclqjiKdQ0z8pWsn6mPlGfwFhPeIKPksCTm4+ZQgGdkLyZMAS6SjoR9S/NdqTCesiIB0SiqZORQHVKSql4Z2157lI1NIVJ2Kd5d+eE7npN9sbK6IOxRBgpleI9q5mjB5SXwfambvwDrtrx4Nf6ShRRMsuSCjck1DkJiUgSmV3YANMueBUYg1zvbvt8zFK+8rCz9/arrDuu6teGC3iOAPa54iy8Pbmzvb5vZXF+ulEqFnKpBEQQBeLHwVHLrp0U2NaDHYG0A2PBwW11Ahc/SDXdgnPX2QW1P0CfLDWVhodMG9L+lpjLCJ60Fn51FA4AkBQscX69t4/IdQOyssS0TqgngHhfPqc0ir7EU6ve8DzWT3je8y4t7o3gQwPnr8rqyx8mWOx222Fv67npkK4stlRwIUift6pgWybEgTr+CKdy69w7t74Qcjyjg1M5kRKRXuNYasbZwdlF9A1mNXhHQjYGs/3U3hUcO+GFrtyefrtverT+0mxvslrMxcLaume9kJPFUDXQdphkb/PZzG13Wfe7U1IO6rgCfsly9d1mphc5YcXxa+5BuV+0oka0HDEi4dIUviD4cSSU8WJWmKc6JbFmPF1uC2hyUvDrai1KBF0WeRJYx+fCVsQIlSOvf6Fe8lP8d9gXjISzi+CvMKXqmZxZL3n8+KmnQkqUmqc0HgIKL8+esn3Ujb+/0Uav2nzc4L7U1ynwbAL83QI4K+I6q0mOYIrZHhkVRXrfGFvdnTQ7dxhzPCFbwUeLQMGuvdkqthO3dwFnt35duS05KxaHCrUDM/lCztmnZ5wN2xIQ287uqg4IOQd8txFSs2tv3SeRiycHnY9MGqyeAtiHdNpowor5w7gQNyJKTNXiLT/iqSDqEk1N5fJIFyLBWHS6RXyHG9FIaaocDYQzAoQLXVXTmRA+FSuZ/njJ/K0kL89VCKiN5Nmw4hA3ZF8+6/uN35Sq+z00l01YoUAhgOYKleoPPHdZEjnHx6B/BB9zH/fxvpICyGm5O6kKMHOGkxkEAE+MWc/wA5CGQSy7ZsdUe+dq1BTSYHCb7rBtS7vwO7t3KVP173MtBOVLF0oxq9AoFWo5FpQDQ7ewhIfK7LLSDcXwx932HCj4oAbv0rEszj7ugwf9p8beDOe9zG00m4GIHl+IlAupfC4diObCoqbl6oFSstTwT/lkNW54o0Fs6JgK8Uo0Uu9R6ilkPdgTVnkh5tXCm4XieN4DGY4k/ta/FzW/J7bgjZezhcmQEc0TrOW8pWRWpYGsYXoWpLI3elTCvH8nY/TqsiV5tKiuTl+oa56AV1NQ7ZVXBvkQcNUCmSkgsy7X6k9NpinbGNnkQHYYkeuDegMr09tOGegL8aihc13UFexzvcxTBLpWu85X0BjMYaEwaGc8Q3Qfsjt0RfreyS76QYQhQPOyoJAI66jjyQeJ9sMY6byPT4RsyG4gn5ioKWprUhNYHRwSMjQ4baZK6utf07GHJCXwLb4zgMgFXuz5VhRs78vd+AeyDZjlSe5c//REDmM0g8AgNzm7adr2lGA+11SZVTBY760NCyjldhRJI+6DPvLWS3efObW5sdJfmJuql610MsSKW0+iJz3Og7NdNDf8DP3jKFEBzWE/pNGYx7xN+BllN3sCWQO5e0HjH79FD1olEpXVSGTgUfVgJJJcjqqQ1R67HERScTqduTVSxVaNqBWP6DWNhbkD02I2K3hSEbDtnORXxz5TvbGPfUL0agUxcMF2vcRTnAtHJgMyVvsniFILqk4smwqPYtldlhxJpAPFxxdZHPSe0t79ghIPEh6rL2bWqnjsQ1c2eBVkc4zb6m+kWMstYnIBUM28poCocI118TgtmA3ngJDoQgKnMNNqNibZ+R3DBwjtGDqmuOIwBjwENtPbyWIgg6DT1vJGEgBWH8IoEg6oCsV+nQqpJUmejwGflw4Df5VJw5+b9mDjTswFRqKaRzBKRbMSBFdEeP8TOnb4yDg4+8RUOLbRkO7IPxt7s5rEf0Jf4kx4eKufT7NtO1aYcbLCEotCgya68mRkby+cjsYO1RK3Z6M7YhFK6xlpeSNdfO/LZxRE5IXy6l0NyzAOFkI6OrE8lTWD6EtIPb8+P7+xfWyF+mK+1uVcZ/c3qi0aOdM9TqOX58qHDtrx9w9uLKG/BZme5K5xx/tHDihYpGkkg8XNIH5dAVtjvT7XmU/mdiCGcg1WN3DKSKPWtgn+EMc9eP+Z0/A9x0ul00cqZkl19/BcSY5KS24ALFkN+9BlijRDc84+0/Cw/vBE/0gxbDPNF8fqT3ZdJuSeGuh1k2AvsUhyy1Qmp+z6UyB6z1woFvLH/QKqsO18AYA7z6oIhCq+g8aBgMTO+gdzAnkco6gmDWwTXR9WqUQvjYk0VMp0DSNgoBAlUmkuFunLFRVj7WS/0dt3xaBUCwvoc7bjZXVnnyay0xwxkLhK0e/pgjzhGmVjUMOKL4Qe4iPqBFjDkQ2n5rOEvglymOMOc/v7/X0FzLI1O/Nh1lQapj6M6wzLsGaDCe4Qzx1cX1poNSZK+WzEBJA9x8/INsh2qvSdQSNgr32bemfPDqiENRI0h/2qgduUZWhwzecFpOqbUmgoiMR8eazaOZuPSDlNWVvPiTZ7WaOq56ZCzNeRhBXioyJ/9jhCfGKs1NmOCBFJ3v1vu3/MS+6RF0xvrry4/gf9W+DRIvfW16ZZOuzCkyzH2rqFBzi2hcZdo2M+SHTPJ/ZzDg07AH8nIvvgULs5WS0VErGAT6LcIlqUBh7qjtECdPomMNIb1Q1td3Qspkojv29raSkaYjpSnKLBYj2fDERnQroZyKYUJZlzXNCSURp6clvnAn6DImlCQZVCphoypr0exTfly739ZTkOvOnc+B76CeDNYe7xvlIGGexHToOkYncPER5SjQcoO3wFEI/nbVVqDLPoMkPARYeKu87IAPpeuy3ddj/AfHmvU6sU8z6dO4wOi6xnuukePdHtMydM52yoVRccFz1eXB3UVp1WM+dPcKCb3ScC4YDPw4qexJtsHEp7s/KEYIoeUaYTE/UTl4M4FfUFUxI8Y2Sy1PUqE3W94cPIP/2ehxNi8dMhw5+RmI0Iknc6amZ8VGKH2gGoJDszk+1VQU/kDV/WywuhWt7QZVkRzWkazBXvW/IG0xXgZQD0bBM/yu3nrn1xKYd5gSmaM5eBTUnhBMK+7bokYubOWT91yUGug26H/B46IGCkAkfuHaNyWh72c/1SORScDXZHLQ9s42ZYZxqcMWQBMD8sB3ZHTXzDIQyLbFE7HxMBJ3mrnYBJtJwnEOBVgpst0fNwoYhQXBSaE4qEqRbk1elosVJoyTifRy30POShUeDTseM0gXwe7aB/QoFYwIc8r3xEEpQKktd9JmgiVjIrgUQxJQWMl3+ItXG4uKAEuneG+1BfIwADcjGeNUBsOhW8GmADLDizJwSMrskOw9zj+42tEWawj5k15OE2z951d1hh1xoOb60sz3br1XQyGvZ6IKU5g84oziFRQOCDQnWrOdZrPuh+tFwAYd05XR51Tjp7a+h39cAhlAj7VC822E5Qakby7YtS2mzXcmChWCyFBFkImxn/MH8OVvLFStOYkFAkU8kFBVxIaZIffd6r7/6KoFZIPjwn2TtCTwTwjEDrRqQlTnmqD8yHddXM9N1seq2caRSDjWsdyWuVC0GN//A7JiSv6xu/hb7CrbBdII6d92d7IDZGdsIH2wShg0xgbmaymklBvFC5FbQiDrMBiLo3w+IxPjBODPdBmHUPU1jg0N/2t7Bs+WhAlFux4VNHmvF8qUm8dSJ4mnFzaUIqeYrhSCwYSC6rK8uGb+rKlOGLEuOy84Da0ZJZK/hlsfhsJ+6v+iY+nDBqec0bLk6m88cOzz4/0Lefg2e9yn2hL991puLn0bCyaTEgKkAIH2oZ3hHtCvFeNXNU807UtyjlBJs+IWBHKe0Vd6J1al8728eOHtg/P1OvlYuxqK5xV9HVgT46G2ehWxnZGmu3tEpuenpn5RyppxunO2D/tnp+Qw/OY6x6jfB6JSyhgs8KIx5XAkFj+iT1TK7qocnC/uOY3qqlilyco/6JKaPGW4VqFswukeE9TEs9f+JXI8mkqj290BSUZsoTCOeRupw5eajxjA+lE8lUfzkulx/cq68pY8uLG4Vg44lpT3lyUQ4nBfTEs2LcOe8FclTAb1xlvYAxAFTkyBzmpUHU6nCYgPN6QEOqQFRWMgDMLV3jJJ6X7mPn2QeAVAa7oRfEQcmh56xTr9+6kEj8tTuu3O6H4Lauclcv3X3yeLFgFSqlQrHkYYUHqzPgd/imUN/es0kYcjPE5s1eZrAboOP80IRYEcPuk7J7COcoH2+s62J+3uMhxamJFqCCSFNVAh5qGaSNSSJcWdVYUoj9nUb7QCE5KfvnIkohUc1jNmPEq+mFmJqguoiEWHhynwcLOgBWIV5ZV3Eh7ucrjVy6EjLqfnhc7GtKv+vxeiOJ9apCJKQs1YvLk1484Q+nKpWiH7EaAhUmjevhmRSJa5HE2qRMbNtrob8Bmd3H/WFfPwa+voEkGgdy4kqtDQYiCVQCr83qHg/c7O05SXJaMu2yzwVwUdPDLufO+FpI7a9/f4v7M+MhY88XvMlSx1gvnD9yiBnrZDWbCvhVmbsP3ecaq70rMEo0hzIMhe3D4k4nomuwbxZI7CZeV0vYVqizHYF+Rw/eI/rWG93GobgSMMM1R5zE8Pkkv2ytGirPFydb+24fVsxKDsIKRl47sIQnTJ8SkC3bZGO7TwSmT0ZiU3osFwi4QmVtw+qxmSzrb45PTd4mxBwoZeoTAUyLj7RZkImEg6h0JP/Rkc2ib4P8z3Jn+ifXEGCrTUDUEoeB54CYJQqoEfIZNlmKcopMlSvDIGRvEsg7mopluSxDwsi+5NSJw5uFXHW1UMrnqszWwqMzLV3GdicXyQ2TFtZH5hb23J4Xt8Ms3AyPm98QFzkGmp+g1FeoXD0c1wRtohZIlgVdMIlnoaAJ3phHT4dkwR8XCVE9VA4mJi8fS2reUL4VKC/LPMAl7D3aoao/ETUVSa/lBb9KCS+nqlMXDiR8qhrwSuxocmmGYk3VU1iaVBHFvC+T7Zxdz2hI9pRSMq8gqX1cRXrYFIQFyZ3FgfB/wJ/hDrBZHBbi7ROQAw+YYm3+mHfH5vB7Rh34uUGpOzOgGo7j8W3dTJf/Pr7tDQnCnL3PBhnSbK9ey2fjMTOgiNwB1Jfo3tEKdxrK445hcecxOc3rblYw6AmcNkZnPsYm7qAbzsQduBshXY1vr7M5Sy9T7UAUs2Ox/uClQv7s6AjHYKYOG4rizNQRqL8anipLvD086fVvYQp/7JOuAosDLP+e4jgSxN/kTC7DvfRamJ0rcRGFDxTY2BocbXTYqbuf+276PH8H+totn4cZw33s/PejYx8Bi7dfq8w0CQ1Xi8ClbAasgWOwrGmzKmSooNY4mOmU6ogEQV12X939MCgNgBFJpH5IVX7ylxYvXfwa+idRyknweOAE8ZfZBCrWEf76BjqKuB98fvcGxpn0+53zdYNzoG3uMsr1te0tLNL9HbZ97u4wVmUkgDeF/FrkeEHk7xncsM8+DRUY1u+jtiMv/q8sCaJBJ2vNXQI++/taw1jagAuY7dZcf4PF48vYxvcdV+w9w+rDtjT6+uVLhXapMF87MpFRaPINT6zavZFO2j8AeI6TF9vLqO30BjCf5IYEM+iMj3GRhf2VEDtuf8S1fnANeyQP3nixOqWjtWUpHJGX3lZe9OF3YfLCC5BqEo8mEL+fsJblPZ8IAKqCtz0M+0enH1IQkh48fflxJXPiXg1j5dz+B99rfBarCtK9oDKiuLKKiTL2//4q786aYvMpPwk2s8Z9ta/NtMIAAlYAJg86RULAeWNLtOf7cBABJDJuPiHbT93uav4N19bucNU2KLiAyaO3XLAFGea5/nJzqlpg/UxeDxW4NX5NBufVck72W4MQ3+tyHbteEWOhxj1dOz5PCEjA/Boox43NEf0bfTW8qPlFjESi9DMYbYumn6JgEJRKykdFjyd90jwV9FFwWLNeL8/ODN1gxZUAIYJ9ig0gnE6nwOuyRo3dr+1+mRcExDJw7PSyGv/f/NPpzG5P4KUYmxjqZYe9Ohzr7/rX3AR3knsOPfjavUiRB55rhh2UAZcOVijJkviAimRFke9j/g6xsxnOAdR7KIDg+BanKNoFD9I0vzYQ0ext1kuycu37+oIIfMGc+wX89X/JNzA9mL/pG+Tr/wtf8S9fHdYcnYmcOnXquVPPPv7YW+6/cD5o5Tv1Xrma08ENBNq9bDNsDkad2psWS6hj5d10gOTsImE3wA5t9Qb9uY69O0Nqg64DWUZZZvjE6Tq0rzjJRAo15zEAmk53bIVIs/9FRJ99CiEPkTCbMSdiEYnJX/sLKuugalQSNbEs26e6giZ4AI8o8B//hCBQ1SeWQfc87MDp7m9TwOa/KKaQXaxme3OBXO4j999bJqKmUo8mTrJQuvvf8I9idsKLCKveCUUW4ff3eJ5QqUHY1qeA37P7GDv1deaEfSgpEEBhU4QfPs06eCJB06B0959FnnyMh6VI0visn80PEZCey4N2449RcCnDmWRPAg66l/vccEYUg0AxDnI25/SCLDrd7pTtFI7gT0JyjkDY/uQ2NPk3+ZY7XnQhTxxx58+dOLKxttRrTrHSsA187kUX1TcBPplBW597tO9Nx5PFICmoosGkkBHdlP/2sOgEOjk+hwW/4XixjTX0yivyu/cOGLs9aBobzSK8/h3+dlPCKEoiAEnZ179Lxk7ROv3zxMI/DTHhw32lCV6tiJxKYMRujBcAagl759pCTuYbjrX1k4HIcjfTQloh2ANrR5RvShS26zGyNbnW24IEIObMBGXnFUBKISOJqOmYb3NY3bNbWe2DD/ks5G5cp42dxoAJdxccAjj+I172VCaSL79LeDd4+KOFT6Dq1BdDFwpti1KFmGcQjme/u/tdMJ25H7NTNYISKEHAi/NeTUK/oVQlKxIPCTxSdr/LTk4axnr2/ZDgJSZ2DFFFf8KOHkkCUv082hJ4zQCjoeIfgKyZrSTAeX0Vf4O7wD3ZV3KI4+tuV73NNwgHAGh4SIZZPdFpjodgCapgl579rETyZkRh6pRVz55eX1ueaU1PlLLpaFgWuQtoRwG1B6+GRlV9MThI2GxsFHTyNXfmIngic3ywpq33owkVrPFlMJPAroNMSpTE5u9qxRfYaRg50j+VzQeUbEUUDBPV0jOT69bW2DDNx5IPhFVKkWyuGpIoASoKYFENL1nLCpFVHAbXFZy8FKk/VWQFAT40eT2rYXn2hCoy3ecT6cnVV3f/s0IHUzQRoabMQ3ogpdM7F4/pExOd6Gw5rQgQayPA93fZZ3beyj3Jat3wSNz1tx4lEMw3B7kYoElO5K8Te2QAYytLxnje7ufyC6NczKVjbQzOPJA9VG9IELYbkLz3Xt7c2DffbRf9p7MSjYyPW7MH2d00HIqdrRpsv+pYzO2dd3qTWOCPfdDPaWVYRl3SNjqDfmTwTgEIBE6xA927HbGH03iPnF1cV0bjowQZs4QUWHnsaW/0xVOCJyzzyByT3dsSV8dkh01fLfOwjrF88Zm+33wYgG/kaN4qpCZ/NjmlXKhNL+LrHmeCDR5Ml/LkFRO+AMmn+6lU57SfZa/8Me1WYQonMdUmjmqyorXPNSV8dvcYKwCJwe7svlbUpKj99Few1p0/OlXnhufDfx5k/Rz3Z31lC1GOdaQNpFwF4CdRUbpuT9/dYcmVz2lCYYe7QluQ50vyDifLfnkg8InBEsLu0TmCfMcFxe9/QRgW9Eu30jIyKnL0yjilDWmefsejD993710XTp/cPNDrTDXqE4VcTaVmtWfjX6cczeaJhJLMlNkOO9sC7nXtKbm3VzAvag5cgHP+Pxh2pq8Oa6P5HNvrfyOF+85nVJrS1XKFn1BUMhMjohj3dLylvKtex04tbSjqUL081Q7SGqXZuCglm0Ilo7EznIBtImbYG3lqO68QHLqjroU/Fv14aTpsNHgse1UkLapRa6p8OqGTROKt7W9rAMn3KJrQ+Ny3ed2avz8ePKyyRiQEyZVCY/HZC8+FJHyG3MZ/nLH16BjEQwPy64e5T/QVry0bAQ0ypAyPOGq3YbM2T45pEXsK4QJYw7i3yNp01GmFvj3hm9E4PgO0Gu7koZ3tQ5v79812J0pnozINVVtWya2v2UUGEHkzBYHQ6ZVjA0LcNHYs9WWKwdp0nQvOQnFY5xn0q1gjl2EvA4U4y3IzLBCTB1zpQd6kMs3TdFKCKCnPWf3N+Zn7D0w0ZsKHVxKBQFDLo4AqqFGexXJaLBCyvQ1+UI35p8qx1rH9WwcuBiBSMiwZ2iC8yh+aYyeASTUUtE/kapHi8UMVOZWJTZ5LtcOBavzE1MbpwrnNcoJnuYHs7dqHX+ixo3ADkrfcsg7vb146su9w68CrWrm+dqJgWmVFQG5PD95BX+ZmuFOsV2atXRCB6ckg83ObbPraQXEoA7ZHJFwDUdgAJ+5sLTFHEcSHQCuOLM43qrlMPBLwczNohtXQnCM0Xmf7fHzIPsDHBqJ7Ru3bB3CB0GSIBQ2nuiyjUtvq1AV3eOkBk08eVCGtJFSPCGzTl6qVmLgaJh26ubV+VoFLH9ohXn7fWUhLp2O8sNuvT8QyMx3RwzPXhkTNzIbW2lF/EL1XIp5HLuuR4+ChAx4RIKAWSm+IeVJxOozOf1BBB1eSVnLzgi7s/nW1JellQeV5Wc77rcpiNuc9WOzbPUdc+MYSXgT8kuM2uOf7+tpKMchT0k1jYehhrcGhLZ9z0EAC0BlgTHRKOVts481kLdQWM0b82BuT20cDC3mOW923MNeYzG8UNuCX52pbTPlZwdlwVdY92EzFYVmywXwXctqXxiYn4eFuD3zojshJ0k/x8alYaHIGe/nlozNTntYHLivxbYvvYwP1rALteDHSl0xv+1xM2IfQfPP8fUK+Uj1K9F9hidDT+qmFnNeS0NbC9F0ZT+vY/R/w4jX6OmUDTkuX5YghtHj9kZO+3X+WBd/MygcfoHN5PS2KCSdmqTfKOI2+BBi822+p4FdmZyIAJPHm8KCpzRX3NGqc7Qmb/KHmNChWKCuwkqPPrrbnnQcCPbMN3m7CG7WCDoeP2fyxN41xF134kanjPjBsPSiE7pnT4nRqKaQjQSy2TIR1DzWOd8AnGtEgL/iRXAOvdy93o1NhR9P8K+chsThzbiHKq76L95UQm0Bsferjfs/axgMySSh06QMBQ3HqtIUb30O/in+b63Lr3E/9wv6qRZz5nJo9fQ0R9hqG65x9ovaaXSUaNLEE8aCscRsy301kte/n21jiiMijTq8HMPjRsYv2azTmZ1vTi+Ec4ywKus0Gzm4EOMSBIwXrtoeM2/y1ExP3+CFjPHKPn3bacMVu/fvVuKnyupkN8lLKK13JZ6qluWRcrOSsBhICO+VFLJEiRY2i5PXfpxm7PzNVi5sxy6sFlQv5IP5oAKzMSAjIVNXaU7WN3j2nttK6ETjUTESvbqVN3i8e6QjqRE/BKMRLr3+nMWPGHuzkllIVPvPsqqNn8Rt/gT6Hfo1b4X6vry6HsUSlsREuHVZOFdihBkAkItuLQxInMT6K7AyJdGVwgCtuq+IFYFh0yPR/wWJbFM03XceUB18aLrfDobG02Gu3pqsTpWI2bRlZGSTVs/trWiF3CkHJSXTAs1pDkwg5whwK0t6WwkycORDS6kuPZomq86FL/W4xU854oooUNmOXZrxr9XDEI3sKzdPTWb9M5XTTCIQV0393TulfP7hAsVeUaq2gPlOq1vymKEfTuVh+Skh7EyE5ng2mA34ZEx1RjxpSZI9YZbKo3Wij3wd8cYq72tckiHlcJuqOEai4e0MCtmc2c2wSzxXHR7pcMIkzjPYmEoENc2ajpXysKU7bt7K40GmVlrOUKfLwZE7I7LYcXGA/vb1LZ5VGM/ZHw8dsBbdc+NBaGuIKm6HLyEJlHDNYiw8bgo1pRAyEYh4sGzPpsCbPXA0Zm/KzUz7ijU1JRjzkzQPKE1VAeumYHi0K8yv+i3r4fZsyxS8s+iiJmoLOgA+bS4QFr6pLfkQ1ar1yaLZ9V06oBKY1Xywz7cUSHxQkVSZeFSeDeYMEQ3L9mWbvrq/WBL/b11RG/wjxfoVb6s+nkdvuzNoHr4/aB+N2+2CQ8dQUDrHtsal6Me82EK6gFRba37iBcG+Ls7tDELippfk2PYR277jd08zPzvGejG6gp27qY76liXDUxhz5z38pxv0eEf3J3tZl9t4p8LG/A/E5xk2An52AYAz+TyD85bFNlVFotcxOZTFjF1fsUy4DpOe4Nvc5w4Pu7lDL3g/p5UdnqkEFdKGbKmHPTG6nlg6LtWRHKT66+Fwnm2/mg9NTlwWPPiX8KkpHVKNca+CvI6E2f1/c99Lb1x8K6emZH5jq/OY79z9/X3X58WUIe8LBg7/vF59ZXI1pK2vO2ZbvoUMgxyrrjYqClhP7rT/sXWoEc/ZRifj4NhHiCtmwqUpcFVUEGhwdFh97oL29YU4Bbwk30ayHRjK9UpGW4xElV1WwJ+ULyJWiKih0fjqqsPa4j2MpWGzGA5FYzpc499m8EDd0mv+JK+mQT20lUoBmHT87DXizAvd9mjvaP5RJwc1aHvbylE1OEHnwdiye2wEnwHbW7buPu41eEgadZJ1eR4+s7Z+fbTcTsTDgc+40Oi3TYc+9XQ/wotCwejNsa3HfmcLaW0M3DQ4cbX6NztPYc3xO6sG7edZz6PehlJaariYnC5OFeCCKlWRH7HkEHHzBBNtVvT5fNECoR6Y8NovxQr1NtcRVH0bhOLHV9kmZ9SCq/f3IJ4bKBV+0HC2FDV4SvJO0KmN9VYkFU8FQQI9usONkPFKOFuPdulyS/F57kOjF++x2BeBh48bf4xr+Ilfi5l/LslKK6xj9g1Z83xYr0tibg16m/YgjV9xPtr9YnYjleBph1X6m2Ybr1PJWiU0v8qIBUFpm74+DgPCT/sD5CPod5NN4uhqV715YWFjUjIIk/NDa6r18MO3HP65JpEFe/zU85WGFdN3P3cBra2sHtIyuie/dB6gwpE7CfYcBy7GzFhss02ADXFi6YsH9TyGwRNZzwVJJluvFt1greMA+De24pJEz6i8BcqgV86mE4ZNEbgNtyPTmpkg7Yd87HaPtti4NeiiGujLsPwXIB4b7l3rwEBqd1N8zE0Pp9tsTqseUJJ+hB9GrdjfqEsb7/UY9JxQKTleZ3fvoHswfm4eh8Eo3XOuciEu636PgDZpAXo/29141cpz6u+IHP2D3PE/e2AVg/WVuitvoKybYtMRa8F0YEgSnxWbEXmc7/HG27+5nQOHWj8OA1r64GZl0BN1092VbztCPgZm7nMhbHXcgxiDP3WTHxepThJ1uu/fTKY/lMYXyH38MDN2HaLXmnAFzpt2jz6sS/crXmBKWfumtU35dCr74ewWRvVLo81/QRcr7dfuNAnaP1Vcgpj/IPdv31xHB+xc6sH47ialA3FbkAgd5JkX20Xbmm+2X9kHSecVO/FlIMjmnE9khY5+87Xa02Ol7P3v6yKGVZXa2VOC5B9GDLGzZB3UdH9Abls1d/weAKFe3QRE7esfIHFQQNltOUHPxgF31GUIkHeedXNZGCINRxsifPsP6v0tB2TTwl9A+P0FyJVmVCeJFbJ0/oJGEwYabx401lTBgkAr5rFmFl1Av6g9HNZTMp+oxz1pSxp4J8nUykc3+dsIIkCBPBHAVMt5A6SUt7BG6s6UUO1uOrc7i/VFB82wAYABXD5pnsnOWfiR6AndPpU1RQQqmuuoHr0NKWxFDl3JBdBiZU9V89s3P98SH53uC7vke+r/lfI/dy44X0ecBw7T6UzXEo2SCDZbdZG8dQDwAGXZmxa4qB+w3hELQ6FhWuTwBdxKvFoPDqgO7v7zItibdiUKL9vAnpz1rMBl0uCNAB+/ZQZ9Pml6VBpAYEe4BcZJ9Hi0dBjlt5aRMOR2CnJZqAWVtn/j/fJoPZuhyn2hpsehPSVptf0FbuycImNSb1HZvhBN+QVUTn3wsQn3emEQU3vcgZCmimVaxf6OxvWE4tYUy2gWfkAavAFnwRAzzjlxG4dHJ0bYEx0bAjVQLuYjpUbk0SlM7OJbcgkBzUPFyYr+LbjmnZ5OyF1zaopvL4qvEVzqwjTU+pHX6T58L6mreCsWj4PzQhVw2f8DUI36plrEKlvmdlII+THvtMzoi2pmV7c+GhUj8+uWYpKN/2KzP19NXVvMThfyG+66mGx9BH4HnWWCngvIKIPUum+23yeaNEAygnYF1dpyFZaD8xeGDErvLu91MJ2PRoMEtoAWRPVpzjx2PT72x3FY721zDKTxqzHJe0RL6r/6Qgd+H5zVEfM8dNyNT2RCELDWT3XhMQVX8IzwbxRRu5UW/2fBAChZaDxugr0dQbo3Xo56tB3Ter+qqF4nhsz1eaafwaTYFHEez5T7EdI+kEcnJ8dOgswugswlukqv2y6xqhrbhoQIOuBGQi20mSplUEOIDl0AJR3CDhxoWKqrDaemBAQId2Nsvrp2Kxs60Iyn0/vcF03R+QTBOzxwMf+r04kTJlKql7uRESFXPr3ZmZ04FAbdpRlrBitW4fnrGJ6DsserEpWKkMt2objdATsaNv8MC3PMkN9PvsM3IjI0xhQHGZNPXbMnYfUxBJp5yMZUwA3D7k2iS2ptqi4id1xqZERskYronlReRgzPcinrJRHIrmE/RH/+0EAx46M+jdAYLcW+2qcZFWp8WepZAUYK9Xi+w4o+zFrGQJ8a2Gn/8M4LXyCo/XjgXNBGSupIbc76HVfQVwBvt/nQLYo4fcAaoGegYaNp1zpn3aXu2EfSvWDPzszl3X3UsgxnDyW/SDmsO5mu5QBL9mBWKxAJec2nbb+iv+hCRCrf0vEbb8ezEFEbeRqNqmtVDppTSAQT+YLhQyxS35qvvTNFHeU9Ym7y0t7P1VCFYL7PO1nfWa1OS/y0H40Y1obHz7+x9CBZ+yJ4hdYjb7K/vR5QPs8mo4CgFCr/WrZ3ZR1odNrhz3oPM1ZusqHtgdWlheqqQM/yaws2iWcmFWkNgZRfI805BgR2Nsn/oDZrFRTtpbg2K5+GhlxnGB/S9mQXsP7S5nczEMoKp6rq/x5DF/nNCcgWQ1lRURoJ/f8GAnDEebnTr75wqT59J6Lqs03OHokZDw+jLR5YCvqtHNoIU/5uIzA7Ien6K5crBSxvBxDv3Sbwyc1ciFPX2En4UCJ3pPVyz/lV16th6bmsSTxlGY1Z0/FL0RhufA35tcd/o+0w2KwBxYr8VY4OnNwcjGDhIUzh7vp1oz7fbm6hQag4nY5jCaPj6TasoODpqa+Ce1WMLb/1NgzWEE4hwce9S0Z7ekCz3gpVEAZL0BBjeYC87PDhO2hovxttNxWyKwDCpZSdXh1NklpFTzrDdy2pQSvQP5VRPNA6o7/+llBgYP/2UnC3lQnoMsnCTvccxF/B51RPp5ITM/xdQLlEl6OmnRKsQ9Yu6GNIggVF4Y77iTXfvjn0PbFEkwksvZp45uj9iKOwt0UFLkhr192bp3xKiUkHgX3ox+b71aVUgSk50axct/DTkPZe5L74GmYE4OMLGti4BgLEdCvYa1WvccOuSsJzRDpCD/MHtyr9licALj912nfNuR8zhR2+75BZqZ3DPzrljhxfmuu3qBDgyjbuMLrMkJeBYzkAmAWNwVjW4x2F0bnI8wwPk3Y6N1u/sg/7P8rQB4DpihgwPPn4KEU/w+AlqGv1HgiLzJ5YZhZgsxle2LyrhCDY8tC6Kn0Ji8Xb+CH1pKh9sPFuqRAwqoS34g0V592u7v4iFwJP7Y74K8zNyJD+ZCZdXjKMrZ++6m53CEH6eIPM5XSxcvcVTgQy9EAcvgE8+xs31e0XWVL/SmgB797I3PG4O3yHF+Mn669EFN289sDo/25i0yjm7YNcevjbMwW3Dsf/DSoYzH2MYGu2DRGM2sOfIF7jov7ZC01hJzJw3wsdSiNY7QZ8Zavh41WzriqbpCPkOqKhS1uhUQUKKEhflNFFMqkanS/lmSMz64DbBWR9VjUPHPpEUD2OxpwlSaF8kVWtcORISREHySqHLR6i3tYCkmhQoVWoeUlC0Ws0n+Kx07WjYbKR8MnHm8OAW/gZ3jrufO9DffwnSmqsax0YAbrKyPbij6wNP7Rs6jfhwEySID104D7nP1v6V2V48UgAmVAMsZ3GemGU51ohVIwA/j1KUxefcwBOMjyG4pcYX6rXdF2uEQ2nU6v45bu1PJsKRRDTM+iMWU/ONcpNX/epUzWM3oimSAgFN5BVTDT4yU678EI/D0VsqgOla709b0UQ0jbX7dZRA58JfT28kw5OdU9sIo2h0am19ts42+a4dnpvV2DRx1rtFxACE9rt+vhh/u5bwn756c4mw8/kHwqHVrKgdqPBvt+uBVfAl+8GXzHAHuG3u0b4PICB3dHmBIJJn79PaHLwiyG23jm+NxUXXiZicvU23hwLZ786GX/Coc3H0Ods9abfSyUh4mgeJoO48HnRaDtJG19pFdxBbm+UpdTQGayFPZy9Eay27g/VpsW1PfmHT2npNp/aBPs5LkoemRC/PU2n/ji585KGEnwc2gzcIhSWsC4snPUI0fnWpkxZQKr37h0sdsVHH0v1dw+tFT882AMXXp1gErcSvxwT8BbBq8e2JJS8oubIxY0S2Px6iFy9hLArnL0Dmr663/bHp6fYJ088//eTrf9btC1/9Jew7kSjVd5pLEv7KVwEU680fioNuB258j/QAU85w57kT/aPsfZBoM4kkdJCTAFVK7D0PIibiNSpgd0pRYEu231uDlEEB8NyZQ1ur+xbma5VCjvUuqjLbcFYH6b013se+POjXGOjzoIcRsMvYyyAC7VJ2fDKh3Z2aRDo23eoQlro9wq/eI4f9wgH9/5+oEZuohriyJKyjx5jJyM0iIsYtIcTIyMKhFKGoxbGW/Z8Fq60wu72aqp6nADMzH+ggKEZePycLKy53aw5G9nxhJkbRJD1TDxdObkFlpM6fJC+oohGRlpPv8JACihgpyLH7+spIBonJ5Diyg7Z5MAE7ndbqOZ7+4L6F8387cP/QgsGLIQvSTlEGhiLoGmLwdZeIxgm0mwiZJJV2UAGtLWRJx6cWOpTi7mprbaCnriohyscDDGsTDljXxAyjUwmeRoJNmcgxIl2RqWZqBqq02ISgzUBEx+Wsm4uOAFJvsy2BTTRQHdS/YGVk4+TRs6wQ5mZiZuMDBgwHF5eQx3Fw/5NLUEBdQVVNTXSdloXudSN49zNuAz+jFycXlwy7pqg0Fy+HCLcoDw8PCxuwjmNlPA3qj0pYO6poGEE6pIzg82brgGnSCNTPUWYEd65hI1GQUaVEYIiBdyEJI5eyIiImlmoqqqBBBXOk01QRhzNBmsOQEzHBo0eQkxUhi++7uPTFFfl5FdRBR60Dm3bqWtpqKsZ2+oqZdkwaavxMQkzKaiwJiiwbeUW23VTU9JAVYGaTYufnZ+YSFOYTjrSPsNGxZmVk5xdiZWTkTuDh5BLmYABvYmDaw5ACujKFgWMrK2g+wEDb0NRYVBGIUxi/pIAARB2jDjZ1xiB1EAAKGxBIAatj28zIwAhRA5IDADTee6oAAHjapVTRThNBFL1bykY3gDYhJJoYR56oabfdwgsFiRXSpGmhgRKCvpChnbYL7W6zO23h2Z8w/oAPfoGf4hf4DT6YeHZ2CFSrCHbSnTN37j33zr13hoiWjAUyKP7V6KPGBln0Q+MEmcaSxjP0wuAaJyllfNJ4lp4b3zU2KZV4pfG8kU1+1niBnpqPNH5Mlvla4xSZ5lswG8mHWH1QXiJs0CJ90zhBc8YDjWfojfFM4yQtG+81nqUt44vGJi0nnmg8n3iXqGu8QGuzXzV+TIvmS41TNGdWaZt8GtAlBeRSh7okidEKNSmNuUB5jHXKKuTgz2iHBIVK18OqAU0XEg+zoAwkFYVt5PI2ZofWgKrY4YqrhD1OLfD0YUXb/uAycDtdyVaaaVbI59ezhbyTZzsidDseazRd4TVFhlW8pm39quyssWqXe6zU5C3RB1sV1IegPqYT2gWWcEtVfiiOT3a5BK5AxKmHWJtYSN5zMZdxBA8b0RzgEEKFbqtEFFXwv7NmJ6nKvifLftARrGDnWZFd+8xeefkHlilWR7AIVCl8lT4HcTm0ASQx2rAdYvbB5aozRMkfKa1VlICORBC6vscc29lgUrb5UPpd10MCR469mr5vVHdrp8wdGiri2aSxGjZaJI7oDPMF1nF9tuDnfxtv0s+51uITOjf9ZeBxDE9RNIwO1GmiyozwbUFy1UOM9sDQVz00LbfRlbEgjeoVTtg1gNpAY2gGyj7WiKsQ5SrUvobALeWdKU6hrCt45BjVkROhznvNXJtgiLI9vavsicgm/TJENcLfhZzTKb6R7DojXHks0b7CEvfGUjWRiKdIOYwQbFGtBpCF8BUqrqsc5xB5GZH+6UHITH0R2MrmeDy2++jNM35h4wJupW97JbTNOUQ8lsR2GWvsyi47EKEIRqLFoivN9nhf3LjMtmUddt0w3mv4bTnmgWAQ4FYIL4TV0GuJgMmuYI1KjdUHwouVa7FCht24kXZMpm0ZH3G3x097gqlAOCuX9hmXRasr5aCYy4XNwB3I0A7dXhRxrl5Guu6V478R3usJ/Qnn1HHgAAB42m2Px04DQRBEqzaSc845By85HpDwksHkfBjA2CO83hW2JcSVj+DAgSt/CePF3Gip9Wamuqs00BDW9xum8F89qiY06KhBH/oxgEEMYRgjGMUYxjGBSUTgqO1pzGAWc5jHAhaxhGWsYBXriMLFBjaxhW3sYBd72McBYjjEEY5xglOc4RwXuMQVrnGDW2rU8UWDJi3aLGIxS1iKT5axnBWsZBWrWcNa1rGeDXhnI5vYjA+2sJVtbGcHO9nFbvawl33s5wAHOcRhjti5tIxE1iLmhvA8YZ4k41lh7Qrv7kFoF1KLSfNYJjxhnwYZmfLTeiwp9VhGmiIVJIVxp6bNRLj5EE9lhR3/HTNelaDnxWze0JC+Oj6JIBBW6tc7ndNepO178v5ZuT4nfSuTz3HMEHpW5OxcITJQkfeq1dX0vXhCWKGpYyjBscIXJ/zGtPvH2TyjrrteYLRA9wc2/GK8AAAAAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsc
d09GRgABAAAAAErkAA8AAAAAhPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABKyAAAABwAAAAcac8AME9TLzIAAAHMAAAAVwAAAGBG4GF+Y21hcAAAA2wAAAFXAAACInKbVIBjdnQgAAAK7AAAAC8AAAA6AwEQCmZwZ20AAATEAAAFpwAAC5fYFNvwZ2FzcAAASsAAAAAIAAAACAAAABBnbHlmAAAMHAAAOlkAAGhMDqhY72hlYWQAAAFYAAAAMwAAADYQaJkFaGhlYQAAAYwAAAAgAAAAJAdPA6RobXR4AAACJAAAAUUAAAH4GC4clGxvY2EAAAscAAAA/gAAAP7ppNAsbWF4cAAAAawAAAAgAAAAIAGKAY5uYW1lAABGeAAAAyAAAAeqnxxUc3Bvc3QAAEmYAAABJQAAAX0tsMB+cHJlcAAACmwAAAB+AAAAipKM/Mp42mNgZGBgAOJ1C/rE4/ltvjLIM78AijBcm6EtBqP/7/zPxuLN9A6ojoOBCSQKAE/0DAQAeNpjYGRgYHr3n40hisXn/87/l1m8GYAiKKAOAKNrBvkAAQAAAH4AdAAFAAAAAAACACIAMgB3AAAAbQDmAAAAAHjaY2Bi3M20h4GVgYGpC0gzMPRAaMYHDIaMTEA+AwcDBDQwMLwXYHjzFsplCEhzTWFQYFB4/59Z4b8FQxTTO4ZfCgwM/XHMQN2nmLYBlSgwMAIAWJYS9gB42k2RvUoDQRSFz8xGbBQRLUIk0SbBP1Y2mFRuUoggGDEWEsF0sRFCbHwCS21Nb2XlC6TyHawsTK+1VkGI350EceHbM3Nnzsy9dzRSWXzumN8IvVbPxypGfaW+pCQzozSqa8eV1XTPOgGL70fnSkPsWnOmxCy+BQ2Ip6xC8d88EHxgZ/hZGAY2oe1fuC+H3kIHhpO5O9IZe2P/Q+xA7egVcoEanj/Fk+BZD/uGWsksKIsWIesfyblFDS3GJXVBfp4cE1XdJ3sSFd1YBddUnrVF5hUn8i2MB35JdcbVqKOKxVlfM1/w3OB/wvegZea77ls5/6EsauTde+hD2/qLXvgrDdA37ry3M8P5k3y60/5Zfw7J+ct80As197VHz2rUscFaPK0/tZjVb/1EE6sr0+AtyzoNbxPrzt6UXOS2eedL6Re+r1CoAAAAeNpjYGBgZoBgGQZGIMnAKAPkMYL5LGABGwYFBhYgz5rBliGaIZ6hiqGOYQHDCoYNDFsYdjAaMpkzHWc6yXSL6S7zFOYZzLOZ5zEvYF7MvIx5pYKIgqSC7Pv///8DTVEA6rZniGVIxNB9DKj7BtMd5slIupcyr1AQVpBQkHn/F6j98f9H/x/+f/D//v87/3f/3/J/7f9V/5f/1/+n9XfO39l/e//2/Ln+58qfS38u/Dn/5+yfM39OP0h6EP8gVqAO4iPyASMbA9wIRiYgwYSuABh0LKxs7BycXNw8vHz8AoJCwiKiYuISklLSMrJyDPIMCopKyiqqauoamlraOrp6+gaGRsYmpmbmFpZW1jYMtnb2DA6OTs4urm7uHp5e3j6+fv4BgUHBIaFh4RGRQAuiCDsyFs6Ki0GXK0HmRIPJ0rLKqvIKAmYmJGUwpKalx2cyJAMAhIJtjAB42q1W+XPTRhSWfCROQo6Sgxb1WLFxmtork1IIBkwIkmUX3MO5WglKK8VOeh/QMsPf4L/mybQz9Df+tH5vZZtAknaGaSaj9+3up333k8lQgoy9wA+FaD0zZrZaNLZzL6DLFq2G0aHo7QWUKcZ/F4yC0enIfcu2yQjJ8GS9b5iGF7kOmYpEdOhQRomuoOdtyq3c66+ak57f8bfvB7a0rV4gqN0ObNoMLUFVRtUwFElKiru0iq3BStAan68x83k7EDCiFwuabAcRdgSfTTJaZ7QeWVEYhhaZ5TCUZLSDgzB0KKsE7skVYxiU99oB5aVLY9KF+SGZkUM5JWGX6Cb5fVfwSaqcnzj3O5Qt2dj3RE/0cHeyli/Cra0galvxdhjIEKebOwGOLHZqoNmhvKJxr9w3MmloxrCUrkSIpRtTZv+QzA7up3zJoXEl2Mgpr/MsZ+wLvoE2o5ApUV0bWVD98SnD892SPQr2hHo5+JPpLWYZJnjwOBJ+T8acCB0pw+JokrBg5NBKyhZlXE9VTJ3yOi3jLcN64drRl84o7VB/ajLrB7Yl7bBkOzStkkzGp25cd2hGgSgEnfHu8usA0g1pmlfbWE1j5dAsrpnTIRGIQAd6acaLRC8SNIOgOTSnWrtBkuvWw2WaPpBPHHpDtbaC1k66adnYn9f7Z1VizHp7QTI7i/zFLs2WuUhRum5yhh/TeJC5hExki+0g4eDBW7eH9LLaki3x2hBb6Tm/gtrnnRCeNGF/E7svp+qUBCaGMS8RLY+Mjb5pmjpX88pIjIy/G9CsdIVPUyjKSSiOXBFB/V9zc6YxY7huL0rOjpXpcdm6gDAtwLf5skOLKjFZLiHOLM+pJMvyTZXkWL6lkjzL8yoZY2mpZJzl2yopsHxHJRMsP1CiQuYDh0oaPHSorMEjh95VBk2XX8PG92Dju7hbwEaWNmxkeQE2spSwkeUybGRZhI0sV2Ajy/dhI8tV2MhSKVHTpeYoqJ2LhMcmeDodaB/F9VZR5JTJQSddRBE3xSmZkHFV8hj7VwZKyaG1UXrMJbpYSvLmoh9gDLGDHx6NzPHjS0pc0fZ+BJ7pH1eCDjtROe8bS38a/FffkNXkkrkIjy7Dfxh8sr0o7Ljq0BVVOVdzaP2/qCjCDuhXkRJjqSgqosnNi1De6fWasoluDzDWMRbR0eumubgA/VVMmSU0CP41hSa88kGvIoWo9XDXtRfHopLeQTncCZagiPt9cyt4mhFZYT3NrGTPhy7PwAKmqdRs2UD3ea+2UsRzKB32GS/qSsp6cRfHGS+2gCOeQa++E8MkDGbZQA4lNDTgF4TWgvtOUCLTaZdDgyP2eRRU/tituJE9Kmoj8GynU+6FLqT8OsdAYCe/MoiBrCE0N/Q2FdA8QjRkk5Vxtmo6ZOzAIKLGblARNXwb2eLBpmBbhiEfK2J15+jXN03USRU8yIzkMr45sMAbpibiz/OrLg5TuaGkqHDUGhjMtbCSVMwFNOCt0Xb76Pbmy+wTObcVVcsnXuoqulbuQTEXC6w9zkFaKlQB1RtV2DC6XFwSpV5Bk6TX1TE0MMNfoxSb/1f1sfk8X2oSI+RIvu1wYKPPwRj632D/bTkIwMCPkctNuLyYNie+7ujD+QpdRi9+fMr+Hcxcc2GergDfVXQVosVR8xFX0cCnbBinTxSXI7UAP1V9zBmAzwBMBp+rvql32gB6Z4s5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZgPeUEbQN9qdAvoO11PWGxi8b2iGyP2D7zQ7B81YvZPGjH1Z0W1EfUXXmjqrxox9TeNmPpQ0c0R9REvNPV3jZj6h0ZMfayeTuQywx9PbpkKB5Rdbj8ZflOcfwArcU1jAHjaY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZ2Jw2STAyaIEYm7k5GDkgLFE2MIvdaRczAwMjAyeQzeG0i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5uVg5NHawfi/dQNL70YmoD7WFBcAd1kkywAAeNpjYMAA04EwiiGKaRsDA9M2xlsMDP/tmESB7DP/XzEdZLz1/9t/YxAfAOy2DRUAAAAAFgAWABYAFgB+AQAB6AKCAxoEDARiBJgE0gVYBaYF/AYoBmIGlgcuB6wIRgkKCYYKNgsEC2oMJgzcDUgN1g4cDq4PQA+2EEQQpBEIEZgSDhJ2EuYTIhOCE/QUSBToFVoVyhYuFvoXghhAGKYZEhlqGgAaihr2G3QbuBv6HEAcah0SHa4eCB6oHwIfrCBWIM4hUCHiImoipiM8I8IkCCS4JSQlpiYiJqonQieoKDgowCk4KaQp9Cn0KlQqnirgKworUCukK+osKixeLKIs6C0yLZAt9i4sLnYuxi8OL5IvzjAoMJAxEDGQMgoyNjJeMqYy/DNuM/A0BDQYNCYAAHja7b0JlFxXfSd8l/fue69eba+217XvVd1d3dXdtfai7q6WWt2SWrIsS7bUlmxZC94XWbaMbQwejAHbkAAmgQTCkhMGPkLCZkvCEJsPCB62OfDNsAVmCR5OIMR4HAbDhNil+d/73quqlmRDzsycM3POZ8vtqntvV737X3//5V4hgmoIoa+QMKJIQeppJmFEJit1o26U60a+9q7jtRoJv/QPNfwpRNCtCMH0GWSgIrr0TNYklOAda5/MX3qgE4GPwQcljLFnDRFC1xGlXrozPjDh600YdOd6x4tQOhEKwIf5IzILV4IRkyhenCuV4d9mo92q01bNjJiRkMIUli+XJjAM/pNM3DL1XuKlVGEyXZqUrpCCMiEsII9VwgwTmZxRWLeuyBjL0t9/NRCi5KUfECIH2D4WlAhWg5UKC8JDwX6K+LP4Q7CfITSFbu0EprKZ6JAKZCBoPEQwIbA3HfYWgqcnBF8nw090kGKEPGRn3Np3kM/hOzZOXTjqIzvX1zva0NCWoaElxmKVYKvemsMRMyw2l+M7XsSN/ARuv9xEiUp4aYlK5RIliTQlgaDPx35+sUHyCYYl+ob2NCYMWFQdJ5g9eOGQRYP5c4t0P9DgenQHelvH3S4RST5ICcLE5mxJZUTyavBbEj3qcxHi0QlIAT6iYFn2rLn9BKEAgk2/4kJfb+F6p4zRydtuvuH4kfX9e/fs3L66tTPfrE+MFXKp5FA4aLg1dD2+3mChipnjgrCAOQEsQtQXSdN52W4BrWqRcAikxodDc/iCARNe+3AeKBmu918DVXsfW8F8ADfzOfidUH0R/yho5tSALO3enY2zg4dC4RMn4MVvikXqigWHckpQkrdvz4zKnggsVIKw8FI5njl0KBTCP4IXr31t1p5TA7ByG3+HJ7dtx7i8fVvoC1FDuSu64PMRrKeSLopXtlHr1esfkM1oQDk1tOT1kZPvVAKw0npDXcmEBxZiar2yJ62P4W8Ippi+leAVzk+Kps59Bf+UPIdW0GVoP5rvzPowwvtX80iSyN5mY0yiEt0BfJcQkU4gicKfW0Gr4TMOw++baGdnoTZRyQ/JzKwEq5grYhsEsgmUTWKujiaQUQhmOVfKl8N8RJAWyM4pW27muQY3BC/43Bw2GkBeFg6ZkXot2Go2yj9ZO1xPjaR8VM5PyMubAlhTVcrc1UkQTpLxpoe2vscfk32hIFEObvHjAKaq7Gotu0GnFI8R9Ep4f6mEM747LjnWTHtcrlJZxVpRl+XJmuoqahj/sYv5I1uOP5mkWkrFgZDLP6ZL0nWEaRN+gt+34DEyqaC3++FQeyKJZNCBr9CngWYulECTaAntRls7m8GAILBv9BgQCzGCjiGGVI2px5EmSdp+pGnSQcVFJE3anUqu7VjesrTYrg+XkpOpyVJxS1ZnQxUcyueAgDWghBIOpXC91ubbL+VzXhwOCilsIUdmGVJY0VpsivecnMGSTTnxm/jDj515H/HLp5+RwmFNyeUULRyWJgJDQLY0cweMqEt66RlZx4fehwPSlspKxhMd65x5xr1ZkWVls1smha9+7TN+/LVgJpeU/Iev9kupXOalR6OGrknkW4rbDPg87KW6rH4VViXH7z8wEfEnsXsya3SWjOxkYGpSyNjEuZ9RTL6BVtE6ugF9vOO/7mAp6FHBxEyUwVA6liOqYElCBxnYv/AakBMTsIWERITxHNm4wBxYEBULqtyrwCCMYHJ4YKUEtiYJr2AII+mYLIzz/t6vY7J7HWytuX0bRq86tm19+3qjNjaaz6JVvKqCUcEWtcFAmJE0BjGd4hRPYVOQvB7hUtpumWHb/E5wC5GzXVJ7gbT5K/gtMyf4Eo5w/Wg2YAEtM84r8QGLuFzCB7ff6E3fE8gXxrVrxxlR8WTZC8Q8rmOcCqZnx3Q30+caQ/5tq7J//1W7bzZY01dQ/JrE0se2+9XkcIBhZSISDPvYPYpEzbBf1fJ1d3iBfOPYjmims9sjj1fH1QPvCjCPS2Zq9vevc2NdDsnaTYz6iatM1FG6Oh+MrdZ8EdnFiOfSXZef1Mj+RrnV9mPKstl0JlFVafcNLiqZ9dSETLw0vMQ9NroUfxY9I3zjoY6He0WJoBDuO0UDCZ+IuIdDgx7Rj7jrGxw/b0j4wtPgByk3MS/n7vb8rp4NnnX3OQXfCvobRwbACrB3J+FrbtgeICxSkUNKniMKYcfEd1m6FfabEXyrsl37k5yq5v4EjEYhr+iHI+pr9eckRXnwualHp55/QMEalb2nvjR/TffL7/FyusyfY/gQfFdKfBcMnEQY3zAyyb8r2JrDNmLxkZ7MtBoWotlCC3nn2/JJnRLP3pjXG9vrIc8SVXzfcw8qmICdlo3rPrT7+d1/doNBFf4VW3ARPwPfuRNNdaoM7NJqVqgZzFHEJV/CBCT/GFfOg6CfdHciXknEcwJoNLh9SYIUh0F8cVtIf44p3MawfBVP4BDMhizitxutJgNPqAjbVGtZwl5P4TQuV0Gkv5eLDJU9ntBQ0dATxSF8Et85VEzoRnEsVlI9ZYOR2EXmMFGohzwVTCZC8twsDkZyHlxKpD0FXPSkEyXsyY3gOzFLe0jKo8Griy1Q1KRn1qL/W2mM3IDyaLIz7gZeJ0EigBRgCvB+wBsyphKiR4Ap0kEYknYXQsVQKcBJ0W60sxZHuIlN4qyNCbhAwObnMQjKfBYXwOe6/CkALwXw6I8+SrQFjTz6aPY3Mf/b38G8zJVi73i75YzhfTIJ77Db0plz70LPoEd/q84A7loHbfCerzMD4+cNGYM60/4X6cxbLob8MHKjz+IpbAD8HuqEYQADWuBInavP7tZmLs7thvBNpoWo+Be5Y9KdV6UUw1CSV90px/4upxAsuWNxNwiggiwawE9OAz+aOeumhMIn2+7ATcBECwvg5XCx/9bgoNAFL/zI06QQCrRhb7YC8b3Wf0gliS41DO6OYYePSvRBSgHf06Ul8ANcJhSBeYIo3Ul4OHjFO4QZAHlAN2CkayiIg7SHKDc63euCJpB6P3HFAlEsdz8muf4pajDK6DslM2bI1P/i7ZIhsHLl3M/wb8jXURRNozc7cQ+3apJwcRDZcPrhCHYcXH/W7M1GxWyNxw6gquDeDvcXccZH+SugG6gz7JHut3+PYuHWAM1VxxJxrxtFcVQW7ixFQZMdd1VuCPe0gE1AGSzPFMsnhcG/cb8GBqAhIAhWFw40ky4s5dsPP9TOS3goax64M5QHL5Xz6xAnEW8oGB0KhryEx1RfL84fv3abf0q+Z/nGG5fvkaf8N725Vhg7mcBq0VzNXGsuq1cshYLB0NIV6rL5qtzlQhZ2wnb/BnBCET3U8fowN1IIp0AcqS0SMYQZx54ArgjhGIFS6UpAql7JQQAbVpj9FQZHATGILsjJ3orBSSBVEKNsJhYNBrweUMUiLipALkBdZWECHDMQxfUUAUnIVvE8oIF6s5Fnd0UCxJQjx2o+TVLGGNmna0q8+xm/pgQPkgSZDESyYB2kKS9wk3W/0/0OU/2erEvxRgKG+otf6HzvVfjxHOx9Ht13drpVAdTt6EGSw21g6AkuUwfFxoHH0vqGfV+wyOwtEluP9+YBnWKOTvuz6+tnZ24aC+VkFq3gRomDb1s4HDxvAZ6IYolHvWZD9XA/1G4KAuG9rYqLLUVllxxRpYzE8puqnclqZyfFU9GlUem2BxObWZrZAfjnnwyqWPqT5UQC/8fpZaxfYSQ0uawS2bWaiPpjt+/YtpCeLkjHwVhAOJ5Ki3ichZMZ9UPbJmqcZqBfvwaazaD/fLY2FaasZzsqMAuenp1ATII/tyJJhj+3DlBQlrnroxHq6N5v+RWz9ytR6hB9+GV+RUZUFuGR9ZvcelVfZqnDDZlSeb/9DTIVqusq5sojpRBwI95nC7fevbDV8sm5wfCpxrHlBIXwawHDH7wQLYTZXE53x2NY33Xi2luOuu983Z0374tAxCvJkm/lQKs8VJoYZZKEZ3GySOLDGewe9ZSKTHbtuvLKY/Py8GtuPzXtk+gVVHE1aHNh05wKbNjOMFM6Vk4gDT8YYL9JsHP7Oi4TfCtoL3JwfYTJBDiHsISOA/08a6DmXsxzPRsnfHzCwDzXMzU1NT3VLr+m1IRdRyvFEKtgJ8bh6GgeW/8H8QyA4IFEzmKx/xT4dyBOuVkOAWQ3CQsXYkQOSuVhnvY5dUrmsvcDnbkk6vYHXVtUpkg4Vgh/Hy9u9659MR9stUEyRf6n3eI/iyUZf1gHvyVTTZn88DeDwY98MPbmt8S4HymC/D0H+55Gf9XxuajIXiisgGXJMVjjKgxI8B0QOsvMYjhTCDuGbF/muYgk/tZf8m2Qxc7oy663BdH5NczNnB9eTaPpYr5UaM4UNRCuYKlsgPxk+irNiV23RSocsiCDbQXqNTskhXW3RCTVALkRRIUfx48BDGDRw83Zl45uKWciTGP+zdXZnKJnm2nNj2NqCB8PKVyd5XgCfpCty2DnmrOnfrlU9NJWzleszl+yL5KeMRQuV45+j4JV/LuO1wC3C7E9SQx4hAwomHCToNLg9DlN/Jw6VuwXQZymxcF15sXWRZFD+xRYSUmm0rGB9RtXcU8c762SYUJGh3uruUfO8qynwNe9VQgJ7RafIyOu3sLftJvVSiYVNf1eNIpHub+Rc1XCab2IayDGQHFw1DlObqaEbQ4IFnkxLYkklEiTtKw8ATaXD9dCLPNjSinR6XxckWQtnZ9ZVpTcjl3VQtznGsruLsthtx6Lqd7ZjDcksUj7+rt3r4z8s4Fx/BDDcmDHDbo2PV5a3702lkuO5PGHsOzZPbW50MF+8/rO5LiF26rnXgDenEUVtKOjZ4PgWDm0clQekCsWxs+zRm3K9cd8zth6x0NQasjvQhUyKnG45aTaQKc5HMn1IzFBDCGgIJ8UzN533cNxrFy7HsCPpJaVDLNkUJp0HR19GvSWUO3zario+7OG/tA/HeewGkYXuHJDzBSU41Gv6792/79yAJhkydnXUQYs2Gb06dM6KLvjSbhAgD7Lx5xwNLwGAFk6D7hdsMrsr+oDuLizCubA6NlIDtlALod6OK63CqKS/c4HSRaiC9SmZqenNtc2j1eK+Qh3D2EraHOU17RTbLbaLvBQrNgolS1pEdmKJoVYrQHjItGWkuavOzauf3RLwAPQjY5FCz++qrn3RkZxtYnjsXLcG/JGq00XW5kaIopUjM+4QIdVX5ywa16Fw588UHaBiwbTnarueKbYftP9w6ANvm1rI2kis2J1djTjrXcvry5uCwcjI+Ft8XjG40KD+j2OOugvO94FMJxJTOUQAD/aAz9gw4hMjyGezxHkd3StT/0LFpm9RRbxLWToLOLJaqC9s5bDowy84B75WH8RCMx++1OIRXnNHC+PlbJ2Or4WjIRDjj9y0CEn7iLOiWEeADcbCwCN5JKT0DStjF4V37HpVV8xpduWr1qe9AWYnNepJCuFsfl0CMgujayO53MNl4qxC1PDnHErHk8+7G5g4iZ/2O6+2Nr0zP560uVV1M06VTLjqZVhZdZvbB8rrGmmT9qvGxPJy24xo5TF7464W+OwZRFn4a8hD0qh2ztej8ThYMzwQ8jFlTbdq8kA0fxrEkBjoav9mDMESs9h85ENcxcZFrFnx+31elPe+HQpIDLDTIF4syFSwxGTnhevPUOlB5kVn1FJ2Ri84UUisaWmn1cJut/cGMlxGRIxtNhXCf1pJ2jtqxQJeyWJ5DAVnli3dA8+97r+FuFJBzB0WkgILL/j5VZwGgxZK3jABTsenH+ZKYGu188ODS1zOkTPp8PLBeYbCPKOi0XpG8jylYsWawh4zatpDL8bYvcYmuiMgYiDUCMMTwesulxU1yAGInSXxwNIJOaJhQOw1l1n3KRwuzuCRawjWynMEVEgUa7OpmS8C+/SXXrmpePZgIe/2ynHM3jZvUkjTDX0hOfv3ElfhFrVCPtZEP4q+QIaRpvQzR09AwHqdJXIkuMxCr0AhedjpEHcLUnyOjhPrwxk/u3LDBn8ijZdqZRzIqFlQ2ehkBaKse2kEuJJCl58sIKXi5UPcS2U3TPhUeE5M/Hte6+7tbEnANT1lkteXqJUwtsDt1xYUZwomM2ARA5Q1Vte3btzeGG7Xsy5gJ8YD9diey8Ldn/vIhVGXlt7gXyA/L9oCq0Cjt6TwAodxzIjOxCDT2XyCV51ValyDKkAuFXC7d0gSNEst4rR4kKzPjpSLmbTsaFQQGVoCk+5BLpwgFzEAXui4gAjaVziMMMIWenoukgBKixoxx3cdkXqbQdofPhTnzl58O01fbEyHfHh6FPfL9Vfn2GuYE6N/Ghm5tT2ee+6oq4eTUouNjRkKhhrZU8go+iZmks//akvXL2CtUTliplbZ92f+ck107sxSbhJ9xdvXN0SkzVJVjcHFfwCCQ01XJe4VgKqSrX8lSdNxmk0Cj8+DZi7gBpo5fQwd6Q7HAMlge5J5KiA1WAlrCBjcNgnhkWIoU1Wm5HpjMzLLhbjA31zPoGzIRHr2pl8iDHMUrPMR3yAgJswiPPS70umi34nQBtNOaJLfn/31zniCrDxko9p35b0qyVC1JQyrB89qmgd8jiwPCS99HtaSAAVZXKKHCOAU0BgVLeLnJRCH/Qy1T18deS+DA7H/hp4fQhczwdETr2EmuiuTgBAJaB4mVYhdgMHJUn21tM2ZDjSS6OvKQI1MIcKF6zwDawQBImMlhFqTJWbo810MhGFLzWbKk+uWdFBPSKgp5UIFioCYUM+LHJEXCRovbZA27yuAaOvhhUh+u735y69Zucm7x+Pjl+T+fgJZdtyfTk63gybr5NHR2cSEdKaVi5Zw5JJ7g+Aq5P1Azvn1zw08+DOyZZXIpdg/CRVGpV4NNxNEy1YiLdmQIm+b+FPritvFroy3CkOgHVKrdyY0INMKh51qVz65b7020lKM+QjNrsBanJcxMs1i7glNsoRNv7I42cyi++rbNq8Vofo2Q2xlAxiMzRyy+Gjt27aMk4ZcFjSQbhxYHonyPV1ux5Ku3RDU5T5jkTVUV259/nXhLNgojGwXKLXSrIrbfcScN7+B+BtGOV5zMw5CxylvZi5z0me0FuXHEZG+gzsTVgxM0KJWNSEDwyeknt8cyJjyegzzai37CKU4BOwNFEMPBnCqQNbX+t///3q2srqZYm7A1KPNSTeffIvD2z2YM6Tbggz88Hh6h0nBR8OwWb2ksfAvt/W8SfC4H/qAONCGnhB2oPQEuLZjiPIRgieNe688bqTB7hgga+/QOwtKKNNM5PVsVzUDPjQvDzPQ6UiT0NFavXBRNR5gWyO5fK5Ks7lhaRuiG9xWP5lQNVlDCrIbfd//k9BFWQW/4VsGXMsuzU2t2tHNKY8+EYnwH3jg/dSzAIs4+SiyH2cPBDJJlNgz4EV+M/4u+gQD25PO/RpAH3G0NGOL58gSIJfwHHudp2ypx0uHpFhz7wIIQmei26YC+cE20VDjMHlOxoxvDJFY3iE8eTuhft8ecoQ1JXthAj8OHWKU6FRt6jwJ30qkE30E/09PfDAxXfe08l3go+fQkudhVGQexn2KVUwAziPuGPE4MKA0VSWjvQDJdgPO4gYi7Kd5WYhnx8VGa+W33JT4KQtPeXBilDTdm0e5ycIj2w4eDIs8DT/xOO3XwNRsUzdAKUlf3F15pajx26ZjJNiEZwyje6/GQAakW+667GP4uOPV1UZ+3MGqKmvkLnvufvURh2z6gSVAUl1nwcpnrJ59xToaBVd2vFEVA5zqxlCe5glzKtIANeP8LqBRySbBdc2jPvEuOCY1owMFyM1K4Bw3HAS20Um8c5vJ/l4iivbZ94hFiKNGmcKTvMo91rJDnfFi+6PHN6R91pcYffBP04i66WHnFePPPzwIzb/OL941v1XsL8AmjobENtzfKluWR5bP3XL3FjK+Ph0zapdOhvwOw95ee8hL3gceATna+287cfge7Noz5kEqF/va/3W14I1P7QhwPNbD2CP85iu47HCuGv4DOLFrtGRSV7swvZTGX67BmWl701h31uGHzBdSZqqcbJh7fieo7u82OWiujuzJTXKE83CTwdY9793X1BWdg0zWW3NUT3QNkMyVgCMBWy5eBKev4k2ddz18WwkrCMF9XrbPNzce9YwtitX4r1PvOelqzPzzU05CXBHMaSIByQ533l6auuwyfsHrFjBblLCEfJkYGaaqfq3ycSkwJyjXGNJZZTnPPA7cjuHse6TNs16CX1Dp4N1avoVQjRcmqgeOujorjDqsl9908Nvy20vY5Vir4aZ/PqFxe5bZdSz6xHYYxytddwRL3gnj0hw9hI8Tm4HX+mIidHL7YgxYbk9GAX9uoriOCoJmw3RzkW2GsXAl5+FfBo3RV/4vNiSJUrRB1/t8qdEzaD/5MCf57r/lccy/DnpXfCcy+iWjnt5ergYdyOFComKwHMGMLZ9qBeC2sF4lrcwEgj2T1grnMmN4z4xbke0mxenJnOZoUhNtB/2np3nAWrNRr9ENKjFUUDRlPXecmiZC/sH1Jqu7vQYinZ8O1k97Ff9nl0rtkWWLhE6HnhTEqt+7yVeQ3HvXwH8w5k+XLZ1iymGv/vCFyOUBr/QzfpVtlHfMfyrb+t+dCeGKVgb+YfP1sm57m8GbIBj45poFuyT6eY16J4gW6ShDmk8FkmoTZKz9cnp8ZokujKcnQfSuMaVbNCcWUFWlQCSVkIbN985wCJe7UeyOrBj2P/awpDmU5VXn8Aq2bBfQkOebsYTAs1n55k3SXFrL/03EiDby+8c2CHHWgvnfkZ+SL6BghA9rDvcH/Q/5+WTLjIpbE5gsABrpe3W18+MFMtHuDoH/YBI5rBdAGdZvuuiyNxaqR/LAol66gIeI0OMvfNf+ySt1n32wT+N+fBvjPdu2ed2+cJjI82RlUAZgN0V+EgIv/st6eZq9dcnb5n+5FNri5VDRxuriXguOXOLXHQ3HCyJyOuBhyYqoj0dF+/y4CVqR1eHAF5hIuFjAhw7JlZw9IIpYWUFc7ONZqkmchYW+rdwQ76vvbhUIQ7+L3Fmvut9uceeiF69z7H++Kr0TGXT3BWxQioouIflzGfPJiV8222OISr6f6W6mlOTkzaf3gWY+BuAiNfQUx3vCkQ5bng6UQmGvWiwlyySKQT611vdDvZDi+CfHEJOrxjfdI4vBKBx4hVXVn+Hlby9rJPZuMgKKY/3FtOdIkF4fbQ4W9kj/DsXhnrGEJ1jgnaWL+INNErOUomikxbktdU5XGqK/M8soJpZnJLSONLuiQq+bGcooazRwPIWWdFVNzMlpawKuXm2+LojYynZvTTv85EZamha0lNSNI2qgIQiLBS2xKj70McORoPytbIM/gAiFldILWACUvXi7fs3PbBa3HapTtd5460CEq5KPjlJJqdP3dSTr98H+RpHM+hwx8frdQGwwuMmwQMoVgaayOSIk1cdCMEvmBuIw73tZmOqMpzPJWMnmWVX+9U8u/Mu4LSUWAZ0QAaRHXDyiOYQD2XCsZzxl5EPlb3XRwLSuxWqMqM67VLopZdcxcWyPgVi+ZbCBNu5bXWnUrVsiv+mYvmOCZXh7gtembkZbyJUpHe8/aGHbTHFH7xmTMH4axgrwjdOgT0pgpwuo0+d9uC+40/x/D0l6IRjNXiLgo3bI1K/VnDeKrO/Ktor6MedVWIOSYd7q6moFTifYTedwiqg7X7ng5AkMtYQItSnSoVsOhRAy3iZCQ/cFP1lIj3t1PUiPaBdwQJoW0IpAn4rRC6DIC4Sy6jjyeuxZ9Q1XxtLXq7jmU33z15WN3rI25vb2rx+QbpTXr3yvlPD+f27gtaUrLo2reWvvcKQRgKyV/cFZg/L3msbc6GoothQ3FtIrdXDOEEi92677Q7mGdMdkK7NBDULlwyDLD5OPgnx1JaOXgHIgxIDps6guF9YtW1cf6xn3M7c2bx7UtjsVjbTz4SBPkJ03HNQ1MgzqwqVr+Jmu7WF4mFcFu5ZzdFKeGcq0TN1idTOcIUqgA/BKZNPOJFRFJPuL7r/6MiRH/sJzxpmUwHhe0GOPgh6NYr2neZFWkeODCuegCF6aENl2LACCmdCVH+9Vjf2NWKKI+EzlfZIzdpcD0lGTKubuN1oDwwmsZN3tuMLDiGxOrdwMiAJnDFWV2WZh7XZ7q/KzEbzfvXv/1GanVw3n/+p6pcJhzfB8K7X/NT17b9K3ix4FAcj+QXYVxHVz5j6AL5322jM5ozbwhM2U05HFybtFk87P5nGrWAPVYVDlHAHxDtnCW9Mb7Yk000vudwlkSO7sduUq+M0cPttkh79w5gu3Xa7QPIR+Ye/GHebeOiHJMzhQkjp/pvul6WgqgYlMLQzCq9fDAGG5HHQDrT57FKA1+CcB/bJEqUbwLw90ofzHZ7f3oG2LU4vTjOeTQRVcuF+q0IZcE/YSibaI2QgBxsIh9oDm+QjZtgZoM8E8dp+RQ+x+S26W5Vqqwr2bJ5k7jCdm2UhnXwkROs5GnZLk7uoujYswcq5Rd2tSfVVZq77ZZcplcgZl1/p/rj7+RQILmNe9YvYU5fwthef0iGkAbTFyCkpxJ1zSP1M97s5V3ARZ97t4Ytln/p095eT7A68Z9ET4rYFA08ROQO02o4WOtq2QhTi5R57ee+XhaXtQNga8IkBKwJe2VqtHhnhWdd2sGFVyGx7D394/wYx7WYrO+ghIcv65y2jJYH79ArqgiSAJXv25luBGZLsNcIuX07XPYocWKhsHYGQTmGdxYBErzv2G4KNlRWPLF3iMwNuQJSaNuzfocj6m3wZvAe/7Z2UEXB7WFKU2L7545t8VMNE10GZ3/EW0v2UxE+pYFmSTkVyccMNX+edj92hSJKuU8smgfyQvwaa1NBMx1Wt5LMJ+XeU+bPlYtSsUVHCtVCWFfi1mi2rCt5q23VdHwmDJ7ROO80L0z3ko4sLimnotxVBQ2ORG5k7rjRb1C9p996PNaM+bqgKJa9/PSHkA37GI4eg+6ObeP1bruTezyDYgj0HGfM8/rnXvTbEMFEVTX7NfU89Kdn7mod9XS9ig/0dd9AFe6pmCSW9HCXPswqfZJ3hOtg7w9Wb8PUmBPt9FI2Wk1GfGzVpU3QjSmB1c5Z57bWZ8e3igi0QvaMNdj0VQmL83u5LYc3DsAFBa4j+/FlZ9cGmcPfDODikeqgUYiKK+NWvrQny8b8g2yiY3VScGzDsU2kww0gXHhOkn+evZCJGQ3km/eoX1t53n2N4gTyHkjy/HMX85BoSvVqAlXn5bL+9MUJ3l7Il25k4RfgKNpyXlspDRHSDtH61ZhhqKZ0uqYahXX3ACvTIs0TmLbHyi09b/+cxDf1zFrBlC55DgedI8OcAbIbEc4Drv7BGnS1Ni7wCF6XB6Mvy8nPY4C+HYtKnnZzf+lX2A2WlGPliXhHh1ItX8HDKehQ6SxR4hptJFD8hcgG108EBP8VbcpFoOvY4HbrWW+6HTq+WNwtz3uhzNgQSXM5NiAI5d7E330xJq0nwqxhV8gWMKxX+h3fWkxJ7M+8puF+VVFDNYqFQ5OgL5Orco6R47u9fqQ85fEEfckz65ZemeRty+0u/lGObrTbkeMxqQyYofe4F/H38QzSFFtF7Ol4dPqoNCg/4WObwNsQrLAwGiCSTEwP1YQgQDtINSYX8xZbBgl7TkXDZL7PKGFwF6M1br9UW64vlcntCdME5lUwmuuwbPDc0ePanSuaxtV1RrW3XlVprnih2+ImX4uV9izp1gXGjIHW7jz4V5NZfGouGTDZ0eWWmPL5pbMsN3iuHa57bgqTAcLNaXtCJutdFZZ6DxqU3ae9+l4i11VDAyIyNjm+tzHkj7Ntzo2aWaHOqazJAebzQOvcrogt5GUZPWHkYcImUhLFMhxOwcQ0wgSTtiF84zGta69avJESKyel0E+RGBwFcOY1YTvvXhjUQcVgLnYYtscS3cYmxYYnVilUuppNR0+dWJBTHcasVq3yxlBy8CoeKkf7ZLAUvLbaUoDwxLtJW4xUBo7T5vf9P9wvp8nzY7wluyoy5KjF5Q+7t1fey4Z//46n0SPqyPZlyTPhWkMOvghxW0Uin5ALR9glo6/Tv+XvGFOSjMjO+mSt72zkClsYh4RkFfvdScbBoDtdE8lMUtEBEit8kprK9XpEpeAYm+9P1SjQf1KmRMoKutSU3BhVWcWDtymd/+rcBHArKjI2W+MmTeNBnjgynFjZ71Ql4fBc9IMlqTpyJhWf+Z+B1DrTnzy1dCZpglzxYxiPDwNQctlh9/ii1OB2yYh2Li33Fso7B9hmdPn8JT+g54aTgc9rhc3+FMbiCx+f50nTZauApsn5XYxqfn4AXc2VRbGjaBfAwPj6/sj7RiE2e2DrjAnAsHXBy8ONVKfaRfG2slBqeGPLJbLjenrvv6vZVBeXuUxwhDySplPhHlhZKL5hDfjOyLGLr1Llf4b/FP0BZVOE9GjmwDGDhZV4uwb14eQPn84VKsTllH1Dpexz7JNkGfpeKVouXEq6nvmdU1I/E5EceiQYSlctWmQy8hsDr0itf+wa8RS5Vk0Mx16d/8mMfNp8qMUILS95QE57YRfdSWSnec7o2HoxskoRPSsKP15IvoGn0qU4ggClOiqYMGTUwkyW7mygpAlYiTnjzE71WWRZ2AhiUOWyNS/xcnsyQfGxgeW9J9WWW+PgSg3GuD8yKcbuCaNoreBSsF5qlQmVzCNQzUQkCrKoLftdadk+hcNMlu6c1PEjRfnt7Ppck/pDOkm/FKvNJo3nup1XqSo6O6wSn8i7DcGWTPGYaH4NwUBvGfxoOkLHZ6K0a5mfCpgDkETWZZgvzlmv98z+3g8KP/YU4I2mcq5EI/g7aJE5JXtbZDbOMF/vZbBwkqIlVKnG5IGCMj8HewBRa5KRUPYhUNbqGFEXkEGLSzv37dq0tb16Yr47l0rGhYFbjBZsG7MzBmFZXadlBKNZh24iNvlivW8Y60AU/IqKvPM/PMNKBg6n8UC8s/taBlrsxp1CJMaJRl7mQ6DQOrzTBhx+8Vl3b6WE37w1M3bklN5xPMU9IGfnwFWZ0ohSpjLWHD6QizD2t7L9MHsJjH82wGNiFQpYphLq0Ume9kjfd0oiHR6UTkwFzaYtCUv7pQnnOrceS+aw6Fq20wHHVW91vpLJa1Ii53TEIZYiVp2nCjxfBNtXR3o5/aoSIZCcaTg6krSJWudVO6Pr7OauIVWvdMMETVmebM6PTWSsv6oCMXmTXLJUdOWIXreh8ZfHoyqqIuqTquCTCbeZxm+lEVhYBd9+H8HrHm3a3F7X3vcdKdPvV935ADipyMDYuv/51Gys5Afaw6KeEJ/0WOYtiaBzd1fGEDECr4/k4tSB70mnxW+9du+B3Cs0DlzKsv9ylDOsXXsogug4qw5kkfGUkJcoiKTkUCVmpYqu/j4d3dXphtfA0cRGFl8Gl0C0h2IzuU9W4Z623e0eXyFkwU6A7MkTASc3tcrnlfC5Mcfe/O6WgO/vJfnLuiXN19FOgQRC10L1nfDKx4GrSOhuE+z0VVn/fIUth4k63Kcc5FHDZYBapt+jCed/g/Pr62cr0yHDGEo5+M5nTxUwjdrZ8INofyMFw0HbNeZVdIt81Gi/rlsSMTamyzM8t4+Abty94eSv8ae5c5AXZKoXwFy++GA6ps//m11xoeGomEN73wAvamzKKQpeIXdtbhB/Pg17MoqMdP2gcadaKPChTUK8X1KrvCTI5qY/Bwp9IfPdyIlbhrzdmiCxUtblpr1Xl9OFRXMHibDQAlFesdFrG14dD3BLh5/2qFtWzMS/pLDCTcYko5ISCFAtCeebceYO4PcpMm7no+3cfUIkZkLCO9+9jEXnT3Pnlzo98bFbP+cGSghH1KNJ78U1367yG2AKqfPV/XR28daEMX7wODvaJToDNX4X4OrB1gXdGoPnaSCrsYqTXCRTm7QPooMIzKf413nJk1ykvHOcZhY5enCnNlKbBOHJvJ+DNBkPF2XChkbrYmNU/JPjz5blbb4nSueu3rbCenQI51CqTCVDFlx+RI6NjAg4/cNmauq/dUd7/HpsA7/+AnM7FUn1TdsEA/mO/zjv1o31bjr8NvHpVx+tSuLC1KkHap1OgJ3/+gUpv7SIzhrhyRcTQ+/koOdgr8p6dGZ0dydlVL6c/o9cx9jvY+qaz4yHv1OaJVjgtvbKxx6ftTZpJfdQdTM68sr236n2Zcy8QBphRR+nB7jf/ed1viVjQUGSkY93qfuMWxlKwcqNKrdpTxD7miQO/uPE2Y1x7+t3EFS7GF30utz88Vgn73fqzr75XxUN/++wvC+WxsHcqtTbX9oXDvrb1LK1zC0QHGc6C9/n3nVCIHyEoFgjjhpfxZJdkV+JTKoBAIDU4IyJQIJddeFKuTwFReh3ixTjOCv8aX+vEaxdZmRZlu/5Cnl+82MpO7uXmgWTr1iKOEKN5iFJGyrlqvhqPmhHDBwKWxQCbRBR4oUL0zqPwKZpTwqYdD5bwlq21vvCPjcthpm3dASh6e3n0jxLzxRGWKEzFzJI+dvSoY54uBxFgKQCc07NveDot4zcMvSDHhou7tu4S8dUC/megbwk1+O0shgpGfHICIqiMaG5nAlnbUNDJHvDtBcjOcrncKNeHh2dKBZ4+sCPFNO6nnw3/4JE661XQvnml3aySfPExoktbplyGOlWR++EOyLLaWq6OXPsP+0KhiWrJ40uGn/2egSc0t53A6v777rcdOT5+nTIWnMSL7jevlkcq3wr4PZbNxcdhXwX0to4vFASCywQVogPpxRBvwwC8e6IHdL29k5cXzhnUUfchZ85SiYH5C6f6SGb9zHRoLGeXTRzNFxcgtKxTWDy27ktCS46MiEBfCXZK2E2ZS3O1dlp6LSIAW6+TCVd6XMbKtQzTmRH5lpsG7T+P/d4KeryENnVmeE9DFIMZ38FbMIiETvT1mqfenfAPo4VNzXo66fOgJbzES3rtmjhS0utvt27d6ScDrPaDlDKQkOzl5H6wVKL75KktpZH9db1VV4lIDHjT7UoqnmU52VQNxau52erJyOih3dbdOkzKLl02lnBjA7x+A34VqyZVrEyBHgv7InEXlTHvpJNlRaruuT8ij6gyv06H5Qt83yHY9ymyC82hY2dCbp667cWM/IC2pPBTsQc54hZn9NghqzuQn2Lm85Sn6gmS+SHv/ux6JwxSBUFJNh01Da9LRXN4TrWOcDftikKzPdB2Nxjo8fKY6BIDyOYldsvKPN4cA64obsUfwODTR4e5CkxNq4ahTgMWc/tKKZekahqlGohQfVKR8B3hqE92M9po2B6/VrPivev/VdLvplFw18W0OPZanG6m/9XtQg4a514A3/Y1VEPv7rgrGQ8AdglbWCxi3RlmQ3V0CIOW2GiMQ1rTmuLy4RW9Kod6Z57yzjQ6eOH04IwxOGNXjYeLiVjApzJUw5NcxHgzS1Ph939YmL5fV7SOPJHGec1PefxHsTBWW8cWV1wSJ151XOAASR0NKw0/Py4Y4JbEtiljgahP20RGJ0J/+X4brP3rT2hu4p11vfVhJ4cCQD/ACyuIJ8v+Bug1iradiTr1xbRTa/GvbTi3xMcIOjlYf7HeWndkzK4VBrPUvJ/LabqzQBPz4d7VPlUaczOpWJbCbryuj2ZklymP+P0eRubTad2UFhYlU/e4C8Uofkzx8KbvEO7+l/ybrneHwSoCqtO+fuSoqEOGh0fuuGu/XTv6JuxlAV3VcQGiCRDZKj8m++XH8zG4NYzIyfOqkvaIwN+iLLmANg1PL7adsiQZqEoKfl68KslTJA4tGlYVqk4+F8Q3UleYzW8GvM2GEuBSU0OSarKRURZ20RtDNFOREtqKuiDptZhkatJaqUxcQ1IRf83lZ91Xs5CoKLqP3Djj8lTvuZpZ9ViGH5LBXBKW7v4q9w9aHIbU7rP49x6RAOBa9ME/BPp00GUdrT0xpEl98ojGyvOJIwYHgpOB9xZhtGZ9tDQxJQF4L4Z4XCJ6crzUOt1hH5okZac6yQWBlyX7NUkWFokS/MNUaULVfMUxQjSXRympimuqRn0Y77kEnhDkjU6m4x6ij8S2Y8XVnjCkdwwPX0aoaVIamlmm1OMP6wu6wq/tAMGWrj+O8ZVXS5T5GMQwvlbmOJWY7paVJ/BU7VoqW7m3c3Uh+y20vaONxg0i4R49Ag64wqKvD/SEN63xQXHtRW9wvcPvn2mhxszIKD+dx3flteqqViTatBpm+VlGO0nqVCZD4VrvNgz8dHDXPhy6ZNIf2ya74PdTpXJY07WrrjLo6Kgc1v2VIpjqloeCGJRADALSz7u0vqpLvqt4xc3jCqfc+cS3v6d6NJ6zMYZuP1Jm2N38WJmJajPfbxp+fBb2O4wOWJsMb6iZ9IqO9vWK9gG8YxvqkReMCo9/prG9LOp2uJcLHuiQJ2HnpFh/Erv/zGMyg6p+infKiuJm+Mef9sRDMfkTH5djMvHtwHcT5kpqmpfxu+dc0bBCuj/AJBgrKISoxbBGgkec/tqn8VfxAcA/Y50RxG8m2w9ugYpmDnGO9RA8sCSObRZQoTCcLwgQx9W4d2pFsSvC4pSvpbAiAYy/yPBizetNFxNeMPRM3B5F2Nz4UMRMWEP4gMpal1A1ERp1MX6JlEK91c2qFgmNairH9QfJXvx1chaFUQW1zhhOHsXWMJ7+EE0q2NIw5z2/YuBMZdOwXQ/l/fkhy4ZalWsgo9m3tPZJ9jw/DyvXpiIQuvunRvyKBiiIfUP3SZMTzIBQWFIVY2TS7yaniceH/bIZ5HcIME2alHxjkQgT/iIYYarCjxiERFzyBInhT4iYPommexHihvZNcdfY+YP8trEzhXJpj1PRjQxWcpuNiJ0GheF/m52mHqkWH96j5hrp4c8kM+lUIpsn70lgb3BswQc/x2O1Sa/PHPIJnn+fRPFXxXmuSds38dE7RNKbE7L/ltNRXHE0hMIrvD3A7gC3kYl1Rr7Gz87iLyoYv4/iXAJ4LLE9/HpHvEzOaPzQ0UOY32pKZFm7m9+lwz/+Lec6eOHcT4EuQdFW74RBw3WezegxR2SB+VnV0luukmkuT9kCxbRRl+jj7G2i25Y+KnJhkpM/AR0NoK0D+ZOknT/xO/mTfkqlf/Sn946nVP5FORX8iYvk/7CV/4NnKaK69Qh+p34iIE4Mi7uybAjgDK2fjlfO6z0ayMsJWvNiWsvO3t16firOrTEms2Razqg8VYe/cn7qLRvXsRSghjrHM3Po/7Ca+s34l/As74AYHkIkXfQY8MYdCjSi9IaVleyS1VbAG1MjtTmc5mXFeu9YQq874+awKbs0sHRjve+k7FWYNFuEXA8W6I1uXCjCl8JXyOr9/ALGBxiXn51kEv8N+QPwz8OdoscFcsxv5OI7R/yONivXitFucfeXt2npAz9Cnod922fI8b/j57ufuuUKIqQSf578Ab+yhkIcAs5IHCdDl5Jh/F1Bc1v/7N65w8KUoX4z3WGnme5MoVTKWpsXWuFY2IZVBrYk5NJyBByYP7hzLejHmjtU2VNe21XcQ95W1jRe5+elfk0rrpq6bgod3Eb2oZ+JPH37dAgP3HgmlEGYA2SZA/utz7nxLIaG0qJbKKWEIv0su4W+v0kUwgQeoCxwc5Cfa/PLTXIW83BDlpiiyQHNzxQfi4RlHy+kgxr8N7CTf/8/ayfxK9pJrPyLDCX4RlIQdrKAVpxufUl4w2t45+NB7iepMJgXGffZZyH/t3hNcuYVvSan562g11+BZ4+gcbRgw3UiDjPyBnKbsxtGBHMDJoiGOW5WMmn41dAQc2w+vxmy7Nw/3Ieg543Wsc7KI4TkC1TmIoDBwy//5sIh2IDENm/lbQWUuaeNvMb9xMXG+meAHkMpxB6LUTwpDLODkMTh+Y0Ns/wQAH6dlScKhGh1aO9oqXcU7I/65wW9Oibd57vPD9Rt0CaE6AFxJqyK1NPwqZhMVrCTeEVmSMmPEjYqlXgtAQJ61GyZ7RpRQtZx7DJ+rbxtNqL7dH5GKuDWR1rL2/ZesnfbcmtEdwcINn0QAnww/PhjePbymGgNVQz5pXd5wvzi77BObiNDb6TdPxgHOj345KJ1N/LCuZ/RKPkGUpAJT+U6W4h6wb5ToIM/mzHgv+LAZUhc1u0rBDakiUE3F/BN+ET3nd1H8a13HB5r3LG/kTbMQ5L0bO/w5V3WK7wP3919uPuHB9/4hj9c2VVNjM3e/Mgj+LCIfkcrzoGXyqhoDsNoBAjHzz6NAX/8GPiD27OU13HFWXb7+BtvQBX9pwPoIQBYVtHduVQugqMu+oTGjEqTDrmk8T0u1ljRiVfWJwtepj1BXeQ0J5Dy0jt1r4BXYeW92NyvzX72pYjsBXsjK16d3KLwY1NVeJ6Pk08CZm+jy4Fea9PjWQMBvUDfxJmHnFMTHGi7VkYxkzdeKGff6d5uUW5Vzjvlmy1aVzO0W+SO8Lc634xobhmHKeGtgDiB4/2Tq90o/e53HBJ/52NT/FJjELfI0/nM9yKap3f0t/sfu/9JXNwAUgoKg1WDlUo2uCgUWYDhB8TrfEHcHiRTpo0XA92fwlImVli3OBRL/JBa/0zVYygDfPFu0Btj8GRYdqPmkJL8Moc6/8hBOl/uPt072hXCwe7Pu88O5hN5v+Z/EPeRscfyPvjeYuEC2ongtukQePBIMPAhX7SQH96Mt0Z1P+tR6N92vxmn5NV3NhZvh1n+sEcdOjPD3X37X6mhlfuso9FZ8URKQmPy7z1MZlbucWmFxIazwvSbmk+P77XioAVQtCj5OtoCz1xVOK3sSwdtIMZDTWGmrdsH8iX71qKNtasmROvNXjlGOeDTy1Pr3qh/az7gJjQwHB4vzE2WW7rvSAzjVDhq5K0Gd9G7z8tW09TllbMEx4iqeIPNckMnvu25OvGtjUaCZmhlNOhVvOFgyMif8n7pCZvo3zhxBDON3u0Bsx4Ney2bYfNgFm1De0EHdq5tmstym4EHEo8p3ONJzovP6zSB/Tk+vcYvmARB9/eu+uLpmVLZ4FkZfg/HlWRqgjOC8ozoPfOzs/P3EEXClO9tapJfr0hcMD4zA+MucALAPCkwkg9GJlT8XaM8xm8H1kDDuUSVSoDJO4tHDi91vBiXSvYmy8N8uHPN0QU+PDwc6A7hMcW/eX4xX+ToNODTu9/2TFS1FVfbkkEag/3vBX4umdwm9S9csf7ND+7WzkVZ8tjqsz1iueXBXKPpJB6AIH9t5hMxlV/4yBLvdZVYb7++LyfA1TGqcotAlMDUrDvvArAre8cM+B9EEUAwnohkm3xg+RX3hERO+pJZDXvNHYu5j45KSrls73x4hOS/lJ7ZbnrBJMg+H78RIDCd2beW2JX2/uQndp7yv/yEJq6Oru3LLPO+UTQF/P8p+Iw9sP+Sl+/fzr87p0zKjvkCuszh3t9eke1d7caUCy/YdDCeVWN66/o+zVUpebwx+d67efJMDsIjDxuXhhpF7wzN4LG3X9aYTYen28alxrAUdC7cvPduQyURPd1QyF5yate+Qn70qn3VyUqW0yOcFneo4dLyZHj/paHgdyZTN26Znx/dvj274f5NLws0FjMrt7Zc2cvXLB1G6HlSxKuv1JNr/JaeXJzY2JTrfK60Bp/rvdjnNnPO52bsA5cZ/qGSV47F5Jf+6aXf2B9KlBzvbOZxzh78OXFHeQQtdzwgzCgU5Mf4eqeHvMi6Pf5q1A8HegMCpvFwNYIiQybPHgbLzQ09C+IqJ6bsZ+Byezc1AcST8OfYg+1273YmiT4IEc7/VXemE/QI/hxRbVx7sBMoegHCVkajQ5yEap+EAdA+RWZc+a6mTlR1/qAgZdhGvOPD5XTKIqr68kStX3z47RfQ+obfifoX48f///e7cBpwBfslv45V/P0+svX3+0w16+Es/Hccjx3n/9jrxi62rs7XWf9YOoxgFV/HHgO1tdbwuf8BMRqSaQAAAHjapVTdShtBFD4bY2pDtQrSQi/sFEpJINlkozdGEaISGgyKRsSbVsbNxF1NdsPOJNGLPkIvS0tfpi/Rmz5BX6Pfzo5oxGqtGbLzzZlzvvPNmR8iemHNkEXJr0nfDbboufXE4BSlrTcGT9Bbq29wmuatHwZP0uvUvMEZmk99NHjaqqR/GTxDrzLrBs/S88wng+confkKZiv9FKNvOkuMLVqg3wanaMp6afAEvbfeGZymnPXF4Elas34anKFcasng6VQ7JQ2eoaXMM4NnaSHzweA5msp8pg0KqU8XFJFPJ+SRIkY5cimPvkJltGUqauTgz2iTBEntG2DUgqcPS4BeUAGWhsY2Ze9ldmgJaAszXHPVMMepDZ4eomgj7F9E/omnWM7Ns0q5vFyslJ0y2xTSPwlYy/VF4IoCawSunb3p7CyxLY8HrObytuiBbQvU+6A+pCOIjhNK9EKL62Ca74vDoxYPZEtEPgzrEN+FGFoPu/jWMQywgriPsBqh12DrilT1Ku6iL17R1cNA1cPoRLCKXWZVdiNxMUn3z3S3hx9o13iXQl1ZB0odWgFSaB0QDtCHqLyvVxXvy1B7LWJ36EBE0g8D5tjOClOqwwcq9PwAtR069mL+0fIeduQKDzh0Mc8qjXSzcYw4uD06RX+OcbJ1a8jz2MM5nufMePExn+v5Csg4QqZYDaM9vZq4XEN827BcHi9G22Do6eN1d5HjC5bFfLyFcoyhBdQBGiEm0kyJRxe9q6smTdYBcFszMq1M6OgGnkRGO6iO0Cu/Ym6OMcR1v/2g2WPKxvMyqBri78PO6Rjf2HZVG64z1mhXY4XLldW7o6CnSiU0Cba4Bn3YJHJJzXVZ7RKU16H0b89H4db3g+VWR6OR3ePKO+XnNu7nWv6+N8XEnMHEE0sSV8iOfOWxPSFFNBRtFt94ts174uZdt7PZfc+XiUMr7KgRjwSDoeu7IpAIHQRtETHlCdZqNNlOXwSJczNxKLBrN9VOyEws40Pud/lxVzCthrN6bZdxVc16SvWrpZJ0I7+vpC39biy7tFNHzf6r0HcRPu7V/QN8pYF9eNptzckuQ2EAxfH/d9vb27k1zyLmWbWomqJ0MBSlLTUtrhC9iZakbG265hVsrY2PgpjiSajq0klOfquTg0Qh3znc/JfzfAUSOvTIGFAwYsKMBSs27DhwUkIpZZRTQSVVVFNDLXXU00AjTTTTQitttNNBJ11000MvffQzgIvB/K+HIYYZwcsoPsYYZ4JJppjGzwwBgoQIM8c8CywSYYllVoiyyhox4iRYZ4Mkm2yxzQ67qELikhwXfPAkdDzzJfS88sY7L3wKmWthEIowCpMwC4uwChtX3HDLA4/ccS/swiGcyllGc7n8roJuj/fPWZ8cVtNpVY6nDk5VQ0RN7+2rUlKTopoc0w7TqpI4yWpHxxldNKXpolntdxYMhQJFg0VDPxndPugAAAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKxE=
d09GRgABAAAAAEbQAA8AAAAAekwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABGtAAAABwAAAAcac8AME9TLzIAAAHMAAAAUwAAAGBFtFktY21hcAAAA4gAAAFUAAACGhVCsmVjdnQgAAALBAAAACsAAAA6ApAPtGZwZ20AAATcAAAFpwAAC5fYFNvwZ2FzcAAARqwAAAAIAAAACAAAABBnbHlmAAAMMAAANioAAF2AfEugvGhlYWQAAAFYAAAAMwAAADYQOZkDaGhlYQAAAYwAAAAgAAAAJAcfArJobXR4AAACIAAAAWgAAAH8AgIu/WxvY2EAAAswAAABAAAAAQBXMG7ubWF4cAAAAawAAAAgAAAAIAGJAZZuYW1lAABCXAAAAyEAAAfIr+XhxHBvc3QAAEWAAAABKgAAAY8w8ZF6cHJlcAAACoQAAAB+AAAAipKM/Mp42mNgZGBgAOLdhjnJ8fw2XxnkmV8ARRiuzdAWhdH/F/xnYzFhesfAxMABxEAAAEK6C5sAeNpjYGRgYHr3n40hivnF/wX/XVhMGIAiKKAeAKLfBtYAAQAAAH8AeAAFAAAAAAACACIAMgB3AAAAawDqAAAAAHjaY2BinM44gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjAwMii8/8+s8N+CIYrpHcMvBQaG/jhmoO49TNuAShQYGAE1FRJwAHjaPZExSEJRFIb/cx41VAQ1NIQE1pRIg4HWUOIQZuaYPiQCqaFIGqvBEBJbGxtsyKEhRBCChhCnoMmhILAtC6KmlkeDi/33KT343n/vef+575xz0UEAfCTBV4caxoE4KFoRpKgL1Gv9RVQm0JAidokyfmkNIctYmHnz1DRjg8TuEzC5ZLm/3iLnJOFi/MzlGba0UNUSjomHpDWPnD7D1g0kdZGUcKIPSNKfondO7/htCilrH5uM2/qGQ+b09IzqR1BvWHMNBeaWrRrK1FFyodsIiRez4u22WUfDra2NJR1AXOqIU2PUqATcekfMHj9Yk+HulXxj3aytScRcn4MV6jRZlSQ9eczIHjLcp6WJrFY4nybE5RYe+h/d+Tr4UMgY/5P5P7tXyyu5F0eC1E/SYs9P+i6nJpe8uH1H4OPcjtiLmZfPzIbzCjFWpeaoFarf9GZ9sT9zbwZHxs29ap01+HnXO8Af/kp6t3jaY2BgYGaAYBkGRiDJwCgC5DGC+SwMP4C0FYMCkCXFYM1gyxDNEM9QxVDHsIBhBcMGhh2MhkzmTMeZTjPdYrrLPIV5BvNs5nnMC5gXMy9jXqkgoiCpIPv+////QDMUgHrtGWIZEtH0HmM6yXSD6Q7zZCS9S5lXKAgrSCjIvP8L1Pz4/6P/D/8/+H///53/u/9v+b/2/7L/ev80/87+O+tv39/ePzf+XP1z+c/FPxf+nPtz9s+ZB8kPEh7ECdRD/EIuYGRjgBvAyAQkmNAVAIOMhZWNnYOTi5uHl49fQFBIWERUTFxCUkpaRlaOQZ5BQVFJWUVVTV1DU0tbR1dP38DQyNjE1MzcwtLK2obB1s6ewcHRydnF1c3dw9PL28fXzz8gMCg4JDQsPCISaEEUYUfGIpgx6HKlyJxoMFlWXlVdUUnAzPjETIa09Iy4LIYkACW1axt42q1W+XPTRhSWfCROQo6Sgxb1WLFxmtork1IIBkwIkmUX3MO5WglKK8VOeh/QMsPf4L/mybQz9Df+tH5vZZtAknaGaSaj9+3up333k8lQgoy9wA+FaD0zZrZaNLZzL6DLFq2G0aHo7QWUKcZ/F4yC0enIfcu2yQjJ8GS9b5iGF7kOmYpEdOhQRomuoOdtyq3c66+ak57f8bfvB7a0rV4gqN0ObNoMLUFVRtUwFElKiru0iq3BStAan68x83k7EDCiFwuabAcRdgSfTTJaZ7QeWVEYhhaZ5TCUZLSDgzB0KKsE7skVYxiU99oB5aVLY9KF+SGZkUM5JWGX6Cb5fVfwSaqcnzj3O5Qt2dj3RE/0cHeyli/Cra0galvxdhjIEKebOwGOLHZqoNmhvKJxr9w3MmloxrCUrkSIpRtTZv+QzA7up3zJoXEl2Mgpr/MsZ+wLvoE2o5ApUV0bWVD98SnD892SPQr2hHo5+JPpLWYZJnjwOBJ+T8acCB0pw+JokrBg5NBKyhZlXE9VTJ3yOi3jLcN64drRl84o7VB/ajLrB7Yl7bBkOzStkkzGp25cd2hGgSgEnfHu8usA0g1pmlfbWE1j5dAsrpnTIRGIQAd6acaLRC8SNIOgOTSnWrtBkuvWw2WaPpBPHHpDtbaC1k66adnYn9f7Z1VizHp7QTI7i/zFLs2WuUhRum5yhh/TeJC5hExki+0g4eDBW7eH9LLaki3x2hBb6Tm/gtrnnRCeNGF/E7svp+qUBCaGMS8RLY+Mjb5pmjpX88pIjIy/G9CsdIVPUyjKSSiOXBFB/V9zc6YxY7huL0rOjpXpcdm6gDAtwLf5skOLKjFZLiHOLM+pJMvyTZXkWL6lkjzL8yoZY2mpZJzl2yopsHxHJRMsP1CiQuYDh0oaPHSorMEjh95VBk2XX8PG92Dju7hbwEaWNmxkeQE2spSwkeUybGRZhI0sV2Ajy/dhI8tV2MhSKVHTpeYoqJ2LhMcmeDodaB/F9VZR5JTJQSddRBE3xSmZkHFV8hj7VwZKyaG1UXrMJbpYSvLmoh9gDLGDHx6NzPHjS0pc0fZ+BJ7pH1eCDjtROe8bS38a/FffkNXkkrkIjy7Dfxh8sr0o7Ljq0BVVOVdzaP2/qCjCDuhXkRJjqSgqosnNi1De6fWasoluDzDWMRbR0eumubgA/VVMmSU0CP41hSa88kGvIoWo9XDXtRfHopLeQTncCZagiPt9cyt4mhFZYT3NrGTPhy7PwAKmqdRs2UD3ea+2UsRzKB32GS/qSsp6cRfHGS+2gCOeQa++E8MkDGbZQA4lNDTgF4TWgvtOUCLTaZdDgyP2eRRU/tituJE9Kmoj8GynU+6FLqT8OsdAYCe/MoiBrCE0N/Q2FdA8QjRkk5Vxtmo6ZOzAIKLGblARNXwb2eLBpmBbhiEfK2J15+jXN03USRU8yIzkMr45sMAbpibiz/OrLg5TuaGkqHDUGhjMtbCSVMwFNOCt0Xb76Pbmy+wTObcVVcsnXuoqulbuQTEXC6w9zkFaKlQB1RtV2DC6XFwSpV5Bk6TX1TE0MMNfoxSb/1f1sfk8X2oSI+RIvu1wYKPPwRj632D/bTkIwMCPkctNuLyYNie+7ujD+QpdRi9+fMr+Hcxcc2GergDfVXQVosVR8xFX0cCnbBinTxSXI7UAP1V9zBmAzwBMBp+rvql32gB6Z4s5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZgPeUEbQN9qdAvoO11PWGxi8b2iGyP2D7zQ7B81YvZPGjH1Z0W1EfUXXmjqrxox9TeNmPpQ0c0R9REvNPV3jZj6h0ZMfayeTuQywx9PbpkKB5Rdbj8ZflOcfwArcU1jAHjaY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZ2Jw2STAyaIEYm7k5GDkgLFE2MIvdaRczAwMjAyeQzeG0i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5uVg5NHawfi/dQNL70YmoD7WFBcAd1kkywAAeNpjYMAAsUDoy+DLtJmBgWkb43EGhv8mTKJA9pn/r4D8M/+/QvgA1AcMTgAAAAAWABYAFgAWAFwArAGIAjYC4gPWBAYENgRqBOwFQAV2BZoFwAXyBogHBAeUCFgIuAliCjQKdgtKC/YMRgyoDOINZA4oDoQPLg+oEBoQkhD4EXQRzBH6ElISrhLoE2oTxBRKFMIVnhYmFsAXEhd6F8IYMhiUGOQZMBloGZ4ZyBnuGsIbdhvUHGgcyB1qHlwevB8WH6QgCiA4IOYhUiGeIj4iuCMeI4YkFiR4JL4lQCWiJhImaia0JrQnACdQJ4AnpCfuKBgoRChoKIYopijcKRIpYim8Ke4qECpCKqAq1CsYK0IrfivKLEIsti0gLUYtbi2qLdouOi6KLp4usi7AeNrVvAmYXFd9J3r/5+61b7f2fV+6u7r23rvUkrrVu9RaW1JLbm2WbMmLDBgPBttsMYxtjG1CBnDATsw4AWMzsuRgMmyZF3iBwJCV5AXeJBDIFxLeCwTPhKDS/M+5VdXVLcnwvvnyvm+kT62ue07de85//f2XcznClTmO+wrROJ6TOeWyJABHBgsVe8WeqdgT5V89VS4T7eoPy/BpjnB3cBycJFc4I+fidsy/FN99qOnl8AsckLvwNtZ5jhB+leN5C78QuMmQnV9YvRKvJmOC5C04G5WyJlkhEa/V+XqjWtZkLfHNwVLJHxvJZNy7XHBCOwGfuQoXH8F/rT9dA0KOEbwf4d4Ffw7fwrVoXIGLNIMiEI7cwwOu8IgAAFZuIZcs55IlSfLjY6oFqFUnAZ8mW8AKFpAT8Um40dV3DVktRrVUIiASg7li8nm/dN0V+NZbgPADRZAln7Go7dNgy2dc38FrE/xeXN8x7jz30OUmyCrMzb9UQpKlDQqRbRYjL4mydMpsNfGiQJBQIrfOqap1nsflOwAJmMbfOLjn9aerC6vN6PHjHHf8/PHbTp/A5x07enjvnoW5uVrNlU42ki67FCqk3JpLTsiSLCXimXRtAtjmu5/rk5DA/6qNSoMNsYvVRr0yCciVesUtS8QK7FO9UsZPVvCUPfSelGZWyFiIaxTa3+V9Nttr8/O8aDALPOxKJtbWup9mdh04aLZ+IaVoonjX3bzJIN13/8I8MQkuII8ArK3NzBPZrJqA37nrwD7JIAqOvbdk0v8B0um1Nfato7+tGlXj00/zslGQpA/umoX27+IHPgCqwSwv2QsGAyGS2SgR+MjThBclm9z6NvDw5NPEblaV9z8FRDKpIorJ7t0fI0tLRP8KihVqwdC1r5Aa+RG3yK1yp7hqsxRAHkRRuo6tHVicmykkFZ7wcxz+uIfKNw/kJJVvbmF8JJtJ9QuSu9CYILV0ZgBli5JrBChZqIwh1VwedwSorKUz6UTGCu42Ea2EXnShHkzg1xI4mpmAhsftcTYok1w4r1b3VNMZuTxB6fw9EvDwQrm5NhtQUFx4IqSSqGDENFo0glG0JLJeo+j1eINTxHJ+l0HA3UMqCapYzSS8kksylqfvJ4ZBrzHgFMmxoLsIBhMfS0+b33IBb2deHtn5QMAgGoweMOIfIGpSISFLMmFS4MIdgr3/aMC4cJ+deETKVAI5ILJm81oaZsOgkYQlwVX0lbMKIeTPQkX5O6JMtB2cyD137St8EWnr5BLcMLeHu4WbaI5mkbYwR3Wa55CWPEo2DydxtqyI8klOEQTlIKcowhEJBEVYrvvzhYFMNhtTUawBpZFRsCPIKLMelF76WXO5K2UkVQrFl87g2JQqm9Pg+J5vsgHKLpzNvm0BDcWZfhk86WjMV6rUpkxSLJhXvC/GvC6HxWB2WSzeODwtSg6eXH2OSKpVJC8vlaH0cCxZDPkNruFEVrF5LNGUZBx/MCaRaH+MN1q8MfLHfltm9/ribiPxZxZCibvGpiOByaI3HDT71r7AE4cokasCka1IVvl7J5rwUOuIpy87FM7vH0qYUDnmBr3h4VMnZkB961jD4j2KFJu59vfkh+Rr3A7uMFqb32paTxyrhOxGCcQ+vAtBuxNGu+PjRJE7Igso6Nq8hGwmR5B3xE0WArot97AxETjx5Nbh/psN+3C4Gdo0Qggc7E4Asry6utp0cdy5MzPTuMIdgwOFXDzqUCRNZ18YXFQzwoC/eVBhah53hV1BmUcG1iv4K2WQzuEM5R6aq0x6HCi/2vxGM4QM97jcmseFEyaAT6M1bl91V/ArVfiMqIacoZg98bAT0OAPmO/fbUgmwbftyBDvDcTLYwoRRGWmujDnWj96NikR0TrgGu5DU2LZW7fV+hTel1OMuDH7sF+z3TERkEOpqAI12TGYy5GvgtE8vpKcXTPzDUtk2bz6jIMYDWLhTQdKktFs5Z3unHVILa7aAwFteMCZCluMWXcgtHyvU354HKRiNDfkVHkDzwvmfMiTao3tXrG7fNmEaG+agTdbBLQ2n0Oft8x8nq/p5qjD46i/49rursRLnpv4us+1fRgQ9GGmivkGPgzvf/aaBD9E/XRz9qYF78xdxFufy8UIGjVAV41sIZSikba3QLLCB0yplPXsewLmFX7BcDhSfVORfM9AzIdb339xafbF20XTGz599qE/ft8wvR3B+78b7+/ddP+Ik92/WoQKFYGuUiIsaNSddehbUhZUYiCLqfIpbzzuNi4IX9vhhm984jaDgTfz53/r3n9/5aFwMmZXhU/Bym14249AmQzhc2a5SnPQgfZ7Znggqok81wCBR+ONVy4SQMW5KAIv8Bc5QTiXK4xlCg6GFqpULNE6UFs8gXTEFVmBOT6NCSZdolSAOLXxRZCsBCWTksNC5PZvTEC/mHCIBsimwSn47VbNZr8gKxaXVVrMHZOjTkG2hVT0Z4KoCtao1RFNV+0Cb7DZbfJM/5pKbtEiQizGw5vB7LablbHxKd5ldVqllGtENjvjRp9sF4RgbEwN2a3yve6ogQAdl2PuYYmS9vy1F3iZzHBZLtdMcwIvXKTbvgc3jF5uP/7Hc4cZDZZ8buewk+2cc8mx7h7aGCFdbcRq9Ua9s38qUjFetrb+aEQSLYoxIlsF4YknbTYYIKEwT2yyOSzbBAFSIHmV1n8zm4yK9Fh8zuEE1a0S8v5HFatBMT0cW3Q66Donr72D+yZ3Aj1oRbdCNoSMQAWbHEHMaKH2ZfMlO1lYvZzQmLQ3dNCI/ElQDBM/TBFjJlUyW0NWK9Hh4uREMDFBFYWrcK/CAhJA5aLNEG4e4dVBAroKcahZnCxyKlF5yVVw1mIaxaXV+hQYFPld77JQw5aKk2049TDeja5Z4bL6mo309qt4PwvFbd1PdlhYfTleouLd6KBbtsIT7aXhvaRrEjmIsmrnws0AW1NXPrlzwBkNnB3sdEWeOBUsbhJ0BIbuLKChec0RSeIRMJGrf84LP3MRiee/SARiUpWfT/Iyx7DyIfQPKfJxLsANch/UnQFCVMIdwVHzPIJyZkPcQC19tHfQumWQ7tW54ap7h/pvNOQDFgd0ryJSOdge44E6htUrvnx/iYYCUEeP697Q/g2HjiY+3XXpHneZCWOtCvnBAb5vxu7mzfHs7sGGxb69UNTCjb4vuMNThUTIa7S7R0Zd+ZSZPObNJ/vnAoF7j9/fTBhIoXjr2C3v378979w++u4LI9mc3Z2O7bw8nd+BlD+EvPs9pFWMe7TjNpETGFicRKKY56niCKtoMCxCh1q9E6xbJ8TZBOTTxc6sTRNuNmYXFqjbVJ2xSuKgneomSPIYTBBq1+vULbLIiaJuOUGhYqUBC8OLBMmqSMTAu+PLo0YTPDA+bv3EJ4iRf2uFDDrxSapsFpMgmYpEvPpJMgumQdNPOKYbGAeSDO67xr3tilOhAcZcR1LaPsa8KbzrSErHAW0Z1CUFt0V0wmyEhdddpREhCkLijkKcCUIVuY2mtBOCbBIKC7jY/jVJ1mL1ScJkAb3Qf6kPRitZzQYOW2DpzbsOGYAYK/G1qMn0RFjanfqIjbTuFgR16m5PMnCrlcA/VIY8g8loLMKLmdvnp0Sn17G9kdnuVpU3EoAFmTjcmfqaPeA+uNei02cIdSiK9JnlXmiaQ24jL3DD/YQXOugqxAloTAX+rh5y8TwzWBsIK9CdhDQQKA02Tel/vSkMaUWvH0UqHmzP4XWwZWxONGqF3EhcZH4VyYmkyyAg0q24hxFU0iTdl3XCONS3IpTrNbeHAS+mY4i34rVGuc6AFnwuG8/vD8nIbIu6eFq2TOQcZi8os94obwi408SwODQ2eqEpQxBBjKu6WF02wLhSLNrEKVKYRtsfDsf6UipANKIuqxC0WKMZopCVCc1BRLO7UDObhk6FQnvUXcCLLmvfnknJsmyjAFYCZabPwmwZWnKiksc5P2ro8uUgjZDndOK6GaKQRAIC0LjsREfibjRAha5pCQQCsUDU6SiXMTb2oZF2UJSDsUwFfUoBdK8So7tPOZkBWhr6TqNePwRHbAP9dvsxRbW3WgACAdsycf2B94fT4JsmrRPIlFlY3p3sWxZFl5qCNwh7rkVA1zOUowKuf4L7cNPgAJHkQZBIewsJTkJAIAlMiFAF13HDGA+IJ9Ek8Edw2W6+Iye/cKqPbj1781loaQ625wo8yk3T4BwuZLPuKXQsBWfdUauOYhhE3X2COf0eBNANmChG8Ohhli4uiIqQTol3we5P/DbqhnzNKRgwOBUL1e174rE7t9nsB4aMTtkq+fnoukspN41yxGST3c5cfA84Ae6jFszoUpJH3AMmI+EDJ2anxsaWjWTIGBRAdcgxaR8x7hnPOKqoq7a67t+OIU2TqJsljC/+8rIdw+GO8Yqi4nS0sU0X7zyLgyRkh5vr2LHuPOvN51EGhbsx/81m9f+CWT6chUremSDiNZE73p3I7P5q0wlcc6JWSUTcLqPKlaAkMwSg47KGHjYhPnFlOp6RmsFyveyudBE0ZZOzJzZiwVSj/trSXCj4htmhesBjjSmKMT3Qn9+RN4nS5AJvM9jAH7fYBXsjtJL1P73bLpTmJKHf4pgc8FpV9x1Hbjlx9KlUUORNJJEAwRboOxnhBaGMOi3GE4U+n+fCtuSoIkDzGBhOT/jC8wF5R3Ipj9t937Wfkn0o9zHOQ6NB6gFw+wwiDPfF9MilHbIQHfzHdedPNyyjFZqAF5T/+g2qbIr/3XubQb5cskz9drikWOE/fpzGNWfyQLUtHXj4mQfeYgW1/P3PxwckxG0gSRrL7SyinORRTrLo5XZy32kaB1BUIioR+I4VD1PrKvLCyR65uV5arptlvZGsBLtM7sy+XlJuPofJSez6YYyzD3YmidxyR1q2bxseqpb78m4Xl4XshrQw94hmvP1715ui7LD8h6QLSSdfUpeZu0jQDAgTmNfmjzlDk84kL4E4Hxw4lExN7DXxtuSqSrzTM4NTv3a0OmWCwfzI/MRgnjdAY1d/YToXdR+d7cuMZ00WVGeS3lXsWwiZmhWrNR2ZTgpgGlgcuzVeIKml0bLkyOQW/ylXBGVtum9gskL1mfIpRp7jMtwI93zTYEarbaTwu+tqRXR7Ik/Vq4Nh24zYgKkBvC6IHCOZPnnTlP7Xm8Jga/T6UVzDwfYcwuBrU91VKKTSUQbQUHo7iah6o+1CUWprjZ4EU31TfspT1mfBvZaPOBPnDh9bKtqTcrSU2OVO+PARorh4KOd2B4zOqYWP7spGCh5/JAgWMZRy7yDP/f7UgY/eerDo7lNC/eG+aV5CJCBMuJ1LA9nC0e1znzjviY7sqaQrMji0WWYnMW4BP/wuy98f1smk0SCI0tC2BcD133jQrkM43ZtshnCvn9X/lKFUEkX6Y1nP6j8yCO4A/mu9vx0LERoLttcX4G7T1+en3umeTesQjnTRdf/rzLALLPZggxvL7Qytrr6S0HC9Irr9G6y3G1BuWXYntLxu9e0gE2Mt7u18EC5yFtTyeDOy8WiEaPvb9CL8otNTHWS0qseiHjfKTSxKdVTCaBs/xR7jYQLGBZNJaP1e60u8KW8h99tsV98Jd+EWggJLb/+1X8aImj7zBfzhJV/gUtwAd49OtxBexphrA46yUK4nMCm9/iRGvUB3vAPZe8OTV+IjhXycEpBhTBTyTLra9k4dF9RjxuvQEQV4NZ2fn1VAlOx+w1gjq751Me9Opc1SJmOx5bJjg62f6EHyRMRblNIpYjAJPrCeO96IulMzjTCYK9tHx/uSV3/eUw9687XXyO+RL3J1xACfv5wFWexggAEOBIqV79rIKeNHBRUbI2fqdLV5Fdq5BV8Xh//Cb1k3f6vZ1/0Cj6CLl05u/WLvdDQdPuCmto0O9xcyqXDQ7TIoPOGQRgY03alyo9ILs9o+XwdfelisI/l0x/8zc6KzgZlutNzw1P7xPVLiwpDqb5ZmDswVH17M9h3Y6/e8Z+541vSmRXcgFhEs7opTObN7ximdg0Aq5gulSqnpxI5tfjFRVUALv2vtLXfMnnYZTx9ZXTt8/3osd+JjXsnitEXAfmjPqUj02L2wkJ9w+s8MFSYSU5QPQfzxNpajDHOLlz1Ikw4+1zB2QQhOTrHEgoggTU+X3OA6TZzQDGHQj/dxJVJOCfFBpR6AijMMEdASlCwx9GIEajSIqWTSQeEr/8fZqjEkS+cJ8bT+LumM2fvhra7H/RcvkqQMh2F/6/n5z+YLvEP+oDwZHQ0CWdTq1wbA9SOKDdA2kt/BdYcxEp7m7p1/ycQUhOdEgRdPboKRzNBYun7+uknWTZNeb9zOUUlQC/O1kXSBORGEdTrCxr8M9DScFbenEwKjI9fBuKaDOQq5aYLXVal3ITiN2eCn40d44+xgeZv6oV81qGn73HveF7wQVX3F8yl5ac4jmnl+ajW5LR+WfK0vQxUOHFaGDtrVSHzSvLwMt6tLdc1U3O31GxA99fe9uBfJJ3oWNU86vTNyFeAO75jFQlRbPho1W0ut75LX0FuBUks6tUwwaqS5Kxrr3I86+XXUySK3fllsR2rhXr+iMb/SiVa2OB3rpsHNTqd9FZ1OPpeL6fmjSjkCbkl26UqxgXqRTmjdia453bz1rYeP75u3QpKIwtiBiG/lnS7pVKI4PF83EF70VaeHk6YDI0vF8p4geawSkuA4iihflNwfPhlJvm/Q7olK4HTnTX47MQ/vve+WY8e3efVcG/74IcqRk8txR3UpukGuzdLFKTfItbW14rrrVCtWr9RqebZhVAa3pysuCSYsgAEYzyqJlXZmhErEs3Mf+FXl+IX5gQ8dUi5+CsUBDkgrSyOWsKzs32/6d3NFK/Hm4CjyGOyPnX/owuw5hXEdTkPrH7c9ikgfiHbn9BmHf6p/mfL1AO7xJXIJcfS9HUSGjkIg/MkO75ieiKsIVC3ihp5smWTdNOn1xu0i0xPnxXQyNUX1hEbqVfTazMNkqLvuxA5xDUWA5og8NEV0gDwO3/suUQT+pRfB7Xn2GRY/PPNsCa4EDlrqNtLqI4R8Et0ISbpcGA3cdpYGEUoS4AeorbAokfZ+n8H9Rrgz+n697aWub9rvRsbvunFrZ/wmQ7pDrTm3p8piOxFRjbZ3ZyG0GolMjjHVdxWA7gp+hyi88Pzz4PU8+RRvJK1vRWWHIFSrvfsR7j5PwFQ1/Vp0v9NBmE6+FeOwv0SdHOaWOyBAQEQibCI7IeIRJLtPZCCAo54N9a4zb2MUeZJxNbK5nXrdZII0yrr3R6OMJrqrhqiFk6TdWcBqU5ql3XyACvnW6bsemSZOad9MBMlujO+saoYzT1rJLXuShQzBXVpGRhXlj6AGwsFtY6fe7TaA8cDHLu4SIWrljwFviASJ/fIdXuuxexRFVRO2nRjxRVO89C9g8NrPH8hwbZlFKHOFi3PbOorH43WeOyWAnrftKt5115k7UiuuhDu+Qneaqjtq9XhBRze6jdYkosUabGs0f5QgImyHkdt+IxGvVpkBvhXGYQYikVufgLMoWOMEnnm2bVp5aH0HBOHx9/FwdS9PdNt5EH+s4HrNvTUGZE1PjYF9YjUGt53WGAKdh7NFPTOHj6pWVUOaqrZ+a/pAvPcAxlce5utmOzWXNtu3REibr7OwyMx6euC43vSwunq5L2un0TswGnRQS7qm12b1Gi6iQrhv5BS8EWyHt1m0nSMpRbHTTA9Ep+7UEEw8DxZeuvodYWLFSLxWweXqx4gLSHmVn3tUz8nzNlxvhmu8kgp5eFok0RduJrTXZ572/TBf2/OZ+tYrqb60Ro1lA9eldZnFTIWe1EKGeUDCdSaKJC39A/STcpnxq1QWBZeiOgVx7e4/HG60vghHj/KNxtIyPPl/w18S0nGLbvfRTG7V7VlefxFa/w98/RsSfOpFeKDDQyLguh0bta0218jRjdpW7yVW2ypvZxTV2anVR0Hq4enbp/d9yMJ//esbfP11gJ2qzlp85lGk1TP4zBJ38pV+F5oaRisPPtyh04Yaoi7BusgMqI7ftYWaN7jOEMsrfRWfeztD/gTV2LWhBW6Pw6PVodEWxFrd6WjUZYQuICeKkM6QGozuLJqhOMCI/Ctg3o7RkjPy8BOwRiaaNMi3t1pDfQUBTNvIeutz354E0lWTfa1z844d8Mc1XZqRCX3Qh6E5CH2t6ePgtE7B4zO6vJAW0iDF1S474ZeXlkrQPcWwhER6pMXj8jgiQIWY7pDtC3EEyUADHuxs5AkI3mvkwZawNI8+AU/yfOyiTNbh6m/0rP7W1kLdLMLCx3ZAn74Bs+k++GifnsN8E+rkv5KvcV6M4e7bUqPT/q3LcFdy/fkm23m5nVt0bYk/nNU0ze62zXknmQg/5B1iMLH3lGC5e9/RYyvb+qtn6o/9dMeow2UqH08t7hgx2ybHz2XM5KugaO+/PeY7fXlovJJ60/SHf2V2tfU/Fs+YiTRZufC+3XeY+eLuj1S5Lob6T8i/AFegHtfEPCq6ICIA3dNGzsdCNjzulnFrZ/wmQ1TTVl8pD+3IsxzAZjQlJ2jmO9Q27yl97xR1M0z17Nxjjys7jwyFjg66T62Fg8zCwxcn6/LCbDC8vGw+m7XpcMq4umN2Z7JhFBFZvOchXRb+R6kuwcPvJUDsK/EO79/BeJ/gdnJ/3zT0gcj7gRNpvsuAe4uhFosif1bv+BAExlONpRxR29vZRCowcToRI427XndmnOW7N80ETkAlOrl5Xv8vnMdylKmbTOkkKnGiyO1meUrz9uZwPY/ofDYmob8Se+PbXsGzQph4aKCXyCDpq6P4m7uNZjvgviuE8KVscWWKyd18VxjfuCQLBs2guATxvoNjUKt5PDBgWrCR6THJ6ZJOf3RnU9LckqJYOrKoduTz1bIgaTmnNaeqr5KHAPr6SZ/l2DtMmeXbTeh7v/3Y8u1mNFNdOX0V5TSC1vbiZSsQlnMw6b1WHO0XXd9IUfLQC/uvm2DtTrjZGIP/TbWWjTuKMQpD2jLL0kcso+vwUMuU6MASqG6NF5+d+/ePqtuPmgjYZvsr1jcgXJxLPRmLVajPgz84a9674hUtAj9/yHMqYWzL8FRVycuzQzG7xLe+qsLXz3zowyw6EBacBN7onbJYiWCbo92+dbRh6yjHDe6RpkVCOJlG+5ICwvM3CPyuK46yAI/n4AZF0euGfKRt0dpXry+CqvlsIpaL035M1tAToQ5fi1PxYXGhx72l9NnoGLV2ED0Az/zGnUdmDarBCebG/m1rectoVXI653nTuV3ZwhsPq2l11z31nNfiH5GqTUuhBN858mRB8nlLYK4vl/IhxWbmRXP5qN0x/QaveVI+oc6Fbe54punnzQ7ZNc8wwnPor93kJU7jVnUaOQSaAeFWr7dxPSMb1m3rRWbXmiZKY84x5cRwwlNw1hvVHMZGCZ7Qsmat7hgH+TmzAIP4V1F+3mwiUIQH30ZumVGAzyZb32x9E2g76UGgAIB7B+svpPhr3+VYT8XVTgN9Bl74o5uKk1sGWPxuwRvxwN/ChiiKuJL15OztfDF1qxvhOu2fqmik0waSbndt/k7l1tNAll3ewkFPxEzKpaO3SO5k2H/o1gN3Gmll9//8R4TSMbDZ173yQCw7JP7w+3yrGd42kHBOry8Sh+ixmCnNn0GaR3A/Ia6gbwQ1u5emGx8ZHksO6PUpHoEjBThUanCNetpY5lHZUFj+arRRl+SKyQxSfOm/uosDa3d/vV6XlTDTomRf609OHAgbBcfk43A0BR/5fOvj0Nf3aR3r43qEKq6nyo1dqZB27wVdl0Wgloaqf3tlvRfo2pqG8mBfwRnwUTanXHKZ0onSU5dt9rvLCAldpukgSxfyMl4htOHOASkBbP0fH14Hs4MXol8aPfjCC2dskkKjXyInJt5eXS8DnCG+39kVIHL2Tli6R1Reae0bsRpW4d1vgtbHW88J8CdLvxEtDymi6F/4lda/nEV9fNomhFsv6vuzoJ18DfeX4BZfCdgN/EZziZlS2tzdXxum6eTvbrrnM5PuK1rOo+O0KqHegfZU0xYYujPqNkiCduVBgroVuOVFGBvPlcxa6gPpu8vf9cG6hzLpvpldozNvvyjJv70IdwLGamRl3Z/L/Wau/t995HL+mMdLnnhyas8TkvyZfWwPH0SZyeEevNyuKx6pzSNTR3a2aOrrytPq5XR6kAkUXbvDQ3nkcXE0mxmnnfiZD46Pye9Qgj9Ta5XWh2QSCpcrEAodJy8Ta+tvIhnwGwFat8viw+9FRPHe93ydra+BNP4cri/ITXRA/Q1bc250XT+TUU/sZaESV2MlwLjeQ+qyghEq9YpL1mK1+nb4nuKXj2VfUuWf/EQUf/Ljz5zeZ2/JpjopUXlJpwjv9ra+3/oBGHcQUsF15a5J8Fus53OjGrK+UQ05QqshywktzXJandiMmSqa9dAkisOrT507cIBlbvL5w4fzeduBAz+HH7cTNa3DrTWRkKaB0Lj92l/j89ZZjzl9HuJdhF7rtH4B+zndTgK3mEjEXUyAXAYMTKqNWqXuaOh9VGVYP32b+Enb/vCbw/kCMfIHDpB/JK1cy+Q3NMmjpP4omMsmXa4/R6xEQ5rbOI1FVxxrUkTj5o7rMTEy1s2S1RmElNQj1ypz5dJCxOKH3ZmFuGGCvLO8dy+UXDkyl46r46w/5DFSu/aXGPd7KauARZGdDsUp1orroU0q3bBrVP7Zv1jhZ/9CQJhPkRlWNnTpuHL82mvwF/CHiE62cT9oGoogiE4grNtEQwmJIDCWJUE+xerJVEa985wk6Y3dujC7WafJDabhhPlOJUTP3Xp+uTvGf9k73myWvXcWg5VGTzadT+XidkUKoq+r0Koqg5K0xwmD0Ia0uZLSqOhOntWs0nWeFb4b7OAFBQPPHdhJTHzQmS1B1ndYqYj1UbccTorqaGL2NpcoZmTnwW0igMGSj2SmzMRg7DvhCcCzBZDNk4OChf/984Qk/cRFlGra5woUjQHR57OV7GSAh6XWn3gD2bCYFQjYjRadT/PXfkoCzD6Wua9d7gdRgDaLAp0EIdNYG0Xy5Gin715nT2TrFNRzfV63nuX5xXeK/zJ3utEMe+8Mxg41k0nnMh2EStupXPVGF923Gzu1bk4jVe3UsJj3/8BcX/8YGAwLezU51QfGlR3zM4OyRIoDNOPRKBdDWiBiDYvu0sIJ6lpJ629R8sUMMRwYtipvPzhdkCEssUjLMDhkMAR2Pab2vUXXV6Qz/AS+xhVpT7SCEjXAjkd0QKm3t+CQH+5PMJNUpa2W6GEQn1BF3lxdoKdE6i5aXKD1Ghyb/9XTtqGRlGSzUgSfToQ1q6k6ZyQ1h8uwNGsS8Y+Fb+5aPq7Cb975SbPFK2Yy9AAPRHiBmNZ22CyzfjUjkWyW8BIE+b27RF1GZq+9RhZQRqJo6R+8jB5gq4xghEiXbtPZQzZFG5GtU3CQztvA0jeYYe+dQfnqT+czFb0ZdSPBU+twdKPFxOOuinr3yCRpK5rENAv+NLz6BKypIolOjGkijR+MzR2Le4al1j+VinZxIIkyYPWleAMZ222RSO7RdqInYCHEGQbnrbaASzq/Z19ekn5abICaVc6dJZLVA/LKdECn0wzy+FvI4zhX4EaaDXqMBuYwoKLBmR5QSbCF1cAV8pmU32sxSSIXpx1sCJKZ54t1kx00Yd0W3s4+PSzBjZgPdj2ukNY3+f6k6l5cAQWU0UmHtnxifPt5Qd5L+jI+XzHxF/C1Dyay1hgMTKikKMBOwoshhT+zcmTvYTc8kyla3GNURo/hjx+RL3JD3IcvF4EXO1AwiLxhzQvWeYqgedxGh5Ow0U10szl26NT8/RJtj6Nx08mN2e0ZLFUiYjh/smdSO/BEqJnMNRK+TJn2B4KLOmZNL/FTE8vsKj15MkmPCbIzau1eU+qpaE2SRqjoXd9qrVQhTU8+HBZFDaPOeEyR4zEenMjeUckWcgWJDdRQbDYgmiy1GnyWn8K1XMmtezyEeDzruSusER8M8n5h7ICMuk9gXgDeBGXj+CTr8zJdK5Mh+DK3wt3C3cs90dQ8RgRsMcSvpAS8fG4nURWhTdcCJ3O8IPO4ZZpto26GqZByxGggioJqoqqs3OGgxZBfMNveO3u16VlfX793/d677jh14vjawf3p7HjWnzXR8lVPI5+7li4CreePMo8lU3WxAlqantNpiGf1czftQjDzZh2Fy1Tpb6mN4j9aUZ41/dJPm7p532Y2WJq5RHx7lEe0NqgVEwoBU6Rgk80ggoOog6Vp2dWXRPtpdM+sON+UW3pHLlWckgFMwwqSGmLxiMftTybDxdHdyraSU7X7eHMtEBxcNQomx3/OuUPh7E6HLcKOfhGLoApC0m4n9DyYRJJRs6k5WMVlCejHnX68LW87UkstKMZKVLCYhfEsTjTYrfVXwnGjaVs2HJ9v/b+ouUpCUyS/WYy5VaPD5KJ6Mks7UliOd65p8NDQci4OMLNRVLXS+LrH3nWKqluuU+G+kkzX9SJyuzeLyvRGscBFDwtq7PATtXgO+Nhug6EYNYeDzCnZ0WNNrszdIcIkrCkjsG2EmCdCj769WyJwtP5ubN3rE1t/jjg1ChqzU3O4iVHyPGfEOP3CJYRlM3pEZOspKRJi6zpn26bynH49S0PEnrI4vUr3CPRg2GbkiAp8OVYps7CjXK/UKhraZC0hVcttO/6fwQVn6T/t8BqumUydIuQUeTchrUVcNXVC5NrHrlVhN1tzhnvmcpj2PbfjuMDGqkXku63bRetg2DDZO8V6wylplhRr7+X6CeyEN+3f7rYyn+wZpubJajHFo17NlLFkkiy92NvWJVfL1GF1q1PVdt8y6oXjO8ZKVZQMVXRahy8Q80y/pJXyXodddidcAZTRu8gbK+AN4r9fR6VpgTg4bcDAQSDJlOIxWG0oFkjiBSRQmPnn9StBehi9Y7gdnVDLNi/Q4p5edsneYMRO06ndi9yRzsV2PifKRbLuNA30Y5m4ld8ouhCNHdbCINIKFKjAG06SbM5qzedZbeLAUYt5xHu+Xjt5Mpholv4omdg53SlKtHaDyVh2rQHs3z8+/yvtvg0qm43/ldrjU3Po5/v7aVJxa+1xlua70DZPc081DV6avpvLgNDWWxc7l4bghVC7KkGnpp6+4Zi92wMYpmMMqtjm9Wm6Ze7MYqlCfUiHRt0h5tjqqXR/X6FEHVuDBuWyhXdpNCLQHRj+HdSRTY8RqPWYii0f47O39CEKxefwgm85NewJIdaUBoaD0Y6N6NiPnl+LAwQ+DyHBIFGryHtiVluUOmGhYFV7jYehY102fdD5xmwi/D6X51Yv+YFvE9XO9biq3vbOLQP2TnbA1q34dq6vrl6pDxRKeoi+mUDum9BkCxHGxrds/br99lVvtEtmK3difGTEONaOEVK2meqszjvPKjqC3i0NXCTEuuXtYBdv0C3vkpzVdO/RcOTof186Jbof3e9QrN7J2U/srhaDvhWvoV7MpzRX0Xh6WQsee4+BCJb1+Ts+CfHSsCF6Ih6rjPpNgW10XfFrE8SPshziBrhLTQxPRMFLO9G7wJzCzTZ9O0HSfNfiZdvA3LY1Kts8rcQKOxzNxKLtu/nMnkns5QTXzyT6mbJMvJJLxymM99QdaBfZ4YHN4Rk7/QKb4rJaNR2Hdx9WBHHvEbMh1Zcq7k6kFsql4gDstti9Ll9U8/Jadeq29OeBvJlAmp4uJsqe8aMzx9OOMv+3QBpEVf3nz0nFe5fy45R+u9r0i2FEdqJpoA4FNYXRT4ezNP6QaKGX7UKvZVL37aCWMkhF/p4bzqH9GjaO68unEnjzWH4IQauHlnVpzqTeqFGgVIDNzZWe+iTIbMt6vwrUiZ88PFAsEqKEDqVNDnM8n/QtFKKuwkiECFLcODHQt1Ir1AdMVviydPUBAt9WeRFRjWVlaHm+PG83hIJmW/DppdjkiVpzwLSja1ufxz0nubW2zes02W7R0PQNx+x8p4dI78ul/N0YQj31JovX6al+OIR+JBqFhcxOz91SyCu0PZ/wxDi1SIxEoYcHm+cdvNdD+vupeiZFs6xSIMerNQXMfCwk7B6S3nAn0XuJEhhrvYx62aDxNK33xJHpm+LpjXJNdiDHjvc5qdGIYPyQaDfqsTg6ojc+0uiqCBOdWky7EsNCy7OWM0tjlUAYRLG2M26LO02FvvRApXYst9+rkBCoI4uTmhRUc2mx4jTC/MQOlwmW0LJEFEfcZZYVo3ko16zU3A5BmhXkfMFo8VlERSHOrFtr5/PWcT8fIqP0lGzTkAMJZYSTeqqwSIczHIaPIHF3iewNBwIDKnL7vEa3Zkr4i683jx4g6Zki0NgUhRNOtSeglmrAZdPRkN+rOa1mg8oNwqDSOQSM9OlGWrRSUtbb3zohGRIUiecOsQ6rT4+KZBBDBUXOZhVFlPJ5s2X7duv27WKej/f1C5ahsst4wBMy/C3PoqpYPBQmkxNAgy71T2yWcliYEkSPQHOr3OFrrxEf/C6iv+UriVgb42R1vA0UlN3FM98qdPa56XrXUiNWAy7odTmMCpeBTI+xJlVWUmmfRWlQj1JpA9RGFXX247kEkHSyOGBzpYKJwRkDNIsDCFcVIXa7IZa1SKZLzxNYXHvJaDMOxAXIo+wy/JoEovkZj8+j4QniHlzczGUFNkotpraKdfKU2U3X7N00PlntpvGTOVYXavCIpj1I705JyEoSn965JmWI81mtvx8efKhaleBlQuL/ut2nDIGWBvj2X0F7LT/DtYxz+5pqbTBoETbWY9afvZE47d980d6tjJDVbmWkaRwfow3lHreARG2kSS3TKQW5ZK3cqayxz6XGBM8y/HS9NaplCIrbp0ITT6H9PoIiK6DwqtVw07HfjVaiEJiRXH19lcmLlYoisZfKiMHSAemYyMMLPMZ0+ZdWolEMyA2JOyfelpD/YXfExUuRY41HjRk4dd+3QSy9rTg0Rl9Z49t217Mmyg+6ASpTSW7xFadd5l+HAtmbUIBwFzdqQ16/puftBkimEmH6gQbPCvSlFUV0aVXWVMkA89/YJopwuq8/np07qZLQqOv0I3yljA7NndVWTlosTd+b/tl3apbMz8dz8yofHHadgP8mwMFD4M17DlksE76Lut2AaxUmUyVump5W4tt2sI2yurabmUIHXTW9xnMXe64hCs1nQ37NheZJ0ytD4c7hXK3NN1ojYu45zjIG9KTuKD2WScuPF4pFWiCJy0QQ5GR+b/Bw66umqaZg0hyiTZIMghCN2Tz+isfTD68Sek7uNw+57TELMQZnV95bhKst5zmVwmNAownEZEgtyxfO/5W+P+ppf4T7822cGmq30rAQuvuihk4D93WDjFW0iM/jvk/2XEWGpaZSG6eG0JJBgxY3aCBBXzclo79+SL50SRRbX3jgASt89rOScP7P3nwvD7+GOu32tL4AZAcquM9z+59hQKKv98vcF9HozXARrr+ZF1hdhqdhAznIs7SNSGVmGTi/z25VEDtwEYhI9NxFXE7QN36w1gD9iL0FtE7QmEnDaERdMO8o+wIJzaRaDWnUZDUfCHgVQQtG/3VEqC6BJ0J4ydBHY9XEhMUKkjfAMOx3yTQJYuysch6uU/zUrSJN1Zm7qdqei1YabDk3vaeCvREMg/kr6UqlTTU0PrQHL04T1bWK7GLVs+9qJwwGOPF7TjgBPOpjqUR2HSNkoEgboQ7TWrnZZ+hHMoAddePH5DJnQy5v1yuaTto1iPJ5vHvqQWfflqtWoltyr8flUCTOBjZqySHePrbfaeZpVFnHBW3JrsNdqRFvejIghjJWRzPbH0oPCg6SJdZULOzNg5QIujVf8GjM740RY8cnN8F/7e84IzfQNsrsNDfpvCTN0P14bpV+wIlGjUcd8rCXJVDVXwdL0FxbIBavufgF4s67Vnhv1r28EesSlG2VC19C9zvDHnKZSi86sEv4/7nVS1G0iwVHN1XyPMuQoBpt5EaA5UbCeB8/N3LZ2fYr2XbL50ZAxZZso/JwsefS6uV8I6pXhLekKVDt2/m7/9LJTeSiec1oILwz5cup8NmNlITJJvEpu51HXbD929Un/wJ+QAbJY3gXxKEYoLa3cg44s1GRUWat1PU4K/rbnOjLm6jZ/YvOPbPL5XSqXCKP6ffMLJdgZS9d66soBlVyL2e6Ud0zWaE5BucEqen+Kv4qKMrllwVBffkyyUEqg2REt0q/Vsc9V3DPCuekObPulp329luM9PcKwVPbj8oH9y5YbOTunfLKksWBc7+PwvI0ftew5bsa+64zU6HZgAKiqR8pa/0Fkk73D5DfMq+sEJjZRffwLfg5Gcfvu7kYQjxC36XIHaf6jJoMnMNuMckS5wZ3V09QQDtdL9Qvo3WHMxO7eZxdsLozu1R+3jY4DT9fmbDYjaJpWFNHU4owUaXvKfkmacIyy8Vt062Jket0DXVtSfeStS12+HF/b07w5UqC7QyjnU5G8JtgMLI8IJkql2kKEG3E25GmJ/9/sxF//f/ZRnyZRFAmn0N7P6/TwqkbfZGduKM230zRqO+mrmAVPfJ13gD+l7wBWX0dd4DP/NO2nBo4jZ6I32T1XUmXno7uZDCZ++/8CkpuYMAbri+I8Mfd38jt85Aa2Kvyu9v/d/rP300uId+kS1YBBjefK6HG7CA8TuAj9HzMhz70IDnbe3bk6scIVe4860+7wqHgcsplmwmDlUHa7O/QYilI0witJIEcozYEnck/3v5C672t98I/4X7k1jc0+BLPm8VZOAjHry4gGJ/UMPAhgdZE1GSueiChv3Px3mt/zyfJV/EJA9wIZ3ilPpjyqhw/WBB7czgb7XrOnlOPKELd90+IPRlfePC+xwupBxZ2TKakh8eitsA7V5cfSxQSiW31gG3e4T7UqNUXz1lIa9XwMqIL+sP9zH1rR5cfjIXBed/k7uGR9Y/2pck7HSZ3Lei58MBQf204kP31Wx2+x7/dPvzbxkbo2WkvmXSJ55DGlTpH+68cGu20awevk6C3XVkhyMOd/K2wWG+IDgdrshIsk0OP+/tE8klREK7uJ8A7X/2P/y4aShhkS/at97R+OkhLeZQP5Cp5CfXdyWWRRpmgwyID0shZzQHddCxVbfCUu7Iryk+gPo+Q+ghfibno0YfYF9E5hUFVWn/T+htVcsDvOlo7Hga7IFi1cLy/NIroWFXh6qvkRfSGhTxAoXVlP8B+aH0F0L5BPg+k5xzNJZRa6ZKxK1OxqNZNAjZiRkiwI0omMOJ/Z+FB0vrM1LaOdMHVfbR1HxVTav1h62t67xLfz87mSJcCZqDyRUtXFZqzoFXYlP5CNR2100chi2Hbbyb/oKjeVf6/VLX19dY3HvkgmGiTEMshlaEkCMqPyK2tf05+S9WX/x+eA/Mjj0qipmbA4c7QvbyAz50nX0PcLl2KW+hzaZqrI1sJdn6h97UmesaTBnrd1Cf5IQkF/O5tKWM1DWeN89aCxS5r5j7zmir5T43eL6dKwVp2dJYnBYMaShjD78z8+AohGHcciu7VZNlTDZurU5+K2dcG/N6Zhmam5L0fef0DpMcAN8ktIK9np0cHQwR5naJ5OXrKKBHXWxE6HS3lmm4hXJLWeYcesp2vdhsVaKjQYG8QRdsVJ/RFi/BpT6kERmSiqAozlSnJemT76IwARkSLbtPcrRbRFPzIiZBh10kjmLxDbhWf+p3JMn3n0U64v+y47SyqcqVCj/EWhvd63SNnYiEjQcEDcpon5pVReyAVXbzHBu8DsK1uF+0J74BDefaZt1WbtIHts+BZT+n2+xO46QO430Xkw0Ia+ZBC+a23OwqQI0Wg0LZMY2yps52K7jGJ1tZ+/e8ooPgnpM4rxGQWScA+0ECUnzYqVqdi5qtVOcCbrfO8wAMaz3W4DST/6JTD5VR4m9k0XLVJAbfLEl/ccVomGpwgcAZBFoQv5RvZQCgokEkDIcaqnG/Op89HcOTiI1d5aCGRQhePHs1aJLckkVngI+HJ9y/O2IB+X9edPhoAobzN4D4zDipv1d5mkhC49ExHxVOjLa9t41Hf8hIszd19BVaC7tzRqJNfO75LC06ddpoCPunnjj0rGJiHvYryh+9QnMfe6VGXzJVEOKRa5bRpj438HFTeddkpwY+3z4umvSO5UuXC2RFL0E/IXvouWSKR/P7pVD7ytk8YYWVnKLT/budUf2GAvld5QSZ8Uh4G56y/896wfyA1GHq9fjXnzfrVwNnbsMbuJeR+0b1iUXqvWFS/F/wz/MQKLVPLfIP7dd6X6eL6ddRCD69RTEbxSucwW/uzlcLwVJZldADDqRozNuj1PazHwVOGmoaiIBGDv+zz8IJVClqtpIFBlSz5DcXcPkSkMcsYcP/m7+kkGDL8OTnN9pXjGvrObCIN6uheKJfY5jZfsrIzjKlsHPfIWnhutEfPDTf+nus3/qVfihbkBtT53+Hd3XSRv8udar8TXdTfiV5ChBzDf6fgn0/RP/o86LvRPFpfP6X/ofJA/5xi86RLQDFCSR/n/if3LkHEAAB42q1UzU7bQBAeh+CqFr8XKvVA99AiIhknDlwICCkCRYqIQBCEUC9oSTaxIbEjexNDX6HnSlVvPfQJ+iB9i/bcN+jn9aISxI9oySreb2dnvpmd2VkiWjBmyKDs16AvGhs0a7zQOEem8U7jCVoyPmich+0PjSfpTW5JY5MWclLjaaOc/63xDL0232s8R7PmJ43nyTS/g9nIv8Tqs/KSYoMW6ZfGOZoyXmk8QQ3D1jhPtvFV40naMn5qbJKdq2k8nWvnPmo8Q2vmW43naNEcajxPU+Y32qaQBnRFEfnUJY8kMVqmFhUwl6mEsU4rCrn4M9ohQbHSDbBqQtOHJMAsyIakrrBD1qPMLq0B7WKHK64q9ji1wdOHFW2Hg6vI73qSLbcKrFwqra+US26J7YjY7was2fJF0BI2qwctx7qt7K6xXY8HrNribdEH2y6oj0B9QqcIOnUYYxYquA62+ZE4OW3yIG6KyIegjnA59bDbwkLyno+5hhMF2EjnCGcS6iSOyktFneUhJyvjpLUwkLUw6gpWdkqswm6FsHLt9Emk95EcK4O0bqHKtYuoXdoAkhgdEAwxh6iFr06YVmqktFZRLzoWUeyHAXMdd4NJ2eFDGXp+gGyPXGe18ExBPu0q2k+4jCnPJiVqOLheHNwenWO+xDor5hb8/O+lHfdzobX4mM5NfzY8JvCURsPoUJ0mTdoI3zYk1xeO0R4Y+urCPZzqtPEs7KeFjMcYmkAdoAQ2kWLKNLKiCMWTeR0CtxUjU5EJZV3HU8loH9kR6uR/mRtjDGne775uzlhk434Zohrh70PO6QzfVPY3N1x5rNKBwhLtZqnqSMRToSJGDLY0BwPIYviKFdd1touIvIZI73tW7DvfFba8mSSJ0+fSO+eXDrp1q/DYW6NtLiDimSSzs63Elx47FLGIRqLN0v5ne7wvbne+Y1lHnh9nCs2wIxMeCQYBmkQEMUyHQVtETHqCNesNtj8QQabcyBRsdqNfnYxM2zI+4n6Pn/UEU9FwVqseMC4rlifloFIsxq3IH8jYif1eGnZxv4ac/VOiHyJ8jtf4Dzayiy0AAAB42m3NyS5DARjF8f9329tq6WgeI+ZZtag5Wh0MRc01La4QvYmWBGuL7r2CrbXxURBTPAlVXTrJyW91clDI5TuDl/9yka2gYMCIigkzBViwUkgRNuw4cOLCTTEllFJGORVUUkU1NdRSRz0NNNJEMy200kY7HXTSRTc99OKhL/vro58BBvEzxDAjjDLGOBNMEiBIiDARokwzwyxzxJhngUXiLLHMCqussc4GCTbZYpsddtFE4ZIMHzyJgWe+xCiqmHjljXde+BQz11IgFrFKoRSJTezi4IobbnngkTvuxSkucZvP07rHE/Dk9Pr8f04N5w3kDapRLZXS1NXkwZlmimmpvX1NSehKXFdX9MOUZl47OdWPjtOGeFI3xE/131k4EgnlDeeN/AD09EL0AAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKxE=
d09GRgABAAAAAEGQAA8AAAAAdcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABBdAAAABwAAAAcac8AME9TLzIAAAHMAAAAUwAAAGBFtFlsY21hcAAAA2wAAAFUAAACGhVCsmVjdnQgAAAK6AAAAC8AAAA6Ao8Pw2ZwZ20AAATAAAAFpwAAC5fYFNvwZ2FzcAAAQWwAAAAIAAAACAAAABBnbHlmAAAMGAAAMP8AAFjwCx74oGhlYWQAAAFYAAAAMwAAADYQD5kDaGhlYQAAAYwAAAAgAAAAJAb3A0VobXR4AAACIAAAAUsAAAH8/6kbuGxvY2EAAAsYAAABAAAAAQAQKic8bWF4cAAAAawAAAAgAAAAIAGCAb5uYW1lAAA9GAAAAyUAAAfXwExRWnBvc3QAAEBAAAABKgAAAY8w8ZF6cHJlcAAACmgAAAB+AAAAipKM/Mp42mNgZGBgAGIBg+V34vltvjLIM78AijBcm6EtCqP/H/3Pxvyc6R2Qy8HABBIFAE22DHgAeNpjYGRgYHr3n40hivnF/6P/rzM/ZwCKoIB6AL92CEAAAQAAAH8AagAFAAAAAAACACIAMgB3AAAAZAEgAAAAAHjaY2BinM44gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjA4MCi8/8+s8N+CIYrpHcMvBQaG/jhmoO49TNuAShQYGAE9NBKvAHjaTVE9S8NQFD3vRhcLGRw6aBAjopBm6hLFoRRxSGsRKSa1iIuKiOBfyKSDfyG/QAQpCE6OipOLk5u66eRSHLrouc83NHBy3v16997zMEId/EyHvxG5gTMzxLzXxAo5VpYfRKaKXXOOFpHQ3/CmGFdfBxVynz7NXya6ROQQEOGYXbOs+ay1d7wikZI9SgREXwqsyQt6soNMVomS9gMy5ufMrckdY3PIvVPs0d+Td9YXji/IMWK5wqIMkLPW9wbwlYkJOeDsIfaJKufYImA+sCSTaJt7LJBDcmDqmNXZaaf4xrqp/D6aL2zy3PJmkKrfxdu2JqMuBetOMG1jz+x3DZ8MPZtbq0PX6jvEMXO32edS77N3/8+i2CCenIap7sy535x9ZPduIlLduIvqFak21CuhLxnjWHfzPtnPaU37Rt/VxPQROAT+AAW+aRUAeNpjYGBgZoBgGQZGIMnAKALkMYL5LAw/gLQVgwKQJcVgzWDLEM0Qz1DFUMewgGEFwwaGHYyGTOZMx5lOM91iuss8hXkG82zmecwLmBczL2NeqSCiIKkg+/7///9AMxSAeu0ZYhkS0fQeYzrJdIPpDvNkJL1LmVcoCCtIKMi8/wvU/Pj/o/8P/z/4f///nf+7/2/5v/b/sv96/zT/zv4762/f394/N/5c/XP5z8U/F/6c+3P2z5kHyQ8SHsQJ1EP8Qi5gZGOAG8DIBCSY0BUAg4yFlY2dg5OLm4eXj19AUEhYRFRMXEJSSlpGVo5BnkFBUUlZRVVNXUNTS1tHV0/fwNDI2MTUzNzC0srahsHWzp7BwdHJ2cXVzd3D08vbx9fPPyAwKDgkNCw8IhJoQRRhR8YimDHocqXInGgwWVZeVV1RScDM+MRMhrT0jLgshiQAJbVrG3jarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDZJMDJogRibuTkYOSAsUTYwi91pFzMDAyMDJ5DN4bSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzm5WDk0drB+L91A0vvRiagPtYUFwB3WSTLAAB42mNgwABxQOjL4Mu0jYGBaRvjHgaG/3ZMokD26f+vmA4ynvn/7b8xiA8A1NsMXAAAAAAWABYAFgAWAGQAxAGWAgoCzgPCBAgEKgRMBMgFBgVKBWYFigW0BjAGkgcCB8AIHAjUCaoJ/AqsC2QLrAweDFgMyA1mDdIOcg7GDzIPig/YEDYQghCyERIRahGmEiwSehMUE4QUdhT4FagV6hZWFqQXIheCF9IYMhhYGH4YuhjWGYgaWhrGG3gb8BxoHUodth4OHnoe5B8UH7AgDCBcIRohhCHiIlwitCMgI2gj1CQsJJQk6iUoJSglXCWkJcol+iY8JngmqCbEJvQnKCdmJ44n1igkKGIodiimKP4pKilKKWApjCnMKigqhiroKwQrICtSK5gr4ixCLFYsaix4eNrdfAl4ZFd15j337a/WV1WvFm2lWlRV2qVaVFpaUqlb6m4t3VKr1a2ld0ntbhvb7aW9Ymxsthjb4IFAgmNsE3DbQAacmJYxNiQ4C4Q4CQMzOAnDl5ANBhjPfDFk5gvu6jn3vtqkVhtmJvPNfNOLVHXvee/de+5Z/nPuuY9QkiaEfJ2aRCAKUS/KIhDa054xMkYyY8TSH11Pp6l56cdp+G1CyY1I+026QWzERU5PPxedWyr4CQA5gu2OaUKpsCyCIDiFmfrp5+JX6TWwt9rh2tSxvFyw4x+X3eWJxyQ50J7P0lw2bfqo6YsquYx5p76q79dXX0rA5xIAieJ8Ar60ukpwbM3wGkzwsQXI+Q2XQCmBqenndDYKEYBSOKNIMmteFgAHRMtjNFkv3Lq1c7t2F2UjNO12QuwBe8BjOB34PJvXUGV/uxeHJyuxfF8+G8vUfI6sGs1plwtcz5c/0IXVU20Lw8NAy79x/P2XRwQNx3+SXEvuu0hA4sNnA0yI+Hyng0oykVbdLrsg2zSqqLKyJgCAY1oHVfWoOOK3JnSVCZcLTadOnbr21Nn1tWNHFg/Pz+7ds6vga4nH874JX9SQG9u92XwmnfPk+zJpf8BHFV/lm+mTXeAbAr9PkdtBwS+BdABblVjUpIociyZy2b5RyG752g74IZ/J4+dYMpFMSNl8jF/c77z77oOCaFfsMAfHTxwUZF12pHy+pWWXLh87ISsu1/lbZd3FqEpdm6ic7pdk1ek6f16RKPx2+5fZBcfhuEMB6BM1XRGL38aps8+aoj62dxLUoCSEAv15QObYVSh+o9JT/vyxyUlQHC4pVJ9DKkn8t/QJfgFqSMflr8PL9HXSRXKkQFoLicF8T3drKt5Y5/M4BQcFmCJMFukxFO8AzDTUR3wCE41sXx4lIoOsQmYpPmRBzGwCZKZixnLIj1x2FAL+MOSSXZBMBHKKbPr8gWS0EfIjkMsm8ssTk0KgrTmsO/XMsDS+sjI+uTxhUxV9x7Rmy++ziU/oO5K3aKA0Rpvh0vhN9t5up8NU6D5QUtp3XbfO7L/Z1dutpxUKqaTaY6f/jboO5I3RP5CaRptzj4rnzonOgZbYAA6fSCiLXxdUnKeTREiGjJNF8p7p5wIoiklJpzhBgdA1O8hE1WR1nWiKjYqaeALnLBwhguAGlMXOKiUyDmQBaq8QRW2RaJp4xLp0drkQy6HMANm/b+/u4aHseG68sz2aiWWCAY9blYkTnA7Z1+5lAsjEinEs3xdIxKKcU5k0alpfLptMCFHeQ7iwKjJRZOBCy2Xxqlf9fv+B/paOve3BbMuwKvidzga/oNbZJMkWU9mqvogSqtmBFndJInxhYG6wy22kJgzHFeT09dsOXTOcWEyPndrRsZ82hHeOD1J9wJto8Q5cSjtUKlP6L6Jm19Q3i4IIH7794N63GfJoNtF7cngrPbKt7fKP6Ffoq2QXWSDr5CsFz/riwf1jw73JoCaICkoknbKscICIIj2CltScltCSkiNoXYmflE3ctt0h3p2q7Q5c0d2J3T5sBCb+Jyp0Iq5wPQq6KFBxDbsJERYrlwpkdhn/FBxrp/buLow0N6UiMiqBxNetG5zAV5AJOluO0dLvjLW2LkAVSffl+d9c2p9R2OJhK65W2gdZa/FQVSwKIZGMshsydWEk9OXMqN89nHMober47jqjfdxw5JyxlOzPJftGZ6n7biO0o1+M2XdH0bjDDDPxPedsnT17O2jx040NbR5NMERnq8engvNADwRCtCnWoPlGdykuqsdxtYUGUetPNcUmM876sDG294bhjvVdHnXfqjO9bzzmOnSniD7UpFQWnrnR1uSZp93J3m5/fHhAt8dCwXqpOHtoxeeDht5oXhPCTN+ALMNr5GXuu45dFKDquDyE+y1sQgdEap2WQZhv2tSxtc1yVjb8xF2UuMVFrVzpjfhYpi7LsA9130aMgpM13IJ6fa3ppXi93z0KGUV2h9GKT10wZvTHH9dnjAI9/2nDduHS3RdshjWfPN5j8Kr36IZMwO92QSz/PXb5BXajSfpevPrCpfdeMGzWPUYhDV/AexTIUKFfJhRIIdsabvIozISBQAU0tSh4KHYgAsVZr+FlzP4QYTbc0hpuicpyXbt3BJgPUzbLF/NYKIPdEOBGmJmGfMlbMYFMJLmpwEvC8E0h4HYFqXxU0Yw6m5jLBhpzoq3OkPWj+NSg4WZ9qrq1j/6p0+t13jsmBL1um9TQ4HA1SDa3NySONTQMCV7/9n1s3v2XP0e/RfcQk6QL3ZqEwuB1U9SzKewTYRH5gIomEuEUslQ8gk3irMfj9cQ8bLp92Xwkx+YaMCLooiOGHE0akX4ntIOuoVNsc7mK31HqlOJ/+M91ykc/6sBvalAtfsfphDYmh5ffRV4mq1eTQ+bblpl8ObkcRityuKlja5txpRxmtpPDihQCEn4JTFxcgTShmWFQ8RCTiWXUWAL72DoTRIuy2Z7PRUwb6F+anOQys4I/2fgF0mMNz16+DK0Ojqz61QCEQXrNndiQVlYZlORrIHM/7yKBgo/LL7vmWqZUxBVg5AEmK8zLNIHiQy8zjQDmqCA5VDsUn5aUf7EruvBlUQe7Ir05oetoKpOXfwSv0gvES1LkrunnmhnyRFNaRseCAEdwon4oc9ZLKu6ztiu1XVeITS5YbUVHvFjqE4AZ441UKBUR5WC7t68EQmrcaL7kEAOWCWWAI5m4bWByqLOzIb6vf/81/VnB8VeyUWio83nb3KbPyDTWBegNA+GmHYsf+M5c//LibxaiH2yjI4OPPDgy6FPVuvfc/shgr6XHB/HH5/i877voASoxmWKTr5PRyaB4S2uEgVjUYSqskHLwwDhQh1fDLRWyTRRX7bSCCC8Qw61rqiJLokC84FUYekDVxsDGjOQyCDa4V8kdf8egEnh78TPvwDF0DDroutwnX/rk5ORP3wDRCTBpzaENf3yVPk0S5HTBpimURRsYFOBMmvgyYvcRPgsey2yahBcvZ8ZrrbbrylY+7A2jMxVlq8TdHA6vm3m5jAWw5dLfPJuA5fzgxJ7B7mFDrAtJnXc492ePU8ek1paYzNgef7x480RHbqi+F76+4+COgjsSddzjjBTudTl3Tmjx5okeGxyeHe9M56JDbH4om3+MazRKfr/gDgEVu9Av7hhMI3ATSpMMc3uAYz6FIEA6QiTJMY0IhMhHCDp3uTzdRkSPIpXEtQr5FqLUWxOFkKgQ265flslimYzITKgLJmpqXwINndNh1xEljsKoiuucTyOoQ6CBkDLD+MQRNBNxBeU9wVrSfUMIC0tsrfUHo8w7/FNmR7q9uxtcRsoTae9pS7c01Zt+GnHkJqhTFEbXDLnF6GkV99rgvqVzc5oi18sTfXsHc+M6JBIoiKpzuDXVXuftbA5TGtfbVBjL+szBTDDqE3pnFOfhO+f0lpZ6qZ/FCg0oPK/RR4kDEdfJgs3FTNyUDc3NZAnaoYyjAWLxjeXnVstCtG0PE6RCwOnEQDDkDFRUwEEdjDWQZwoQw6CDyZDXYALlBIzoMvjj+iNHjheLd90ZANAeEVUqLNAP0OKRmSefnPnmvyuegPOSfPgNxYUQmOlE5PKPUScexUjo319Ms0VCQaln0SqTa1y3m9C0ipIgMj/F5cW9nbzEr6DGuBeNxNoW2s5fipZLT9tbkG0vRO2tTQ0+r8dwu1CIcpArCVEezSAXG7SN7WBEkG++DEoT969NUNZKbkZHUHSw7a/7C3SX4gx6ol6ptRUOFVGPJBrvNZUd806lObmnpeP0bj/4dE30z/btH7svSDV3q4oG+52zR1bQbEMQHMsjscBodmejc69fhKjbLcV7UU4sHX0avUeBvH6Re8KSasaYslBRuonnVJhJ5IYoOI1MF46iTPgr1ihSJmVUTLnWtiFM/WLCECfsRsKmKwklIkjCSUbP0ECKcPEUb8LFAFG6sYZOEKTF0h0lYY7HDF6m0p3t4UafoSkkBUlmuCEdYCvAbKIiZ/zM9FW8mBN4LIFoDRsx+sMFc0LFl5XiO+jsywF0Z0YWHchqpW9Sdrqd7bF0PjLRO5ruSp9ZigTs1Ca69NZc2JdQHTZ7e8iD0O5pb0vct3bIA0paA6r2TZ9dn2hraUs+uX7fi1FH8e+wbaF/pTdup1RPx6f2xNKWv7j8M1yrR9HnVXEUY78L8QZiI+ajLURiCfamZgOs9BiHUOhpGPKhR9hd6GwJR3mJESjh+YipyILciLbOsnR5pQ2e1D8ZUdZENfUkBqQX6ODhWcfXiz8f7LQFJrv/y/MyBrQM9rSjPH0dbX6cdJMR8umNJgcVadk5N7LYDpeVIYwyQpGkLQilnsEnSoS1CvEmktRbkXDE0nxlL9qKxRKNxJFLwTnYn+ntaEu0BExE9CbLpWTKttsFGUsPS9id6WaSiYOfuwCUF5SE0i8uDkhz08HRs15V9B5SID2m0XsOzt9DtbE0GgiaHvw364P92czgi+F0Jn9Q83aFI/DTyWv3DNQF7P6puOid7NLNlfPnV0y9a9KLS2TuG+nrzQ4MZHt/Mzw5eG2ANsbHC4TngMr62kF2kmcLeiMIEl4hlEED84EClXDuoljNkG7DYRF94VqFeBNJ6q1IKhze0osWabFEQy0Oa60dbUkWo9ddCQ/To2BhQvYvVxO491mJFFRIH7eFmb4ScPxAT364vc5TODt2cHefBh5vb4fH3j7sAJHqowuGvWePSoNN/q+EGnsHFFzueMgdDDojKcVGH4g1eeqOPffi2V0piUYiLYJtfkQMOkRtmNrOj/kaB3YnG9oCuzLaSS3Rr8uguGazzbFxi98c+8PLPI99fcl1iuhGeSzstpCZVElOd1+tm2enEdGx5C9BsFPTjqzy4GIRURHRqfLIgQskRg5CKXoA/FG8gFEEtWIpPh4X+cxFBSzl0vnSC6IonJE2PV1clkEUnWJ56RuQSLj16jTdb0ljiBwis27ClKo0lUonW3Yfn4sLjZ5Wmo1SM5tqeLZaDtBKk6skCyjpJw/Qb8EtRCcBEi2wZEbpSYJAD5WgLRX2BXxxDw8+MDploiVFEiZ+bBLwcyTR76TvcDmLrxRfcbvpPaAIguvSu5wsh6vabSpIL7okkARFtKsKe2YeH/IU/T3SQlrJiQ03CjQtm9cmwhQMhJvKcVWAxVUirp/FtbckYFwpOBKJRGui1eyoT8h8wIlktuTuLWdfY2n7yqiSsexgPSR37EjZdh/oX7TBftBDk1SnRm8m3hQLz6/SAkyB6G0EbXZib8/0STnSlOxvPVWgGvgjHTGbLXjpRR57sn2An9F1nN8wmSNzhX0xZAhMERmdrCwxSKOogrJGVEJllTLjwZU9wMwzOaJZeTsgU3vHRgf6+7JtqWg44NNVMgzDOnpSqWwmLTUPMP9ZUmoeCXL1Zwlp7kbLabU+nvVBR1MOFJvAMqboWd/90Fc9kcfX3HO5oHtAEO2LQ4rPlCeO+7tOyGYiIFEhNuxtmj7jgHuP2YJjWdec06yfatVF0zfgcHbVBTwDjpDt2x8e7V+/X2txB+c+22/uXkP867xvMZ877QU7wgdpQPbdu6yHb/64DQSP5DI9PVCkztR6Tzie5L8KpISl6b10g7hJM3nbRS+IFc9rEpHhELrKLa2EQlDyv/HtO7kXrm13VdqZTyKkoQ6f4jbMXlkOtGe8GFB4PQEEKckIS1h6E0mzhKzTjJ0Nb0I2e+87aF/fzuIPYYf0NwZohyRdoH8vSkP0IhSfKT5D6QtUuGCnoYIu5d6wN7BEl915gflqtG10FedVhzI/RN5/0Q6iUBV6C+au1SQTmAOVoXaKb0XF53oFgWsTAbN9hKR7ujsi4aZ6HEgwwqwFRhP+sr9QqpCM/fOyPY5MXxmCebugnZqZsuYkEysPfihwUzpki5+Tktc3SIa5POCPPvA2Zf/U5MH6mbB9Z2Mymu5p33P4SKBnXKVRD90A0ZxKJoLBPTFb8pDPHYu2j9iYcbsB4G9AwcDGl252Ff/A0N4ESc9GdaU16uF4bAh1app+FbmXKMR8XhYfTJWyhQKqDt6CZbVDdGZPa5sVgHdBGflbSLKPw/vapEma64pJu9v3Zt3K4aEdkeTu1nT/RJcDbUzH6MJnVidunLtZ8Cmzs/V0qKEetP37b14YnY34/E2a19uq+sMPnbr7ievnbBDSBcuHLeGPx3CdDRIlZ8r7q5tzROKmZd2utwQgq8tY02HJbtBvIoQk7ohUXsJqNMPsWQKjHcvpMxuXTCx95COOcw+5KHUd2n3c8dG7bQf2759X+pYbEntGE7gs1Pvs7b5AyP3A4XEXmuMb6KW/AGmoZ9fK0fc1exj/D+O82ujzGOPeVxZahH0i5UlMK4E9zdIK6J4kySlVhfbqVIbEhXYLgWsTgTVbfKojYhgRdG8hnC2GcUkzgn8zefMwfO3zz8Gu4pc3Nujzc/DazE/gcHm8ThyvTs5Z4w1dORKp4orjVyfgfjh05SjLDgc9Dn7Xic7GxzxOdXzGYfjis89CsviXbGh/P1N8lVRkeRH9Q4rsLIwGQRKZNCssWTpFyhkaSWKZYTEwzYItLuUYsAFpbvL7bBrPB6QgxSKrlnQ+F8tljC0+IAxow8pegPsA+JWenbd/23ZivbP7zEOjvft3Tqzs6nWjZZ5adSlLtx+bbBp3PzRT/LnU4Qi//I7zJyZbI6GAeBwEcQT0x29a+1BQL/H1Br7PUZFuIGjKxFOUR60yuovN1QNX9JarB6odrkpHab1txGawP9Z6I0fxfwx/Hj4Le86eLb5IN4p/CclLU2zhLZ4u4s/fxXEJZKKaN3ZM0026Vm0zyrlkV/nr8pZkMj5x8SzduDRl3Z/FWu/G+wfIuYLNYKrpYBUJJQvu3gb9x69oD1Ugv7tcNlHF+Q629BRO8Aw1Q3cXW5M4kkB7C47EzZM8LL3FNjeyPBKC8GkQXJ6D/ZP7PYhGRaV1+pDnfpor/qfiPyiRxlRnRPMHcNmVzDiOn9mlh3D8QbJU0AKmTRSrMa0T+OKIAi3vC8S3tBosDcAbXJUGVuiBgw2SYNBrsEIPlpcKIMxgPtPvDcSSXbQbZMVcWgeYu/ldzTsNI/i688br/MNNgj7XSjdQcU88GJnweFLF3/A/FTnWJboW2r5fWU94A8erkEPlbQrOSmT6SnX/In5lh2HtX3D+1rSV4m6FKL3W/gVyNY/2Y/HsdY/14DJ/DOAAe+5RFAEnPreVPHhRR5VkPDJZEtjiBkvcTaPC1m6g+FFo0DzQmyySmt74VXr5GDd1uCodyyWL0kpaQ0a4ZFEygSYa8IShzztCWQY8Zgg+p+CCWJKiLzPlBjCNo78igc1QP2YHz0dUwwbSg8fA2RKdqTcXG562oVHfcAqNXb7iNQPaPvigr6tRcKIC9UKnI33d8h/tzU/Cl3boaCqumZ0v/jlfAyYzb0NeeMihDUOh/0oC4yEew18WGHTNngBT7mQ2idJiLH3YUPs+Mnrsw8bIF4Mi3Yh5byj+6cN09dJUDN4Jdw7rlz5u+dn85R/RZ+mfIF7sIb9RBoglh2lu2YuJb99ZVUdzUzBR09nLd85YDh0Vs0xDf8FODYbjne2xSEeE53dqMo0loF7am0TnDNlNFpo77L/bOR7yjd2UHBTdH77R7fW5T+6JhdJO7zx89PiBJk0XD585saD6TfXAKv1UkuqzhRN3RUK3f9ZA374n1rF8rq9/z/niP17zmEcA/anrbn7Wg8x/toJN9nBsHSZ3XqyrQaAhhMlARahJFkmblOwqBHyZr+hzlfuQFS5kmOkzGNJu4zUEJbBSYgfCFIYyjSrKXPrABx2Hz0nOG6f1lcWnlfnZ2Xnleh8EowylOG6f9gR2HtNo8XUGGYs/AfCsyP7u5k5LJt7FZaKF7AHvxWBpp0rnuVBBlCThrJWTK6VrTAaP6VFcV39Fl6OMUBRYIvYtKOO/BGWIlqVre8rAFkomas2bKSVEAhJdr1zBkEjLZhIM/wWeG6KUZ93YDSXKE7HoSXeNDfS1pRrq/GaEpzk2Z70RGqNViSWSZankMokBcw7VMlPFjjxFVBZQxMxVCXWNecM6pAfUu2Id9kjipqOWpP5o+brmZpBllzhy7WHZ0XuoLrd+QDf9EgpJjcyeOxCsUwEm5vTecVFfKsvupZfoA9DRKcmGNHffuWftkE/N3XbuCTfLl1syfC2Po1Lk/oIeR/TkYAn6qfKGo8W0U9WcnLw5UrwaBUcEV3S6Kp3IT/TaGDo14LPrfN0YPAXKwRMvQXCx8CIMSjSZ7YaYURM8Mal+6INaPtU3fHDMbrNnfMezWVha/NXfcRycnz8aWkAV9aJ4g+arO9QzdCIo+3yHYk8iLnnsY8U/oddTeB1k3y45IU9xu9yBWOSn9FUyTD5dsDWiHLSx1DKdqppBbsJQFkvQ0S/UmsEtnSGh1gyWcxGbOju5GeTg6ESFxjKDwGHLGmG6v1gt3+Dypw/kE/H6UFZE2ePbckNQ2ptmCUgLrLLijhJWZQFbJV4rc9WSzA7P0InGRrvhTvT2ORsyo4HMLt1/2+ziPp+B+LRldy67Cz2cvdc9XAjld71zvSG0NKekTw55Jdk+nBqN6ZrDZQ8e2dFcP7Y/qcMpEITmhq6k7HFKPQHV5bbXXzO8fJ9o75UYf+MoY++mzxGNLFss9YhMCMrxS61d3NrDDWJNo6vUWPJ9GlERxTLfx/L+sSQ6ciVOT95779l76cm5Obj0JD0FFv5B/7aEch4r42zDQtDlCr3qkm7pqC6nYUHr2g4E14AeSzjBuzjM3Gj3Jwye2stlTH8pVOapYgzGTbYeltviXmvxLIAeb9s5dNCO4egxEMG5MNDZO3tPkws1+ZWf/uyftUK8c7Lf6Prmz34aH3zCEGBk1fTMjza1axauQ3RPH+Y4dM9FuWZfxQ5wBXOrbZytdgtOlBl60WzzMHzszQ4Bggh/BiMfbz6TNmXKgFGCOvv6gs8jBnHEH27o7qaXJeF6QbpMv0CHix3TgtR5K5ybpvTSSVXXVfqUNTbhEzi2HnL8hVa/JgjVXR80CgIHN5tqozc187Cm1OKarlZDGwLp6myJhRs9BukRemRWxoBDZoDODLDtDDZqBu7wA9uDZLXSNoh1A+IhRRaUmECd6Qz1N8onAdTQuv9U4x0aUO0u2SkKS+trmYz/nSp+v7Ph1No6vQja9Lq/+ExOAlnruhOO7T9bPDlrs83DM2aPzY4wsPhM8QJMwVdnsLF44jSswHLNujSTwy804I3/lcBeM2kOmSkO9nidYBdNZliVbD7DI5qML8xmmkXj6Rwb2zl2d9NIM9y9fxH0z94Mwi3ZUXjwwbuuOdPXtXr0yNGjn0gebKM33kUd/0yFT0wtwQsbH/oQzI5/iMmViOP/NS5Xky/4DEn435KsYKCZS1aej5XlTp2iC1BZmeESdwz3fkKC8Ye1a8FVH+nwv//0Q+EpAzk/+YaT3v51JwSSvTsjf1b8Mfj/vOtcXameDsfXw+PHmws6aiBxod0um2w/k5ayEcGgZXnTYLfrtSKISoertqPE+gDxGrdWbI1AzUx6BIbAjOS8nhxz6rEJ+MeNFzr0/uWmR4rKxgtKnXKsjV67L1P8QfEHaMAO5BAFh5glw/EfvyyDTl/HACqFGOTKXQKR1fPtsyIsDNzZYwOsTgH/H/+tQ4f+RfjhzJvPzVi88F+WySvVe7FLWTEc29diN2PySGHzvdA4GSzL4f+t3zpEf3PmzeCMMMfvNYvK/inkq5ekL9pLO+p8hfn2+q08d8RWuPKVWb2LLQGjssABvxJth0QSZTCWyPV9aOf0zgIukBhOFMJyZ2eiRaDr8/NziPOnEnIuB6xUFlly+QPwxuW/+sX1bSYyH964ZWbGilsSl/8Zfg1eJR1kiDx/0QHAMWqglN+VJUGubCcGrfRtNYVRAqhXUGE/B5NHKmCy+6qUxiZKa3eRI8gy8RYS7sdbOlpaYyxdXF/ZXgz42T7KpqRTPsM9O49nXMCavT7uTPqGIca0/cjYnqg8mmhSYcU2csivtqbBkdt7uxek9sbpgoARJlChOx2N99kk22g23gCfiYK9O5rRHvv1pNJGbXszbrG1LiqFGqRIRyvCe/B4UmLxe/WR5jpHo4/aNS/j8fTln8HfokyESCs0Y9gPEmmtoyIHiSbfcBUEh7XdYrGFbcEwNltBn5/VSm0lQYWcLm/VWGSBX3yn6C93p/j2ZMYWsu4SmeutyAqNrPxfZDV5nHJL/7IVGWjJuOFvq+4XV+IxvpzdwPXWy/eIRkpBqgsuzB4J+ToG7K5Cqz80McDA/LEVwZNqNuRcf6bH7sy0aPCRtO6/c19/LD3lVNtZ0XmCbjxanKurA9vsO+d12qJaNiCKevAE6kEXmSrYG+pVRExNpYK8bg5FS4eL+BSr+MVLqrUs5VaEMKm2SmmkdTwjURbEUtxinc2oicCZyJ4emR/sa7M5BSGa7arTujJtCbNhcqeTGSJKNWH3TL28L9sPdnhozB5kJzEwAPRQx/yO3H63llBN0+djm0sRcOzYdbRenUfZi+C8XuR2vpP8BUa/GGR3BqkksrIIYaosNaU8OJ/Btmoe3kpypY7HtycztjEF4XJe/WpkbEO7tHdUciZbjQDKzKDZHjMMJjPAMja5TWGjlXPuorGa+h22wzgKcGLlmD6y39QmWhplW76lvmH/LtnpifgEFQRntn9N9nrUZL0Mvw5Nl6Y6lG7qnR2cCbT1HfA4Wvc5nQ4Q9ANjDwSA2uKatUeIPH4S/hTj/B5y7CJBsYGS2DTJqOtUsAI4LvPB6XJWgp2GKDQwqCCBuFYlrHZjxJxIJHoS3b6crz3Fcs8tGCo76abDDqXCJTNSqVCyAhdWjWrCh2UmODun65Wp0w5KHYND0wd7OsXit2zNM6J9YWzA2dMpaLS/0XbzbmQ36lAUHDfsc/u87sOD/cODZ71iXeMBB3Q+35kB25CPxyPMvxyhXyVh8khBZw5GqMEOjVxTWEWcdfSDLiOspm622tUyg7cg4vsbyH3KatJLOxwlSlLe4TCBBFnWwCqwk0gYmtRSUVcy0Q5RjuUagbn7GHPTJYkAubXDFmlU24MaRujXnVnZtQuUA4MS/aptXrQHbJLuy45OFh+BWyd7svLQYbb3zRxnw+U0/AN8jRTIFDlOXiwYTU47QgQTFJrAISpCaeptCBAEURHW2GSsIy/cBGtHiKY5+Vk5XrZYJ5X58JZXGJuvKKSwG+kUluUrXbY9KSt6m5k+dHD6+MzxWFtrMnHY32qTG9rziax1NIaJDKLcfN8QhCHKMyoxJVmqekomWMwbLh9q4Hn+slbxAijmRIU0T44la4vj5v0+WQ6t7hloA9E1tktWFEGItYsOwStB+PSujqRE5aa9C8GDYT91v2P/3D1uatJL7a2JtrZEqy296DZ6PHvzqhGgemtLonF/TNNbuyZPRlEoxUAyCQqgbevMTZ4ICFQz4hp+dXZG4gElMzqSVd3xuPCjo+nc4VzxpViTz+1F9y1G/HbJNBwos5Mosy9xO/hgQWcm26jZLvEjHzn6Lpl4YcuO6JW9RsUDsl7XNr2syp9YFXiMQCjv6iy/YPjjvoiE2lzCLtZ5PWtzGEGMkfnkjoVzPhHDWbSxMV9YhmMr8NCO04FnPvXxJ6RBX3hIeff9OBVue3bhz8/SZ3mN0vu31ijxUbunpU1B4rbdRqWEaVOhUrXzqgVMb1HBhFZ519lTK7Rw9uyl34OXi+OEXv7Dyxnye3y8deTei2KphomNq17aMi7mH1hlaF1lbKHayqPNBGhJy0WhFZpqt5UsCwWc9m3GyIsLmNxn+/JZy4QunV1ZAZAdo52pnqgbo4qmeNrg87iOeor//ftpTyprONSdEj4wFGU2cYbXXLN4776CFvCpaLugHPF5yqGSe2vUurXHqLhIT9nx1fRUG+lyNa6tbHsFKtteBmJfWeHpP2vXC6doziyu7b9h/oAsPC2oa6OuqEk1W6edbhSnzywsLGniG6L9qD8dFhz2HvtD1rkt/Pmpf+U9zKmV6h4m6iT9JtrVNvJFK6dnb8WgjeDIWFFjvfVVKX0tpb781plABVSBaZtc3dzqvEpvlad1RFHc5fOIKt1EUQiyFgms4lFFQY9UswEWAJJKJlrCjaGgx223KRJpgzaNuxx/IL+tGm/RabMPenoHvcrQ0hbVrn5aHIWvxVrUwmZFr36CVwZHy3yDl5Bv9eSUZcvMGlvm4aZIhM12rHubHr5eXm6jFnkB/nLFSHEbNW/ZKOtow3Z26qn8ODu9cM7cNKFF+JW8ApsnAa+UcdJriLHZfs+OsrUppW+34CJ2msU6gVcDhzYSLdZhFuKrQD3rMEsgWzlwxEAevHbviXp1qmfs1mV7WJ537hrpbUntaEwG3Esw8PL7qDMztr78kA7O1/YsxFJz621eqZnHaSPwd8hXP4mD3QrNMFgTSVMjAmYUSCsUY01CtSmwlWoTAQpPOcZjUa8AlTCaxT/MznlobYzHjVpttL2ZLPCL79T9y9yJR2WlKt5KF4NhVr+Fr+Nxw9dfG5M1lg/aJmI8IONcd4FpbRRe2LtmatmCcHCn7N07oKLT+v7uvkxCax4wpO4C/GpGcL9vVl24xwVt8g/pvb5vjByNq9/Jgm2B8DhlBF5E3pskTk4UXBoyNO5HFjpB4HFKd2XmUJ65FW9VptTAJ7RY7WCElRkVtEQiZpgxNp18SWrCkLPiBoXB6ZZqhMbis8ixCVujPNim82ih3shOwIirNRkKtnRMZgda5P947N0a2OLqwKU7fiy3C7L7gY+3pOzefd1jK+lSTMmOk+7BObnYWXc0Txetkzj17LcAZYtmcIRbWs9aY7alo2rHTGt5ayNSbsK8lTxYaSkt67Vh+D1WRh0V2YyxNVT4+n1250FF719ACL9yCN6zc14cz2l33gGvTOLYma6eRV3tJzOs0pxCM5CaaLiqtTUbM5bWkuq5WR4NF/S+bEusoS7Btl3yIzRTrpu3Np5Lld/MxPhcUDIwlT2XMiRtwEGDPrFn1CXUOXqyvl6fY3xYUl3zkwrOZsfutENu1Ht7Anmvurh/ZtITg1RSbk1oaqNL12y6vyPUMDChoD9MJQWxqc5ub3RJumZvRH8/vjdaWi8PznkfHSJN5NBFjrWnKkXRVLiFwRP0u1acIsusMsOyVXW8W2QRC8isVqraiZMPsLohf5blqloC/BUX3HINA4tLMiY7OmXtcvTBoLd5aNDutCdVcd/cwnvfC1QNSI721T3UaSp14/733zl5332Tt99h69DQTaIfwPG+BC/jg95X0BGcIaYVeBzGzISHbalwKRGOVncJuAst9bDSEXbi9yiqVagSmlV7jU29Vod1srC2gyFaVKy4wb0FzihQStMMQ21QPnkM5HB0FkHesRVl/MZmT0IGsD/33HOmfcCeevvHiuNJsVPzjqpW7h++gvMyyNxFvWZPxgF8aNVym+7NjVwJHHxb9pbNZTYGMVJjvMyGJrOZtMmqPPo8+WzaFH7nk9DVTT0nNTgaXvkU2iD0+tlicTQC+gylxd2lvYjHcTyt5GBBCzdJiCuruxGU1a27azZiure0cvTMGwRyS2Ub5oX2WH3QzXmWwcGY1q4LE/g8PzCekV00xkpQZOtUSgxB3BFhQQVpxnnIs1ehoLoGPUtNLbsyGeEwSl5Lm13o7t4FL+vF1w9r+gS53Dn6TwO6APb43j8YXL/7e6BDw6ROpcT7H03a4HuEB7fwKs6rkex7IWiv3WP5pTldeyB7Ixhq4XYmn8xYuxQBvglNOQoFnApOo++li6d37KhvHuztFR5uPmx2NYJ+eswZV7XG2Oj6S//w2vR0tHUa5E8nrwn1Ral9ydur21K9S3/L1uFylstFNxnZUBVqLQIbmQFlmeUFDHW85Iq/NuKWmrbljbZUqsc6NcC26ND8Wxt0ikxLp+7YKLOJXOmg1wh7eYqQdHb3OK6XQT2jdnamM9eK9fFgPKTLGEMo9nDMIbtccthu72nrtaE2Ri6TOV1bBMUHDzxQ/Km6q95gxh5gP4h2QW2wH6ANDefXb2WJH3ZO80M4Hxc5Z+3B2Lfdg3Fv2YPpvkovXxQf378A6zD/lh0YF3EaLZUdGCZV/ORvHzvhdc2N1/jsb3978f3n7z8Pt0z1fvC9dW7Yl3nsApTPXH8VnoI9iDkThRgDOPy9AaVcPbMx7I0ewpzHjHlM/poEvpNeykihVbAiLG7dzdhBob+jLh71igo6CCHfXt9S+vxqdk99SIROu638gWGDM3Q3PFyKccdLO52SILI3iCzzzWZeWc+KVoEcohzJ8m4C+64enTLje2b11CrdvbpaOidxgLqgE+MdH86yvxygbS62clhh2OZG9lqMDU+ylWNTb3netamTAHt7kS99UB9qaWhodVCqD7ekBnX6qR0919M76uO6J6baHUpjLN6gOOyO1tYU4/n7LxcgfPmHuG5eXqHJXa4HZhIR9taLABddJ7hoNIfM/nw8kZBEQ2lua5Mk73Xz1GZr9x4A/NVRieX42aGaWM5dE8t1b2ozrny3wXaxHA/qGZUV1+P9TTJ4UWIrUVJNNw9hGXsrmunm5+xrmpYvJswI2/9SrO2ZENQE5bl8LJwItki0GpDbT4RNQwYFlEooLib+L+69zcIP8LkfwOeGCn6VOyzLCeH0rvW1+PjtE/k0Gh1/AKGn35R5RcAsv3Nnpxwu4J0L7GH0YYBcTk7gDYQ5fBLXvQmags/RO37x3h5T6wm4lqZmZ9l1X0N+PIX8cJCUxQgbqeVD5RtjwxcSBhMqthHuY9tlsSSrB5RGjlFPwjWRaFHVCE6dgtlpHICSTB3E+3fw+/eWcwHsjlwlOaMrX9kTCjZKNIUdGxdYyUEyY5UnsQTFIXpsxBFR1ZbEhCvhoV+g854Omw0OGJ0mj3fhTfgM18v+DS/zUuWFdVqvxjrBX1oGvJyk2uBCmd2It3jdTCs9af66LF/ZzCM4Mf3fXMgLM7lka3tHa6JvRqCz+aQmZRcCfn/gUEbSkrzuhRbI73Lbk6sKUylNBVZl75b12KwnzNQsnmWpIytf99fIs5f+T9qY7//P2ZiD6J2fok/jaCasU6Q+dkwWZf4kD7b4Wlon/65q8zG2qpp97/+K2adt29r90yX5VRG/jWy2+0cqdn9TC1vzgkfTCNEMzXDoeKnaa5Ua9qK1RKOSKX843d/dJYzTFesXdT0Dyq8r/EdNvffz7Ez/87iqPaVjFMYiPP7YY+z4xKXHrTO5uNR+HKNG/ES96HHIQHva6yHDjm415/qgi503F5RAJpukf/Lk9U8+BZd8ALews8GuP7R9//tNH4ejsFK8ULzAXipHd8tuUe8vrgRAGIHDKAP9l39Mv0VfxfXpIVmiv5DuTTb6RKGHvwCuXD9ZeZVHaV8Ithbx8nN1aBz6n3+nakyOHjhjxxnvbPJPLNkbm+y3PYEB6fXuYHf76NTNy2qoPbFnoXew+CqcgaVf+6YdIqnH1vw9vlsWYkY/ypXnt+/RYQ8NxR45fvPjBnU3Pbp23f4jxd9FL8oxDd2N/PAj3xCVlnjhQ/iaYGiWgVlBiUWzj9x85qab830iBB7WaH3bdbSzo8wICrq0Bz5/wCYGVx8rfoUl6gTGZ3oTfY5jABvyQVPZSyMYH1g9Q+l/N91RFOHlS5dxCEtLS8W/XVws/tHSEqmcE3ker66up3WEgwbYAY7nL+2jZy59rFIb8xjfK5CfVzgtixW6gZfIhYGbLf7WlLz8N8L52+ja669rhpENXbMyb//ud3UYFejDj8zOgc1njja9/f7bDDhUuS9byxTeN8Du600HeJ1CmifXygfEWPKQBcdRHqfn2M7Vd98bBxq9Vxo7IR2jqaaAd4cunpU9i83ueuEYTdS301f/DNwbymJBV5s61Yb7Yz/5xjd+3vGg6Pa3qHp8zNPMeFieVwNysx952N3V1uQC5CEwPMSjUCZJ7F0e2RjbsWYvWkybWWtYVkjuTaASVIqjoX9ViDXe1W2aA58XVkFRTz366CkXUE/DkoHI86hRf16TxA7vlIumUvT+3NtkLXWqfaXt7U1vY69PMO7/4v0G/a+fdEQPqx3q4bgkw04Bil+yqS37VH+hPUVq+LZBdiDfwkymWniKm/213vLG0hp8x9PJ3x+J42dqwIs6owk2u3Q5nYB/YWE1ZSTdNgi7fUK9LStg0B52UIU2fkFddR6+zo4fHWEqg5DNCQ02BBKSVleffgl+XpQMV2S0dfbhCEImUHvtdzj+OALXX0/d95x03GbrVbFVSSXWdzbmEu1ua+zoKOnTuOY72ZpTtuaWgSzVN7AXz2XSPC+TK7+hLpvYXHeKXTjHTD5bTpdMNH787IePjoMY7ejQndRGO80Db4pxt63bZr9peeEGFez40R0X3zxgdlKHU+/YZZNoaN81J3YvO5TO5f2zoRjq5mHn2HI8eKajrX1ubXm37Gxv6zgTjC+POQ/jlGOh2TvH6n0JXltEfgJvQP8vxh/DwGqLfjJTqqvC64Qf/LLXCT+oXLcCr5Ev43rbSfYiK70qu3sHP4tGj5cBTM13juQM08uh1ohVzudjXF1RI1ovO2ruWqX95oLJX5H6/9T78Sj5HLwG3+bzDZHRDQdLrpWn7BZZRRabpFBGVZubOLLSDNOHky/53+rk87VfPqdG1RInXtEi6hVMOVXhzv8P775lgtRB1kvvIJasdxD3luK+desP+aXpeBCMVIyu5D96rX7yPwAm39KrAHjarVTNThsxEJ4NIaiRCPRSpB6ob4CUbLKBCwEhRaBIERERBCFuyGyc7EKyG62dBE5Vn6JVbz313EfoU/QReuwTVOq3XlNIxI9oiZX15/HMN+OZsYnojZUji5Jfgz4bbNGCNWdwiuasFYNnaMV6b3CalqwfBs/Su1TR4AwtpW505q1y+rfBOXqb6Ri8SAuZLwa/prnMdzBb6VdYfdJeYmzRMv00OEU5a8ngGTqwiganyba+GjxLO9YvgzNkp5oGz6faqY8G52gjUzJ4kZYzHwx+TbnMN9qlkAZ0TRH51CWPFDFaJZfWMJephLFJBY0c/BntkSCpdQOsWtD0IQkwC8pDUtfYpuyTzA5tAO1jh2uuKvY4tcHThxXthoPryO96iq26a6xcKm0WyiWnxPaE9LsBa7m+CFyRZ/XAtbPTys4G2/d4wKoub4s+2PZBfQzqUzpD0LFDiVno4DrY5sfi9KzFA9kSkQ/BEfa6NKQedCMsRXfY4wA1HCrAUeI5gobQh7F1air6OI/5KUzz1sJA1cKoK1jZLrEKm4qj8NfvM3kf5DnRNnEBQ510B7E7tAWkMDqwHmIOURRfnzMu2UhrraNwdCIi6YcBc2xniynV4UMVen6AtI8ce33t5eJ8Xlvmn9GYMc82jfWw0Woc3B5dYL7COqnqDvz8bwNP+rk0WnxC566/PDyO4SmOhuk8SZ23Eb5tSG46j9EBGPq68x7PdnwJs9iPayknGFpAHaCxrkLMlGj0MLs6a9J4HQK3NSPTkQltXcezyaiJ7Ah98lvmxgRDnPf7O86eiGzSL0NUI/x93SXn+May29xw7bFKhxor3Lusro5CPBUqYkiwxTkYQCbhS2qum2wXEXkNkT70xOTvfWPY6vZ4PLb7XHkX/MrGpd1Ze+rdMTaXEPFEktjls2NfeexISBGNRJvFzwA74H0x/QDY2eyx58tEoRV21JhHgkHQ810RSJgOg7aImPIEa9UbrDkQQaLcSBTy7M6VtRMyY8v4iPs9ft4TTEfDWa16yLiqZD2lBpViUbqRP1DSln4vDrvYrCFn/5Toxwhf6GX+A0s6kLQAAAB42m3NyS5DARjF8f9329tq6WgeI+ZZtag5Wh0MRc01La4QvYmWBGuL7r2CrbXxURBTPAlVXTrJyW91clDI5TuDl/9yka2gYMCIigkzBViwUkgRNuw4cOLCTTEllFJGORVUUkU1NdRSRz0NNNJEMy200kY7HXTSRTc99OKhL/vro58BBvEzxDAjjDLGOBNMEiBIiDARokwzwyxzxJhngUXiLLHMCqussc4GCTbZYpsddtFE4ZIMHzyJgWe+xCiqmHjljXde+BQz11IgFrFKoRSJTezi4IobbnngkTvuxSkucZvP07rHE/Dk9Pr8f04N5w3kDapRLZXS1NXkwZlmimmpvX1NSehKXFdX9MOUZl47OdWPjtOGeFI3xE/131k4EgnlDeeN/AD09EL0AAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKxE=
d09GRgABAAAAADYgAA8AAAAAYSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA2BAAAABwAAAAcacggPU9TLzIAAAHMAAAAUgAAAGBGC1jqY21hcAAAAqQAAAB0AAABWnVufrVjdnQgAAAJPAAAACIAAAAuAEsKY2ZwZ20AAAMYAAAFpwAAC5fYFNvwZ2FzcAAANfwAAAAIAAAACAAAABBnbHlmAAAJqAAAKNQAAEh4CtgVdWhlYWQAAAFYAAAAMwAAADYRLNjOaGhlYQAAAYwAAAAgAAAAJAgTAe9obXR4AAACIAAAAIQAAACIW2sFRGxvY2EAAAlgAAAARgAAAEZRpT3GbWF4cAAAAawAAAAgAAAAIAGAA5huYW1lAAAyfAAAAxcAAAehOHmzs3Bvc3QAADWUAAAAZQAAAIbR1CKAcHJlcAAACMAAAAB8AAAAig6K4sh42mNgZGBgAOLXXg9k4/ltvjLIM78AijBcm+itBKP///t3jOUm030gl4OBCSQKAHf9Dg8AeNpjYGRgYLr/7xhDFIvF/3//zrHcZACKoAAlAMUqCAYAAQAAACIA0AAEAAAAAAACACoAOgB3AAAAuAKMAAAAAHjaY2BiesA4gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjA4MCi8/8+s8N+CIYrpPqOVAgNDfxwzSJbpLJBQYGAEAEKrEYUAAHjaY/jFYMQABIy+QOIXAwOzMoMycw+DPNMsBilmNgYXJiMGPeZ6BnWmJAYe5pMMssyaDNYsMgwxzJOA7CwGPhYLBjnmNgZZpkcMCcxfGaKYixnMmIP+/2NOAYq9BqpTYDBnymOwYFYFmrOBIZ3pGIMlsylDMMguRh0IZkhhYAAA6TMW+njaY2BgYGaAYBkGRgYQCAHyGMF8FgYLIM3FwMHABIQKDFEMC97///8fKKbA4Ahk/wVyHv8//L9OQAmqFwoY2RjgAoxMQIKJARUwQqzEC1hY2dg5OLm4eXj5+AUEhYRFRMXEJSSlpGVkGegL5MjSBQCFtxILeNqtVvlz00YUlnwkTkKOkoMW9VixcZraK5NSCAZMCJJlF9zDuVoJSivFTnof0DLD3+C/5sm0M/Q3/rR+b2WbQJJ2hmkmo/ft7qd995PJUIKMvcAPhWg9M2a2WjS2cy+gyxathtGh6O0FlCnGfxeMgtHpyH3LtskIyfBkvW+Yhhe5DpmKRHToUEaJrqDnbcqt3OuvmpOe3/G37we2tK1eIKjdDmzaDC1BVUbVMBRJSoq7tIqtwUrQGp+vMfN5OxAwohcLmmwHEXYEn00yWme0HllRGIYWmeUwlGS0g4MwdCirBO7JFWMYlPfaAeWlS2PShfkhmZFDOSVhl+gm+X1X8EmqnJ849zuULdnY90RP9HB3spYvwq2tIGpb8XYYyBCnmzsBjix2aqDZobyica/cNzJpaMawlK5EiKUbU2b/kMwO7qd8yaFxJdjIKa/zLGfsC76BNqOQKVFdG1lQ/fEpw/Pdkj0K9oR6OfiT6S1mGSZ48DgSfk/GnAgdKcPiaJKwYOTQSsoWZVxPVUyd8jot4y3DeuHa0ZfOKO1Qf2oy6we2Je2wZDs0rZJMxqduXHdoRoEoBJ3x7vLrANINaZpX21hNY+XQLK6Z0yERiEAHemnGi0QvEjSDoDk0p1q7QZLr1sNlmj6QTxx6Q7W2gtZOumnZ2J/X+2dVYsx6e0EyO4v8xS7NlrlIUbpucoYf03iQuYRMZIvtIOHgwVu3h/Sy2pIt8doQW+k5v4La550QnjRhfxO7L6fqlAQmhjEvES2PjI2+aZo6V/PKSIyMvxvQrHSFT1MoykkojlwRQf1fc3OmMWO4bi9Kzo6V6XHZuoAwLcC3+bJDiyoxWS4hzizPqSTL8k2V5Fi+pZI8y/MqGWNpqWSc5dsqKbB8RyUTLD9QokLmA4dKGjx0qKzBI4feVQZNl1/Dxvdg47u4W8BGljZsZHkBNrKUsJHlMmxkWYSNLFdgI8v3YSPLVdjIUilR06XmKKidi4THJng6HWgfxfVWUeSUyUEnXUQRN8UpmZBxVfIY+1cGSsmhtVF6zCW6WEry5qIfYAyxgx8ejczx40tKXNH2fgSe6R9Xgg47UTnvG0t/GvxX35DV5JK5CI8uw38YfLK9KOy46tAVVTlXc2j9v6gowg7oV5ESY6koKqLJzYtQ3un1mrKJbg8w1jEW0dHrprm4AP1VTJklNAj+NYUmvPJBryKFqPVw17UXx6KS3kE53AmWoIj7fXMreJoRWWE9zaxkz4cuz8ACpqnUbNlA93mvtlLEcygd9hkv6krKenEXxxkvtoAjnkGvvhPDJAxm2UAOJTQ04BeE1oL7TlAi02mXQ4Mj9nkUVP7YrbiRPSpqI/Bsp1PuhS6k/DrHQGAnvzKIgawhNDf0NhXQPEI0ZJOVcbZqOmTswCCixm5QETV8G9niwaZgW4YhHytidefo1zdN1EkVPMiM5DK+ObDAG6Ym4s/zqy4OU7mhpKhw1BoYzLWwklTMBTTgrdF2++j25svsEzm3FVXLJ17qKrpW7kExFwusPc5BWipUAdUbVdgwulxcEqVeQZOk19UxNDDDX6MUm/9X9bH5PF9qEiPkSL7tcGCjz8EY+t9g/205CMDAj5HLTbi8mDYnvu7ow/kKXUYvfnzK/h3MXHNhnq4A31V0FaLFUfMRV9HAp2wYp08UlyO1AD9VfcwZgM8ATAafq76pd9oAemeLOT7ANnMY7DCHwS5zGOwx5zbAF8xh8CVzGATMYRAyxwO4xxwG95nD4CvmMHjAnAbA18xh8A1zGETMYRAzxwXYZw6DDnMYdJnD4EDR9VGYD3lBG0DfanQL6DtdT1hsYvG9ohsj9g+80OwfNWL2Txox9WdFtRH1F15o6q8aMfU3jZj6UNHNEfURLzT1d42Y+odGTH2snk7kMsMfT26ZCgeUXW4/GX5TnH8AK3FNYwB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNjEwMmiBGJt5WRg5ICxhJjCL3WkXcwNQmhPI5nDaxeAAYTMzuGxUYewIjNjg0BGxkTnFZaMaiLeLA6iWxaEjOSQCpCQSCDbzszDyaO1g/N+6gaV3IxNQH2uKCwCSwSUpeNpjYMAAekBozSDFoMKgwnTt/wcmUQYGIP0eRAMATqYGtQAAAAAAFgAWABYAFgEYA2gEvgZKB6YJigsiDVAOAg7wESYSYhOeFKgVjBdWGNAaShuqHSId+B7SH8IhAiJCJAYkBiQaJC4kPAAAeNq9fGlwXNd15rvLe/ftS/dbel/R3ehuNBroFTua2IiVAAiSIAmKG0iRlMRFkiVS++pVtLzIkWPLURwnjmNbcSTbyiQZJ57EGY9nEmcmE9fMpJJKJhnHlar54alKUqUftjj39QaIlqLNCkGJjdf3nvv63bN83znnNgOZEsMw34MWgxjC8C9zGDBwIF82ykambCRLz54plaD10/9bAi8xmEneeAW9Ar/PHGbOMg8xzzD7G6sPnT5uYo7/2Ien05hwcJHBhCGYucIAhucAv81w9FeObDMQaksMQp4luh67xbCszi5fOL95cH117+zk+HA9X4gLnJOv2+VSfQJk0pl0tVKv1WvlUhTUa5OQvhwFJdsyRaAB+ku9pEFOAyrUAJcHaXolmciki4Bw7r+duXS8+zuoJwgd7NiuLDadob+5P5bp2I7tjqQrAKeS6QcZ97o70rHLjnt9mVTqixIHRHt0yI6lSmcnBflzf6kIIoA6z7Nf+0OFGy4IWOEwP7EgQw5BAIv9HBRE6O2ZGpTUW1eLji4YIa/msTI+QUVjADU+eRFycQSuX3/18cx5S9M9OQV5ZZ+MAWdLcyt6zQc54J/NRryCMLLqQazPwuxYtEKfKfIO7J06GNe8FV586oO8qgKAOPTqP776PUvwFgRoSvy4biKegxCwRFU5wYvFZUdzDE9C5S3DG8AwBfq2z0KxtMl997v/kpEFwR6pylY8ZOoCAsT2npzXnp8bQAIMzI/0miJyOAiSYd6kWhK98UP0efjHzGeZF5hvw+sN/xfvCRhYlRNA1+aB4jkLROEc4ER2celFYe1wY4NRZU1WtSsm0AygezR9m/FQXfNQnVC8gMEKs01VixUwu80IjMgJ4jYjy2ALAgCoynAc2qJ6oy8xksRvMTyv88vBpRclKvooA4EMoHzlnS7BvP4KZnMF+T1cofUZAu/5ZyjQFQ7fvAI1TVkF8vbbWel15TcO/jxESwwv8Se6K6DlI+6fxuDnngPM7/3uN7/+0m8+98LnvvqJj33gyfuv3X7hzPbJ44cPrixN7xkfq1X6+yyvJjKfBZ+1ODMPEtTsJ0DT8uulluMolxxbgw71A65ZR4D7r/uTTFAf0XQjjk1U0PIG1PXUqpW2D0nSa+oud0KdCfUlGTrMdVG1jteoZNLJhDvQHdsS4Qqh91EuhUF7tVTJad5YtZJxF6qVa06a3i6XSDbfL7tT0oA5AYSl/NNfUllRJHfPK0oScyziNEnK8L4NxedAMRzq31pJFlJ2Y5+IWIln1cNZtTY1uRbA2lDJ8WJnIbXnkxNETwUbPb6Yx8lbIdTICeroQqFxbO+JY3K8fCCbWPl4OdTPw+nhQadYZqGDeSil7fRBsGUUZaso6VZ5fg9mcZyVOCzzgLoSiFWDi1D/dMRDBi4n7/FAEOd4R9OxyEvpku3MTstmOmFJ+Xxfaj4RC8x5ahByqgwBXg4ZqbVbR9M64sM4fjbVWOOAYFb7enx2IsghJRSC6mLxyBMHLs+IUDZYdbkeWY/wRr1gza0kVQh53bDVsaF4ZPIakc2GFYv2auVjBxAAaQAgAiznKiJgGMgEbvwIleH/Yu5mPgTKLw8DFoO2JxqnqgYYCVxhWIwwi65QFWQkgarkTqzCLIe3GVGEW52ARbYYQnTiWpP47oSYpOO43uWdvMubcK3L9/hDV++5+87bz586cXBjcX58tDQwd7gi0wAMTGoniWRT982mQtdKbX0v1co7BkQSLZvpGkO14hpCO6rS2W27mWgboWsLLXNKV1uG0xrg2glbSXYicnkETEBXHBgyEMfhci5a4cALnKuE0uTGl+4CGhtNilpk7T+VB7FajaSyqXBgIFUVQYCG2Z54XpNZGECCrPkCq2nBnrRJT/zecd0zNUc/0JDkfXIksvVgzQB/nlG0sSPjSxrVIJa6pL9bT8BfQz4IUMhaiEIBHQHagaVnNQBjYTvQ23N6VBXMpeGFUk9Gsstzecx7bSRnKmFdJgTKsuZEEplxCRVVgxSGy8s8XJiOBRcP6WAkkqueqvrjrLE5cqtFwxoEg/eXaSydufF3aJPG0luZB5gPg2ca/tvOiQhwTwJF2gSisgp4ES/eBRSwsPSiQvWmwUCWYyFH953hqNK7+40EgKgzlYGkCNI2BVd4i8GYbriitBz1ElWCXfqnvWs5LWMI/Zzup4fKmejKwRQcYqrHbyjvdaU0Rt+6AJEhIjnRlcM3w03D/tD7H3/0YWoTx45W8j3pbKaQi6tcmALLjma2nXsrvLR+yiVrR6crnWsUOHbeo29wlr0TclqRpR+2wkkUdCQ5tXHQGqMBajwti3INhLh/6e92Gf4w97zpOX0wrI6qYI+EEkvBupdqkoyRwBLO8+hsNFaZLMbLhy4UBr8yLALM+gyNlwgKIiCPjmyeuSVdk+TUQCjaZ0Hz9v6wGLWq+w7PjtVlIBe3ZgaWZgS/6ST6nlyr/PQnvSzhaegRk7wBYPJBpC/6zMU5Th8F3Ehieg6zhMIzRKC97+MRpTo4tljNTQfku30AcoSVVAHJiYB466WLixs+FkuAVSWMe1UctMcv3T8zFj1JTFUqPXKydiBHkTLxDL1w8dXfYl3DYFwf3n/jFfhn8DvMU8wnQeJlhYIK14e7cGmZoR+WsHSjRUVQRIF6PqAIt6p0iCQz0hXX8fGu4+MZReQVd/9lhgISqihNeKG5AKbpEnXoal+Uylx8M5mUGrGIbL+h7F0SG0uvKwxceifSqF4mAfOxp5947Nq9F2+/cO708c2Di/Njo5VSvtfyUn//FHhKo7inntjRPrsJdVzv22ZQkyDd9cOUQO3W2KZPN9vopwte2jiljWrodaep1C0i1blqtdT05rEq8FYyCSroR8Qwoz0J4qnt5QGyv7Z/77ZOSP9XJAAI1B9dzavyZ4Cw0GcZoWTeH4mqAmEFRbYMPi6LiqTGqZsJL1pcZjA2iiFKCzWTL4ZKSQKlZHzZkLF1+0gxPCRC6B0zuVCBp7Qr8Id+PXOKt9O5WEKAmSSWdHn+XKlgBsLOMxNUihQ2+ZX7/fI5he1b8/CRQGjKY2NVFOhkyUp4RAeyvNTn9Wi2FgRCX/5Ar5dFXl6gH5b12WeLEb+oTka8e8NEldkwlKdzCoAicCg8on4HMZkbf43+Bv4tM8l8mXkJ/KBhhgEPXngYYvQ+IOCPrkAi4DYYWaJaTUEVQ2M44CHgLzH0I/DoEiNgggVyhSESJtIlKhQLCLsoWeYk2aXRTfLchPziFnWCutghKz83kWZTpPLzv8vAz/suG/PvUBpHyYd4oisUtqJAHDBf/tKv/eovPfepZx564ODG3tnhWn+f3zE0gTCTYFJ1OUap5c5dW3B/OpCHwqQmBGqahGN3BjUNswOB3B/QMZ0mBkrucJGWLbUG1ydgM3XRigjlVvaDRpRWIHK5BmyJTtK3uV2ExjXopqHS0NK8NfTniunBQAhmo2NLWbFnvHKxEZscXw95EYA+hPkAUIub924BoWfk9w8RI2zlp8disZ/8MlZDR7K5ylSmSLhMYtbhvAqnBR6v6R57OOOv9UNX5wWjtzfTB6WALXO5oipHgWjVVYAMBHt7ANENxGaMbMqXvuNcONE4mvIH870+Hb5gqMCdDJ8ibChA744PxDjoSZ8sxvuqQ71BaCPoAYDz9KrcZG5+ReXyA8uXeYD5cIAXfvo9lXjkWCC2VJyhm2gGeY5yJH+BRqRg7GA1OBKhYcRLWHNgqH6ahRgKoz4uqmhRkwaYAgK6yrOOH3BgLhuOHwuSbGEgZcGU5QdYtoDgo/FHvvFX8O/h95lHmI+CLzTUDwFGPAIgP0vJBGrbb83lrwzlrzINWTxkKOaGDMGQNAku5xJcSbqJnZuoQwDeyWwddazyna+tvqu1/e9i7Ub5zSdyDOLQie58qZ0JiALmiceu3nPn5XNnTx5f2zczNTleLYeDisQ8Ah5RqE16Sx0ra9qZ2YFSKuhCNtecuG6k24mPtQ6vT2QSKjCpbUZANwpSjtK2rEwl+Zq0YgvbdcgOaNMXqxmD/yyPeDt6W//t07K4QD+f//BTUxM65AsDDXR/nF4gANu2qsh+2xdIXJ8ZPaASR2lxdUmnuovE+QGTDwQjfXkbsmI2pQrFUYTs+PGBuN0zvzml8CKvB0YaOeKDI9FIOeR8ljM/d5cFJrAQTQ0+mL5FhmMqH4zeeyBrczAkpEfgI15o8hBroUTcSI1NJwf3RIOqxxxQmhScojYscaYPco4ztpTGBPBRAgsZHg/EBzJ9s0NTPJZUJXhicsCjlMEhsxyK/BcViqu/EXXxWvjGX+O/pPbyNeYP4HpDpChOwUBmYNtWzjAcy7Mcf4WBGtIgpavI0JBxiVEMxlAY6qSpAhDWhUJY5F3WymhQ1LYZw0tBkUHRvCBQbfJ4pC2qHPSVLKtbjKp6lqia6FuMTv90guB7v5apd+zw3+pzBf7NPlfjxJstIzEeInm233w5wOhAP9FatbOW2gqzBcB8/cWvfvkLn//0M099+PHHrl09u3386MGNlaWZPaND5cF81ufoGk+Yr4GvmU1460JKN2jWXGblpvJdS052UC811QkwCbrxttoyRxW0EoLdwsFOeq4VjukFp1Qvt/1Dm6Ul3GntkO7G4UlAZ9vtENtleVVKyzqxmOsmOpqepOMMnLZDOiPrbDkQQCJcvzq6qCZuG8IEGjbZ+PcegDMsZAH1CD2hg7Kpa7bjkTie2GKt36Pw4bQuhQf7TWN1PIQIRqVfAYHYsHDuhTXet4ik/uM/QDwluYE93vJwabZVeTAMToiGhgcF4woRYkrFE4gO83Bs3j/05EgwecZCrFxwPQ0upUVj/uEKFIQgeWayvETsXoUA9Qsbp8TADCtQaeIVP4K4SFmgG+uFvOqNGqrtD2p046UlWwgGrKCXlRzRPDAWVAV+z18CIH/wugrHdbk6eo8BQM+x+MGBInsCcZiKEKVsoC5B9pw/mBmy5/0ASOjAmeDEls6PC7LqiRepJ4LFFBv6wh6XXALfeoP6ltEbP0Zfp75lg7mDyTd6FYrZAFg8U8oiZp6SRRf7ueCwE2jW9tWTCewWkipdz55uemmqBO3Na+4W7BaIOuGilcTKpFs72eZRGmzTpUwa1Kq7kwFR0IkTo9Ue13krPAGBcFXW9dUDITN0BEqHP3zlsayMsCCK/J3L6d4efn4gQNkA8iMWIVb1XRlR+NR9M4dXBxd5AP/BAGj9gVHJKgqwV0QiTjWG0+nR3lH6YOgTJLaqsfahYCDORjYVfeThhWiPwXop0iXcwTPlYyvQtyeesyUfgiLviRjhUGlNxVJtO5qLxjCcUUAgNyaH9g4QvWhijRu5dV8mzbi85dir38UX6TM+x9zPPM2MNoYCgAFPPjCI6KqL1JLBXa6Xv4uhYOouht4+3mQwdp84RqsPPbi8OFTrSdge1oXHba7YMg5I/5ZrnfRg+8nufrCma7jupZ2Q3UGz3VQ+Bb/VdKYfdKE06XiA5rZOggkIzLZvoIi68x4+IAJqNJ5n130xJPIQUfPgyEC2XwCYGkqAIg6OGNemNJ49hYaWPKwiI5ZXndptXgSRiB764MaY5F2lcTs0cXf5Nkd7GOFUQQ5O9t5x4qEyBGvnhpN7ZC7qQanliQM/+aNhRGB+7vIKgHjr64NqCAP4n7EmYKRcfDwzy9kG5nj6OPV0XwFLXscLoeyPeUzP4GkNKfz9KvT0OjQOC15PJk6Vg+7+08eHFThrksScVYhpDmu+wEGgjOTCyfWRVCmYLEF/ohA+nbO8GVNBw9cOHPjJ7/QDbvjkrcAulPWKB7di81/hb9K9fZH5XXi1YT8MJPFRQCkR0AUfgEoAyLBTqjvM0FvkOXyFobQWKLAZVPi2lxdcLy8wuiHo1Mt7gAYMzfXyUAbQxXxNTrbj600348xsUfUymQ7qfW/k60wnHr+X96++x/fvf0/vv7HxM6JFRiKitP3Wl0CupzjRla+20XmCYX775W9+nerXi1/64i899+lfePLxB+67eDbjO+svpJLpXq+bRU20eXITSnciZbIZ13eKadQltz3trijOJc1kousNyq+J427gR51LA/VSK6x3MAH1CCW3XJFxF2+xZup0dmW6dnuebgY3ydXdhV1nAs8RC8HJlcun91X3wnbgtGQd1/tMT75UmN23QPwGElPJYFCXda/FK05OgQaEhhPZYyM+mvHwoeEacbgEp9ZyGHJ87XlIg6qW1gEPydb52JVBKCLdoylQRsmtMBsmA/ePiojEc7pYlbjqlGhQEi0aobUBUSoPBZR+DOWc6PfJQhKBLD58eXFPb9arNYMncSJhopX6T17cFEIWxrKkK7LkC4kybwx7AGHDqRoLwn5fUOGUBPZRDKPVctDLo/m/QACACKZwYuRjffMcQIrCAzCQ5Hr5sfNRTkoMTBTD/iHoHFYhp9ihNQlN1sqVYINDY1ISEK0ZR9QbP8YS9TVXmQ8wzzJ/2tDe/wgUBS+QuRxQgEudHarmcwykj9xN1osMgWIzFSoDrpn6ZLZUSg+pGgtCMz+vufAUbbEYNovPitJ57VLKma4gnhJLXtj+1wS+kZhmjvWZTzz1wQcfuHTH6VOHDy0vjgyVBgf60z3hoGMxV8FVrZn32YUUEu3EjN1Ro25WtdWB8toeFCcC3ezQBDu5qyY20VE+qpvJpm62mlFG2+Wves2pNPtUEGn9Sm2IjuwqbwW9lB3sza8OBEf2eoCwZvTPK2BxMxpeKhDDIbFTg5lEiB865BcnZ810WNpEdsOp1dMkaAOY0xRHdYQwGwl8ZCiA+bFk7mQ6zGLRBWosSq7HIz1OtCGkkiiaJgu1yWJq0nAEXPgOEj6yMqSBn/wztmUvCKni3rS/Ar+fSxcmpkpBydGxcqc9OiBaom9EoFQiv2DIgI0IbEiCACcErk/lOIBxQpN9RlTKk9xENCWY6UP+ZIawNFwCmI1F9kai/ogIULYsHKtN+sz9js6hwKv/xKLUvrEJ9qf/HQAii1jiddmFgEzkxp/hb8M/Z55gfvryJkWObrXALdYOMAgQgIhbJ2XvZogAeIbw263kBMNwWwzHUQIEYbNGZeIOiXx783TcqYe9/fUa/W8wBTKYhfimqVyrdkt/f4J5/OEHr95z6sTqyuzU6Eg+Gxc5q9U8Vdv5cVEshWCwyUd23mn6X9Kp43Kk7YMnUIlSHcvkdivwZAuQwR32U+1MU2FnWKfRak3N2GRsNrFnb2buVy9NxzgLYBFdwf/HqQb9kE3Unp0anBqyRf6riPehsXE1XxpvjCEkJKfCIYQBJZ46lzWnarYZ1u1qZTilhPu1+X/oJ0Jq+IsTXMY4XPStTvdG0uNRyR63SSluOFm7aEB1b3L9cO/s/RsjIRGyCnySe/W34sulIsqOvrRSapS9ivQZkaCFFXPm9L3HDxdFdiyQpogNcpAd9E44guEtLs6snm3IwUH94Kv/5CDYd/TQjw4SEFbmSv7jq72haILAqKhGKl7DDDJNvXPzHr8D/wdzDCgNTw5ANAfcriuGwwAwnUx/moGIcjPqpThCoTRHuXGzDkUVx/VKnV64tuq9ldEm20E8b1124G3IbiR/diBgWMCe6I7HLSZvAebI5trKyHA249F5jj6IY3yXsXeUkXEJuN0M264PNTuJshbr5izSJVWEo+pUr427TTVU2drXKHzYTbBdQj2SM8WFo9kVUGChrnPSoM7S+2c/c9vcsoB46tp1v7Ox9fxFEcEExEKGQ5Ik/3L5ycsBW9rukuAlGjBD0HNL/iL4TfppsbG+Gno0mI0gGgcJ/8rFuSQWUAJgXtaHHvmb/2kjqi7G0rqTng/116qa53+PfT4l7HBXplm7PHnjFZSC32GizPuYqw2NpRpxN1XsIQmiZvLY3YgUNW7EYuSWK1nMsS6BbWK1Zp9GM/vpAc196IyjkjkGbnfH74w60tBvO7+2b3G+WEjGbTNGn25+F8sCVqfAl2xTqGZoaRNZN+rs8hkuR+t0XpabLZClzGv6m1qJ046Ybr2xic3gCfVyfxByoznZDGzXL2wJ5vImkA5efWHPX/xiOO0zlvZt7R8a1ORMfmT8oE8Q1VhBgJKKVI9j8ZSSaeOKEN/M1YdkStASdEOINXngjmRM0PrHRYTtHKXI3+kP9nByas5iuVh99vrAURWg/cs6Of/I1zZjty17Zbl04YHnx4p1JMXym9eW/QIEQDQESrolhRN5nkX8IJKWq3OXli0AVQ6KkXO3PLDgCDCfEWn0k2g8bO7jUcqbCPxT5jrzGfDDhmcfgIwJRPgkDS/3AZ7gbh0AUtQBRQpmAP17SaJ6SN2523JAGF5wXTnD4COtFghBaPpxk9upA7z92Tq3Uwd4p2ur72pt/7ta2+1JLL/5bIHhBO5EV4hLYoZvmuU2e0DMbL/ebI4TNtvrCtzqkRZXCX7qmesfeeSha1fvvvP2C2dOL81PjJUGknHHkl2ERwMYl+z2BbfSCenkTq5hd3Dd3d93UwdI3TW+KGh6qxZkbNui68naJtTtKLRaLYVu0aHWrtU3Jddd6OeUmxmQCvw9yimI1yOxUJLZ+ytDjtR4+vCRO+aDecImIpKc6i3mhjwEQBiEAhSixU9O6HyhTLRsb+36r9h17fI4kYqIFUiYorDewfi1Bu/zKqnqkR8cO0/dYXichlG/F8FKauTj8/WCp5dgTPb2SK8geOo8EEfX434A/gD7IXJ0iceqJH5hdNQr1VN9G5HFkEcOhCGJxIf2DpuOB0ApYPjEUnHukgwL+YBdrpczd6hA6sVixCSIi1D80ze2Z75/modGbWD/6QnXha5ZmhWArDcYWJyuNHxOQNVDjXvIE58AYGW8kvG5Nlm78WN0D+UXdzIfBPc2xONAwPsA9fFtWyy7QRkzYJsALAEBYcoIeH6nAY7dovyG1d3WofZLttPWN8JgIhAsuJ4WEDelSFwJ5K1JkJq9UB0JgkQE6dKOIEZCRHpLcjLv8k7e/U00zSTwgfc/9MA9d99+4ejhjfXlhamJ4XomFfTHZTe0dDtc3Ujtlrp3it2Z13RBdbRehSWr1SviMqVmCG9H9SLYYd4to9kJRN2+K9R81ek3ga0QBRbnt/b0SlglENgaVlSZz/xCsbDfL1jDH1pf542+3MGwIkX+20dYFoOBRUXNrIaIAZHMFu2ZccujLBzxVDxzjfrG7GApm8kPRcRkeX3ppBetNOKBqweGRPgVkTN5NhKKRVNSMhgdafjAE0Mb1YKmBQ3CYp4AEvRHgva9Jb3mCeVyd8/neSD6pyLpaObc36wgGqL9kK/0CFAuG1Wb9BAva6bihYQjSiGNszLTZx45pJvVKgnfuVgWX/0T6BEJfTaUwQoAiiaCrvO78SrV+atU5z/NfJn5FvMd5vsNZxVA7rOH9pkYw3JfFMmYb8PNEtWfWQZDGWL5igYUiZHcmo1MSQWSeTeFw0rIrdBStZAYF3U0/bK2RLeJNCtBO50V0z8rhyIQzFEQ8kbyfkbKkUbkha988xtf+dYL3/qVzz/7qY9+5InHH3v4zsuLw33ZfDqhc8F8vZOgb5ddO05wl9ttX6eusOV0uw2or3G6pdZBkSbucY9v7JB12+J2TnvQxfpBU3Ndec11km181IaZLVQD3C5wFz45pbbbR7tYfn2gqc2E4loKXh/t9VN4AsFwLphcu/bYyfqsBn2VozN7378RznNgyrZ9fUIyHaDMIEndMzcX8c7sZcVCBWr7I4GPP48scs+cUuBYqCl8Aknx1JxkWjLQ+YE08fAsULx2iqN0sNpwAPXxPlnThh45mO2LeuW1hMeSfZQFwW/oSB9aGlC9vBcBcaMSLwoKFz6Y8IhUE337/MqXoJvjgfdbAfp/3g7omS/+u9MjVQULjlM4GVsJc8qQqo8r2Vyvh6ImzcBy9nTemBJBIW/y+/dHPBcVkCJBXQSswAupPlsu5PtS9LXlBCL6TF2M+DSeJVxEVzR2ZatHIABg3/En8rZEEh7bLMg+C3w1qWOldGzFBgiG9g2++jRhSWZWprRJXkkan6a32Kono1fgHzO3MJfAEw3tgg0ppAcM79KqTgPGII3xiBPcCqWLkrHb8gl5lqonT9EBZdHbTc2m2riraVV++xNbXarKO10x8E5XdPMJ/W8+ETDUD7mnJzSu2WRB0c5djICEu/6VKYSAzfZigKy2oRFgTp08enh9dWykUsqmomGvy+duAbdIP8Pnmr3b6Z0TWvWy3TS0HHDzrG1DGwU39ci2U6+7IkW3YJpONHMJrWNdzYLpaK/mu+1yKpaxiHbfTE0EycLVo/u9rFvXgYBFjccKFQ03Js7L/mjqM/fJXJ6T9vQeu001PEN+Njpw/Rk+fEtAbPM8tElMzcqZVmZIvW9WDgQp8QtFsXNXb6EaEABXSGZZpS9dzkQQSyQBg1QwXpDkYiwW6638wAOLhlO4JbGYwra9lGTTvVdMUNQtxWhVLKdEnuX6Eqm5BXPwkJobpFty7MZfoR/Cv2WugV9sqCGq6RdoBB8FHNtR3irdE8Q3y+sCj4RLjEA3hxVafcvE7Vvm+U4TDSG7slPSO5vcSlEp72Zl9d2s7H/nKzdKbzqPUNSDT3Sn88tdlT5z+sjm7PTIULWczwZ8Hl0kdE+uSbvPCnUa8zqBJZkugk4LEenWfl+vU+g1ybZqutsPuKs/tgll+mmkqbWaAqlMcPooMP/hIc6IeAb3joR7Is0GPS3s14CxFLGCufT0b69pzvDGTV1BQuxkJLj/1sT8dHhwQuMI7JktiZFsZOHRuE7kQtiayQcp1w0gLNuVxH5wfFnntr6pAcTHfJQTNRvtqBvF2DpcSY5uDW4+IKObW4A8QlJOfrBwcTs7UZIgBTBalAecerKR8Gi8yRpz/RmoUKruBUCwY7l9vnorD1anGOU/UIzyILOvsbRGw8vFw+PUlOAi55bnGQiuMASxiLDuAbEWUds5F8Cy/BYFFG4rvkvLTp862pftzeUTIoUHoLLThvyaJz6wq2WDe81Jk3bkd3Oer+nXdyvE3RnN5g4XA7QSU800fKZ6U8sm7BnolbmNr9T9IoRKNhNNZIdFTMMWx/PW9NS6bDW8EBrfvjTat2cJSoP497kiVVS150gCmvd8ZCpUFHxIT/7StXE9yo6Me1SOpUGV1zKrC+wAkoLa3MB0DG3vH/BE4cmeHsDfuZGKEV1jfZY1eaDuAUDhSeXOkVENlnnd4Pe/lPI2RmV1Zp68+i/8fFaF3FgWhn79xQNxSoT6/uOvHwxWFMCP6SYPWU60EpNyQ+dNIX+oXGIfuzCdnHD3aoju1X66V3cwDzTECA2opwHdpXbCPMvQz0exjLtPHAPcBCA1sltpSHYbLdrpwjbXyL3uWPbS6ww+0lDP37p5aHpPXz47bBD3lFGlCfBwYie519lRd5/biG93hY5w5Vp3N3c3GXRPTiTTOz0DoNuuA9BAJJuEbrWHxURBCAdO5gRz3fRD0RuKENZejmFdR6xYrTqqYQtAUhYn6vuHSzXBPUPFT4zmZov5XGrhVEQVpBin1qZ8KrUr+tlzqXpAhr2KZhURR+EVvcbi9IwA+3QrrLAAC1KAkwp3hDEkUuPvTyZzKV2UZ5Y2HhoZjHOmzLG4p1E8O1fNpqY2YzpPYRDWhp+7Mt3Husd3AyjnhFT6ePtv/BhDumcfZdYb++7YghyTs10ovsggIABE6R5PGMIz7jkwQo3dNS8OM9x26wwtvRHXlX7oA488dO3eK5fOnlxdGa7HIrW4yNl5L7WSSUif2Cgo7YDmtlfrXGsGcLC7tNDKXXTzgp0t6FqPu3mt+i3XbsPy1uqv06Hl1oN3GnH+MZovSXJjXtZ5CoWzicGIhm9ZHz6yl0BdkJXBwUK+/yDlfOqxc/lELReqzEV4yLEA+XF5ri9sR3P9914pabrNJ0LSOusp6wZ86HsnQ4CCaYVM3JoJSf2pw6ZjdlqtLCBOVHgjngtK4BXZYY0TCzKPhd612fuXQ9LtJxqnl1lIsLl497n12QcpNBAWDlSzJ+bTc70G3awEZZQwuLlcjhdz/bccGtQ4VhocsV4WezYc3yd/dCYCeMzPMjdODlAwrTgBj9FsoEIYK4c8MOwEwrJrk+fo/t5O9/cbzKcbn0rEoKE9q0MdPTEIWebwEhTJ3aNQEtlFxtCQZtBISFiRJeIVRvfQUKi7zAsrgCVuE63ISJxb19e07hFqN1nceikDjmt5W51fdpvdn/vMJz/+4Q89/sh9V++6csdt2ycPrC/OTo7XywO5SMixJIH5BviGtxkud5/lowyr9ToCm93m7nvJzvmllqNtpbvca9Se293uJZf+d9hYKx1Ndhp+ukG21Vyb2d0n31Shpj52swM3Hcmq1Kr1nZSbKxWcSGdV37k944VH4xRPoOkv1Hi/4/MNhAwbs1YkXF5Z7U0RE9HAC2FfnyhPc4dNbXZNwNQuATTZdJ+9UGT12rgEoYBWV0f6Od9CQo94TTsNjYLIS74hwzNzoK/uDxkeA8FEAtvKcH2gfCE7KIGSypshZ0iBAIaAICAxHjiQ58GJbCIcb1yIhk/ZMzEFLX9MoAFTU8xeW+NEbJoDC2erAMjIgpT4bS+I+1kSvixjIIn9Rc8YD9BYvc+mDA7tK8YkkDB8gUFZTok4hnhN8pHwmcq+pIAcCPiEfWayf2CitmeAlfsh8cdW9yACEdR6DE3r708P8bAVv4dpTPh2M9f9SkM9AHi4SLHqMn2GqB0XxrqOhjomwp6nwIv+e4kRJRrdRTeTwFCO4eZdhV0Q7lgXPJaah153yeDZZnHpbQhpjL7RfOAiQrf4f7OcndkUDYYB8767bjt/9PDavvm9U3vGRvqoissicx1cd7O/3nYugSqTW7EHltl1bR0l2wk+3exCByC2D160crvJdjLDPd7hto2nd1Vemp7v5nRypbzTcdgU+1yhCr13TV6f0M5kDZUXJf4yErAa8ZiEOMIX6e5FK1MsFsRCurQwkR361ZVS/9SBuD+Yh6THyxMEFgoye/yqSsOzykMR9fQruDYrRo7p+vrnq/l03OMPD5Zk1ymEIEsdEpCGreg+4CvkvfwtZ6vTJGtEQxYlfdLznEZCdpggIa78s2PqkURW4zEJ9o1cv1pdejBgZNbiFqT6p5iIBHxAftqgaJUr9/r9/MpJbzk2BpU7VhvZQES3ZveO0yFQD+iirbLTC8FAo9k3snHj/2Ge+r+XmD9i/ivY27B/4XEfUrSLs9AQTgCd0qZbge4egnXZ9DoNbdREqR4ontZXCkgAiQBzCJ+h8c9gBWP3NyOoaifjqWnGEqPrrS9gcJHJLpruKuhqVzBkVA2q229tgTcW21jpSmx/L8JbkfyG8qgS5wHz/T/57h9/63df/uYvPvvRpx6+/30UMW+f2jqyvrawd2qiWopFNIl5Cby047N3Inm7dcp2XoOh2g64e/46glTYSoc1vwal2bkCy5Tj39TjslPEiLaOSiTd0gUqjcKdM4c7gf41rrrVmuuu3vH+oNL6SharYxOtNHMrQUffzfYDoSdbPX8WargwbEpBPz+eGxqSzH6NiOpQfbisQ+QNeyCEF4Gr1dTLiQCOj114XNXmSvkjFC4hAGOc1HNHWXZ8Sv+opW/s3VSAlTldGPLIE0dSwYAgQ5aiOhyIqXmfMu7v9YSTYd+JfbE8BqOKYIbtPAJhiFXMiZyi6bVZHn6qZzDuSwSAESn0lA32J1+cKRUUITg+qUJwIpN2jy5V0ysCSCX8YUMyVFZajBdlGFN1rzeU9noom8oMhRC9O4ApfmRZJAPw0WMi6+2jlomRiwj752gA4uMSn3Yxq5VXsFi5swQA63FRpzmeMBQj4Oi+rKxzznpszo9JH+YC0bEBBQDK3CjDjMqWpVfpPSUDKGiUCoAIqpVWfvpbkk0jghRp1TzdYNDHnGl/FxDb+i6gwWrZKtP/zrT+vPVx7lleho5yx3HfAAxojXHf+//+h1D8eNqlVNFOGkEUvYu4phslmpjG9KGdh6aBBBcWeRGNCdGQEohGIcYnzbgM7Crskt0FNP2EPjdp+jP9iPYf+hs9OztWMFhrZcLOmZl7zz1z584Q0WstQxolvyZ9U1ijZU1TOEVL2luFF+i9NlQ4Tevad4UX6V1qXWGd1lPnCq9ohfQPhTP0Rt9WeJWWdU/hNVrSP4NZS7/C6KuMEmONNuiXwinKQGeCF+ij9kHhNGW1Lwov0p72U2Gdsqmywiup81SocIbK+oLCq7ShtxVeo4z+ifbJpyHdUkAu9cihiBhlyaYc+hIV0bZpUyILf0YHJCiUth5GLVi6mPHQC8pjpi6xScaTzBaVgRpY4ZKrijVOHfAM4EX7/vA2cHtOxLJ2jpWKxe3NUtEqsgMRuj2PtWxXeLbIs7pnm8ZDY6vMGg73WNXmHTEAWwPUbVCf0YUUHYsaQhI1eFucXbTswB1idAKTHo2oD/MAQ9Eb9TlADXvxYB73ASyE3IMpM1KRu5hPv/mQseZ7Uc0PeoKVzCKrsOnwm3/C/TPdfPdTGAXylHyZWQtKLdoBitC6cB2h95F5V+4qPpextNrC6dCpCELX95hlWjssirp8FPmO6yG3Y8vcyr1Y3vNKLv+Moot5dmkim4ky4uB26Ar9DcbJ0e0hzkuLczbOtbLiMzbT8fKIOEGkWA2TSQrlEY3x7WDmrrwYHYJhIMvrsSTHV8vASnx44YxvC6gLNJHJjzkSiz56W+YrVPFGwB2pgElNQnrX8RgyOkIUIfd8z9ycYYgzPr/EzBlls3EZVI3xd2VxXOIbz91nhcuIVTqWOMK1MuS5RNBToQJaOJWFELFCyXWX5wKU16D0sYcjP/flYNndyWRiDnjkXPEbEzdzL/fUa6J8rjHFk5nEL29M3MhhJyIUwVh0WHzX2SEfiJlbbhpG23HDZLXld6MJDwTDRN+1hRfCb+R1RMAiR7BWvcmOhsJLjJuJQZ5NXVAzIVO+jI+52+eXfcGkFM5q1WPGo4rhRNGwUiiEUkJohm4/1lw4qiFh/5XlvxG+7LH9DY9VgRIAeNpty0kOgkAURdH7C4z7IDQqIEWjYsOABGovTpixAhaOBamhN3k5o4dib12o+FdgJyg8QiJiEk6cuZCSkXOlQFPab03DjTsPWp68ePOhEyWe+HI4ztNX615vjsYMztFpfrp7ED0AAAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaRSx4=
d09GRgABAAAAABtEAA8AAAAAM3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAbKAAAABwAAAAcacggPk9TLzIAAAHMAAAATgAAAGBDYlkBY21hcAAAAqwAAADwAAACGhtNo7VjdnQgAAAJrAAAAAsAAAAMAAAAAGZwZ20AAAOcAAAFqAAAC5fVFNvwZ2FzcAAAGyAAAAAIAAAACAAAABBnbHlmAAAKIAAADPUAABjYYvJ44WhlYWQAAAFYAAAAMwAAADYPOdkdaGhlYQAAAYwAAAAgAAAAJAaTAtpobXR4AAACHAAAAI0AAADMdhYJpWxvY2EAAAm4AAAAaAAAAGiLbpG2bWF4cAAAAawAAAAgAAAAIADQAPNuYW1lAAAXGAAAAx0AAAePG8dPFXBvc3QAABo4AAAA5gAAAZy7xbiEcHJlcAAACUQAAABoAAAAf+LQSDp42mNgZGBgAGLxKS93xfPbfGWQZ34BFGG4NtFbCUb/PfNvEasEcxCQy8HABBIFAGV+DIcAeNpjYGRgYA76t4ghiqXv75n/ZawSDEARFGAMAJ6LBnIAAQAAADMA0gAFAAAAAAACAAAAEAB3AAAAIAAPAAAAAHjaY2BiamGcwMDKwMDUxbSHgYGhB0IzPmAwZGRiQAINDAzvBRjevIXxA9JcUxgcGBTe/2dW+G/BEMUcxBinwMDQH8cM16LAwAgAEsUP8gAAeNpj+MVgxAAEjL5A4heQPsUwA4iVmZwYzBkXMpyC0mJM7gyZIAxSw6Tz/weTDgMjA8PfM0B8lZmLkZFpNkMBCDNzMViC8QYGcxBmUWCwYH7BkA80fyJQz0TGG0BxY6B4H9BcENsRFQPFTgGxGIxmms1oAaQTgdiXJZzBAobh6nWAbgZihhQGBgBG+ykTAAAAeNpjYGBgZoBgGQZGIMnAKALkMYL5LAw/gLQVgwKQJQUkNRn0GWIZqhlqGRYwHWO6w8ysIKY4UXGy4kXFy0qCSlJKykqqSnpKh5W5lS+ov9Ri0mLRYnv///9/oBkKDBpAvdFIepmQ9PJD9WorHVDmAOp9ocUA1vsXqPnx/zv/r/9f87//f9//nL/uf43+8t7/fa/xXsM953tO99jv/r/7/e63ux/vJtyVuRNxw/Ga9jWta5oCxhC/kAsY2RjgBjAyAQkmdAWQIAMBFlYwxUaC8ewcnHjluRi4yXa6hBgw4qBAEkLxkKCdlw/GAgDWx0mKeNqtVmlz01YUlbwkTkKWkoUWdXnixWlqP5mUQjBgQpAsu+AuztZKUFopdtJ9gZYZfoN/zZVpZ+g3flrPfbJNIEk7w5RhfM+7Onp3vwoZSpCxF/ihEK1nxsxWi8Z27gV02aLVMDoUvb2AMsX474JRMDoduW/ZNhkhGZ6s9w3T8CLXIVORiA4dyijRFfS8TbmVe/1Vc9LzO/72/cCWttULBLXbgU2boSWoyqgahiJJSXGXVqEanASt8fM1Zj5vBwJO9GJBk+0ggkbws0lG64zWIysKw9AisxyGkox2cBCGDmWVwD25YgyH8l47oLx0aUy6cD8kM3IopyT8Et0kv+8KfpIa518yIr9D2ZINvSd6ooe7k7V8EWFtBVHbirfDQIZ4urkT4JHFQQ0sO5RXNO6V+0YmTc0YjtKVSLF0Y8rsH5LZgX3KlxwaV4KdnPI6z3LGvuAbaDMKmRLVtZMF1R+fMjzfLdmjZE+ol5M/md5iluGCh4gj4fdkzIXQmTIsziYJC04OvaRsUcb11MTUKa/TMt4yrBehHX3pjNIB9acms35gW9IOS7ZD0yrJZHzqxnWHZhSIQtAZ7y6/DiDdkKb5tI3TNE4OzeKaOZ0SgQx0YJdmvEj0IkEzSJpDc6q1GyS5bj1cpukD+cShN1RrK2jtpErLhn5e68+qxJj19oJkdtYjM3ZptsxNitZ1kzP8M40fMpdQiWyxHSScPETr9lBeNluyJV4bYit9zq+g91kTIpIm/G9C+3KpTilgYhjzEtlCN230TdPUtZpXRmJk/N2AZqUrfJpCU04iv5ErIpj/a27ONGYM1+1FydmxMj0uWxeQpgXENl92aFElJssl5JnlOZVkWb6pkhzLt1SSZ3leJWMsLZWMs3xbJQWW76hkguUHSlTIfOBQSYOHDpU1eOTQu8qg6fJr+PgefHwXdwv4yNKGjywvwEeWEj6yXIaPLIvwkeUKfGT5PnxkuQofWSolarrVHAWzc5HwUJ/I0+XA+Cjut4oip0wOJukimrgpTqmEjKuS19i/MtBKDq2NymMu0cVSkjcX/QBriAP88Ghmjj++pMQV7e9H4Jn+cSOYsBONs95Y+tPgf/UNWU0umYuI6DLih8Mn+4vGjqsOXVGVczWH1v+LiibsgH4VJTGWiqIimjy8SOWdXq8pm5j2AGsdaxETvW6aiwuwX8WWWcKA4L+m0IRXPuhVpBC1Hu669uKxqKR3UA53giUo4nnf3AqeZkRWWE8zK9nzocs7sIBtKjVbNjB93qujFPEeSpd9xou6krJe3MXjjBdbwBHvoFffieESFrNsoIYSFhqIC0JbwX0nGJHptsthwJH7PBoqf+xW3MgRFbUT+G2nW+6FLZT8OudAQJNfGeRA1pCaG1pNBQyPEA3ZZGNcrZpOGQcwyKixG1REDd9G9nigFOzLMOVjRZzuHP36poU6qYMHlZHcxjcHHnjD0kT8eX41xGEpN5QUFc5aA4u5FlaSirmAAbw1UrePqjdfZp/Iua2oWj7xUlfRtXIPhrlZ4O1xDspSoQqo3qjDhtnl5pJo9QqGJL2ujqWBHf4ardj8v7qP3ef9UpNYIUfqbYcDH31OxjD+Bsdvy0ECBnGMQm4i5MV0OPF1xxzOV+gyZvHjU/R3sHPNhXm6AnxX0VWIFmfNR15FA5+yYZ4+UdyO1AL8VPWxZwA+AzAZfK76pta0AbRmizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmg/5QBtA32p0C+g73U84bOLwvaIbI/YPfNDsHzVi9k8aMfVnRbUR9Rc+aOqvGjH1N42Y+lDRzRH1ER809XeNmPqHRkx9rJ5O5DLDP57cMhUOKLvcfjL8pjj/ABFsTWB42mPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGdicNjIwaEFoDhR6JwMDAycyi5nBZaMKY0dgxAaHjoiNzCkuG9VAvF0cDQyMLA4dySERICWRQLCRgUdrB+P/1g0svRuZgLpYU1wAmEgkG3jaY2BAAAAADAABAAAAABYAFgAWABYAPABmAIgAnADAANQBTAHCAcIB8AIyAmACogK6AuQDDgNWA54D3AQaBHYErATUBRoFhAZQB3wIQgh6CLwJCAlUCWYJeAmKCZwJrAnYCgQKcgrqC4AMAgw2DEoMXgxseNrVWA9wHOV13/d9u9/u7b+73bvdO0mnO92ddHfSSbJ0f21ZPtmRbYT/YIEj8B9KkRBuDJiQgAE7dOxBLjQNTIOBxBO3A7YnmSTNuEk7NYSB1O24IcWZ0nQm6SQz7pRMGtomwzQzzQBja9337Z5k4WDHTJmm8c76dnXf/d77vfe+9+cTiFAWBOE7xBGoIAvKXzERBDJUqlgVq1CxcuXPzZbLxJn/WRm+IYBwxDsBX6I3CVGB/WWEwlCpUbUbFdeJycyKxPlnLk+OfOoTSaZ+/esqS37iU+f/DoanGRW1b3uPeZ/+jiZSNg3DAmLlEGsYsRzEsjhWT4zIuWy+Vm/UrUghX6jWV4Jrw/D+TxqGQtSTJ1WiGAZCvur947QoS9oZeBj2ndEkhU57rwscs+GdICpihhEzBIgJ9UrZdZggMx9ZgDcULWSAt1NkBn7CF+l63VDp+YMh/iEeRIzXUK8/QgwZMUBAjKhVcXJ4v3b6CPIX/7x4/ljxMlkq4bJiKKSQFwp5FBp3BaKiCCZ6OwHwQRbhi95LqqGHxINUCeuh8wcFX2fXOyH8oCWPcp2jNTQ83u7p00doX/H8jUXxd3HdbtTrHK6bxHXLfG4yF1fIL4NqDT/4XRiEWhXth1eV37VqzX9BS5br5ZUQRw+ZIDPuMJmFIe7yy4nFU/jowDlmmD0z3WEFQIRoM63qoqir6WYUX0EJF+61gRCREZMp/Zs0CVg6v0kP78zaEkjapn7F+wrTOgftzLFE4S4VYFnGFEWmG5IkmhlUWZtiZiFxPBUbTjFgpk30waT5/FFWTOfbRNY12JFkR583k4M6sZfwvQH5Fn27NMrcrnE3DTGHq+0r7RPidGJOzOGsZIaerga0G/XgaQy4odBGVW4jksOHeyVJMhbJ6hv6FaV/gx4Q7Z7pTjKgTjMVYwCSnd0Z1m/t5ixjt4kyA5neCEjUyhwPiKaXG9SyqbE8vUDyWMYe7NSYaaC5YqlYG/vCUZbsGOxiYnoooFlOA6HECvMYuPgOKZAq+XfBRa6GH0tZMcfVrTSaMAauGEeWhXw3xJn3LoQUiNrXZ56k4LIQbljJu0j+9EE7QkBVi/YN5POibUhAPxnEF5Ap0kf+SSggtuPbsR6YMe5WymO+CTESWBBLhXwuGwYuud5orGkaUvfwyh4ptHJc1bUOw/zIqOW2FVd2S2rwF5M8VwEWbxehGkKu1FXViiTbS959Hea/SwqCcg38vJ99YH7z3ydTF72l/OAa+Xnah0SQAOB/IbKjlUOlIIdmrIp/AZT+okR2zH+J34FP7sP1JbJNiKHOmq9zg4e1wzezlbP41sSNCxOSvOkxSZ/ZbJSMzTO6NEe2hLQHh0i/2LNB9xR4R9/QI/aT/l/B1DlmD8rmoe9wOI5cQ5vA8hbU5AL27fCOp7SAHlmED/RcgZjfI7cIvTxHB3q6wQ50Bn1IGTMjWtVPJr7ifDf6OQd+XxHFyed60wbtVdevUaGkdw1IUrKgl9TxdWovNdK9z5HrInLoxM6EJpXAkrI15dQpeFbPrmFKX0n37oZ7lHpGsqAkaYmdgT6A+mzz9UkucESF/C2OKTqOkpvQcILslg+yY43niTgsUQDUNetbGkwu0XLd+M/hHu/uBfnw7KlTSi27IP/EUlUz9aDeXGT0YfKW0I36pETUR3LjFSdTq3B1MlZ0yRvqkqtlnBzah9r6JtP7W3N9hHp7YPGZRtabdI1Z7JWPVsRiUSzxurbFm1x4KcklfCJtHcJ7ZPfwWny57KXSUJHLhV/46wWB0OQCAZ6+9HL0VwSiFlvozKJ4EJaj7DdRdmMxN9d7IZ4i8Vxh0E+1mazjCnFXhlil3ErFFRQudfGt5+/5qgaF6ioKX4Ev96pxlcRi7vRYY1fK+8UfUlgLWDef+f658F1j961QjWJ4helt87ZRRuHFW2996ZtAfk7u7Wh2Mhi5JRaVCVBvnISYdyPmcrtrRyRT+mofliqZiuRHe/aAcFG4qEVQ7497x+kFrClJHs8yj58yBofQ4BnDAUYwbHLLIJ/jn4UGyLDr9wA8Iuvoqf8Y+ZNxkCM64kXsDLRvevett0DMqJrN5r+5z3v5CVw+f0E329tX+v556uIvhJfJ/UICZcmBjTAtRXgnUqiNkvyoWB+F2mGxSwKgNnZAQGbDYTL/PAmH1VCm1BgZb46PNEqZEPc34XjwBR9vGHNMV7sM5AqYjV8n6F+CZyxZVxaqXlkX3vv8A5mhPcI65DaWQm5uOajEYYj5eXeh/PpXuV5JAWbh7KLveRr2G5GFi2fnWnVrXzIBikg1MRKPGgndCpuRdrFtoi1FwtKyZtL/mophy+2PYb9mRmKqEe8cbk9NpPTDnbGUDhSwSBA9ZOaHXv/Wo2edzy6LYCFfNegmg68JSIpe7bzzsZfnvla9bqCZMJpOh+vbFznRV3xOn0H7/sHsWIp8WLy6f+PWgYda32qi5drmFX4s0nAk/uGaNvm/cwtWVPSLlGj55XuC+sLZr3Lf0P9fvvkt93Drx//3Oy/5mwotupjDdgkPCY9jXM09cv/Hbh+6QlzhABEUNn+eaJIxaJKr+Ra7j1gwWvGWiITBFC+5OVrlK7AYOyig5g9r2KY4fiA4ZUS5PA4iYSqJBozHFaV9qxS2cEhRFXh/70RVJb5kIdGYHlZbnvolYNYn/auGeoBIrw50KUBYhLJIvna5DwfO9BIqQfb6RDaT2JohogiqtLEpvb91+5/aRUK4NpNdWGvekhsrxVrGJjWUq2+uDq6NMjG5tqN0XURkYsfEk44kmxuCXkamIewnUnxu5zN3PJjhgsrs2mngXbzfwhPssdl0NI6qriZam2uQ45OTJGHjQ/fuJ73/ZMa7bRajCn2GOrboVd78qSpaCZvugiF46sI52V4qj/dObXweiVZ9QVC3uV/5mUEMZwYit8YGOkgK+Ubcdk0KbavuXt4XIYZrJ8jk5HFiOqYmi/qzPVt7seU4Yyei4oUfnYTysf391E5YovrTN72KaCmSmoSv7f6vvURd6N8CHQZRB5P3B3FfmBXhHWy9wvVpjTFWUMurpBYMMH5s0s+EO9IhAvoLB6QQhHRlYGBm/c0qkFA6pRFiLp96aLy5YrNG4Idd2CeNwmpl7qSBjtDaJ7bvU7zT3hnW2XUPnLzbuGlkKp28c43hvbJUrwHUK7swL6bBivqHBHw7YJDbNd9eXDN/4g5mK9S9vl6NdGoYSOGDt9nRh6aWm4QYSa6oevPGO4qzhdmNXElKfqJ2SN4r3reM7fsNMjWy1eCqpDuZd8Y7Le/fvjGhqomN2/fLsBpGmdk6l/kb7N2k957LvPb268GhzL7gLAWM1ppLZymW+3bRP0gRH78CDj/dKfo45/cV3xfH4mcy/1Z82zsrPn7+RlwDy9FYd/gzXwuHz3s4XgVTHgjT3nH/HCm2ENNQjsc0nGwd388qVNvRz7A3Sg4cPHiAWAYjjx448Cg2rTfZsveG9694vSHbugw5SCmQgpysc9zNiPtgC1dv+QeDpB1iKgRx0oH7cjOJ6lIAyAzLF0FX26DJ3jnvx4r3Y++crNsypKELrzSvs9jTiyn0exqnrLWYDz8yWu6OAm3N02Xf+wvnLVzMILR6eajmF+tZbGHw9oO4pxpsJcyO8MD2G8LKQHbv6Vpeh2z+8PS222empp/OZ7P5p8kL/3w0VHKLj5+2Aawdv/NkV2+j/8E/c5gXK6W6B0prS+RsDuTYH9+15TatMPvR6cP5XA4hPjo7c/P0YW/qyz+xQYp/+yl1rfrpO3YnmJb6xiNdvV39vblsX5+AXrzErU+oCquQX3i1vmasXls22JuJgvTrScb9nM3zeiaazxWsjJ8WrAwux99AI2NxS1yN5FvolY/teNbFVXt0RYIHwH3mprPeE2BeX/3sVvgueE9Iz/z91Yi++hIOrntOSXAf5YtP7Rm58AN4QNq3c/WkCvdKCGXxY9D38B0QRoQNwjbOd+um8VXla+UrtaoYn60Leag38gVOn/sX5zaegFw+bNex3EGhdZLop4ar2gDWcTffucWcO3RoztzhpQ7NzR0KrcO0ZKwjR0K5sezCu+n996HRCVxzf2wodv8O82p2MUCyRlUOpY7P7+bQxva9GAt7t8MvNeCgC395wDs2t3LikLrWwKy0Vg36/sV8dzP2/Rsb2WCu+iA5L1ptVIKDRr4TO6ESFP4S+IbNZXHZKuCb/hqT44n0w5KsMLtNlfaxhKuubgCNR8w4hcZq1f2AqdOrt1srmqomMRpVmytEvSOhsRUj1IxGTTqygmlLcn4HP4/i9VBicga1jvickHQbZDhRnz8Nac78xxMyIVRVI7zY9GHRycjkhx2S4jD6PDOZmmLehDcBL8KLrBOflwUzLC98/cLse8/JhmsVp4L3bPDv2tcBX4erZi/l4OHge+F/AEXwNbsAAAB42qVUwU7bQBAdhxDUREQgJA7toSshIdImTgxcCAgJQSNFRCAIQhxaocVZ4oXEjuxNAvxEr1V/pF/QUz+kP9B7+7xeCkFpKcUre9+OZ97MzswuEc1bebIoeRr02WCLcvTT4BRNWa8MnqAF69LgNM1ZXwyepNepnMEZmks1DZ627PRXg/P0MvPG4BnKZT4YPEtTmWswW+kXWH3SXmJs0Tx9NzhFeStn8ATVrAWD07RofTR4kjatbwZnaDH11uDp1PtU2+A8rU7+MHiG5jPvDJ6lfEbSNgXUo2sKSVKbPFLEaIlcKmBepgrGGpU0cvAy2iFBkdb1sWpCU0LiYxZUhKSusU3ZR5kdWgXaxR+uubbwj1MLPF1Y0XbQuw5l21NsyS2w5UplrbRccSpsR0Sy7bOmK4XviiKr+66dfajsrLJdj/tsy+Ut0QXbLqiPQH1Cpwha0g2wAzE/EienTXkjsDiErE196kA3xFK0+x0OUMNGfIQfzyE0hN6ArdNR1VsYx116yFcLfFULwrZgy3aFVdk936Xfvv6Ra6ztMXRCXZxAJ9RBjA6tAymMc1j2MQdIuNT7icsx0ForKAodizCSgc8c21lnSp3zvgo86SOlA8deKTwvtqe1WfEJjRbzbNBQDxutw8Ht0QXmK6yTim3Cz3MbctTPpdHiIzr3/RXhcQhPcTRM5yjS9Rng24LktqsY7YGhq7tqfIbjw5SFPK5bNGLZBDoHGurMxwyJRgezq7MVGW994Jb2z3REQlvXcf0x2kdWhN7xHXNjhCHO9/juskciG/XLENUAr9SdcYZvLLvLCdcet+hAY4WzlNVVUYinSmWMCGxxtXqQRfAVaa7bLJcReQ2R/umqKI69K9jSxnA4tLtceRf8ysaB3Cw8dn8Ym0uIeCJJ7IrZoVQeOxSRCAeixeIjzvZ4V9w/3HY2e+TJKPnZDM7VkIeCQdCRrvAjmPX9lgiZ8gRr1htsvyf8RLmRKBTZvaNpJ2TGlvEBlx1+1hFMR8JZbeuAcVXNekr1quVy5IaypyI7kp045PJ+Dfn6ryT/jfAZt+svYHV6UgAAAHjabctbTsJgEAXgc4paCvUC3u+XFUz/KuKLWntZhlHEBxKkhNiwAFeh4dU96WrQ9h/fnGTynUzmwEE18zcY/Dfh7xIOamjCRxvXuMEt7vFAB1/4Zo0LXOQSXdbp4YMNvOOTTfqYcZkrXOUaW2xznRvc5Ba3ucNd7nGfBzzkEY95wlOeucVoIBJJZSjGex0M+89P+UuvvBgJOu7jZJJPi7FX2c+no4ZNvWEx9v9iea8aJhCrCdULNVYTNbXG+h8HqlFtP5SueqVG6p01sf3LtKvav0hEDVSjnqud0jTLEjVVsx9EcFtwAAAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaRSx8=
d09GRgABAAAAABocAA8AAAAAMHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAaAAAAABwAAAAcacggPk9TLzIAAAHMAAAATgAAAGBFYlu6Y21hcAAAApgAAADKAAAB2orXF4RjdnQgAAAJdAAAAAsAAAAMAAAAAGZwZ20AAANkAAAFqAAAC5fVFNvwZ2FzcAAAGfgAAAAIAAAACAAAABBnbHlmAAAJ2AAADEsAABaoDunJb2hlYWQAAAFYAAAAMgAAADYQJNkbaGhlYQAAAYwAAAAgAAAAJAl8AYJobXR4AAACHAAAAHoAAACsfckCBmxvY2EAAAmAAAAAWAAAAFhqbHAgbWF4cAAAAawAAAAgAAAAIADIAN5uYW1lAAAWJAAAAx0AAAePHshTGXBvc3QAABlEAAAAsgAAAUK6cFolcHJlcAAACQwAAABoAAAAf+LQSDp42mNgZGBgAGIWp9Jj8fw2XxnkmV8ARRiuTfRWgtF/hP8sYt/DGgDkcjAwgUQBPbULpAAAeNpjYGRgYA34s4ghis3ij/C/GvY9DEARFKANAJIcBgUAAQAAACsAvQAFAAAAAAACAAAAEAB3AAAAIAAPAAAAAHjaY2BitmecwMDKwMDUxbSHgYGhB0IzPmAwZGRiQAINDAzvBRjevIXxA9JcUxgcGBTe/2dW+G/BEMUawBynwMDQH8cM16LAwAgA+i0PsAAAeNpj+MVgxAAEjL5A4hcDA1MowxYgVmbWZrBgvMHwAEibA2kBptkM5SAMUsP84v9v5hcgXX+EgViC5R+DBQizLmEwB4rnM+kwmLPYMJizWTCYg9nhqJhJgOEBEAvA6WSGAiAOY30ONAOKYWoZdYBuA2KGFAYGAINOIi4AAHjaY2BgYGaAYBkGRgYQuALkMYL5LAw7gLQWgwKQxQUkNRn0GWIZqhlqGRYwHWO6w8ysJKgkpaSndFiZW/2lFpMWixbb+////wP1KDBoANVGI6llUuIHqtVWOqDMof5CiwGs9i9Q8eP/d/5f/7/mf///vv85f93/Gv3lvcd099fdV3cj74resLymfE3pmqKANtRtRAJGNga4BkYmIMGErgDiZRBgYQVTbCQYz87BiVeei4GbgVwgLMggCmOLQCgeErTz8sFYAO5wM9cAAHjarVZpc9NWFJW8JE5ClpKFFnV54sVpaj+ZlEIwYEKQLLvgLs7WSlBaKXbSfYGWGX6Df82VaWfoN35az32yTSBJO8OUYXzPuzp6d78KGUqQsRf4oRCtZ8bMVovGdu4FdNmi1TA6FL29gDLF+O+CUTA6Hblv2TYZIRmerPcN0/Ai1yFTkYgOHcoo0RX0vE25lXv9VXPS8zv+9v3AlrbVCwS124FNm6ElqMqoGoYiSUlxl1ahGpwErfHzNWY+bwcCTvRiQZPtIIJG8LNJRuuM1iMrCsPQIrMchpKMdnAQhg5llcA9uWIMh/JeO6C8dGlMunA/JDNyKKck/BLdJL/vCn6SGudfMiK/Q9mSDb0neqKHu5O1fBFhbQVR24q3w0CGeLq5E+CRxUENLDuUVzTulftGJk3NGI7SlUixdGPK7B+S2YF9ypccGleCnZzyOs9yxr7gG2gzCpkS1bWTBdUfnzI83y3Zo2RPqJeTP5neYpbhgoeII+H3ZMyF0JkyLM4mCQtODr2kbFHG9dTE1Cmv0zLeMqwXoR196YzSAfWnJrN+YFvSDku2Q9MqyWR86sZ1h2YUiELQGe8uvw4g3ZCm+bSN0zRODs3imjmdEoEMdGCXZrxI9CJBM0iaQ3OqtRskuW49XKbpA/nEoTdUayto7aRKy4Z+XuvPqsSY9faCZHbWIzN2abbMTYrWdZMz/DONHzKXUIlssR0knDxE6/ZQXjZbsiVeG2Irfc6voPdZEyKSJvxvQvtyqU4pYGIY8xLZQjdt9E3T1LWaV0ZiZPzdgGalK3yaQlNOIr+RKyKY/2tuzjRmDNftRcnZsTI9LlsXkKYFxDZfdmhRJSbLJeSZ5TmVZFm+qZIcy7dUkmd5XiVjLC2VjLN8WyUFlu+oZILlB0pUyHzgUEmDhw6VNXjk0LvKoOnya/j4Hnx8F3cL+MjSho8sL8BHlhI+slyGjyyL8JHlCnxk+T58ZLkKH1kqJWq61RwFs3OR8FCfyNPlwPgo7reKIqdMDibpIpq4KU6phIyrktfYvzLQSg6tjcpjLtHFUpI3F/0Aa4gD/PBoZo4/vqTEFe3vR+CZ/nEjmLATjbPeWPrT4H/1DVlNLpmLiOgy4ofDJ/uLxo6rDl1RlXM1h9b/i4om7IB+FSUxloqiIpo8vEjlnV6vKZuY9gBrHWsRE71umosLsF/FllnCgOC/ptCEVz7oVaQQtR7uuvbisaikd1AOd4IlKOJ539wKnmZEVlhPMyvZ86HLO7CAbSo1WzYwfd6roxTxHkqXfcaLupKyXtzF44wXW8AR76BX34nhEhazbKCGEhYaiAtCW8F9JxiR6bbLYcCR+zwaKn/sVtzIERW1E/htp1vuhS2U/DrnQECTXxnkQNaQmhtaTQUMjxAN2WRjXK2aThkHMMiosRtURA3fRvZ4oBTsyzDlY0Wc7hz9+qaFOqmDB5WR3MY3Bx54w9JE/Hl+NcRhKTeUFBXOWgOLuRZWkoq5gAG8NVK3j6o3X2afyLmtqFo+8VJX0bVyD4a5WeDtcQ7KUqEKqN6ow4bZ5eaSaPUKhiS9ro6lgR3+Gq3Y/L+6j93n/VKTWCFH6m2HAx99TsYw/gbHb8tBAgZxjEJuIuTFdDjxdccczlfoMmbx41P0d7BzzYV5ugJ8V9FViBZnzUdeRQOfsmGePlHcjtQC/FT1sWcAPgMwGXyu+qbWtAG0Zos5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZoP+UAbQN9qdAvoO91POGzi8L2iGyP2D3zQ7B81YvZPGjH1Z0W1EfUXPmjqrxox9TeNmPpQ0c0R9REfNPV3jZj6h0ZMfayeTuQywz+e3DIVDii73H4y/KY4/wARbE1geNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDYyMGhBaA4UeicDAwMnMouZwWWjCmNHYMQGh46IjcwpLhvVQLxdHA0MjCwOHckhESAlkUCwkYFHawfj/9YNLL0bmYC6WFNcAJhIJBt42mNgQAAAAAwAAQAAAAAWABYAFgAWAEoAgACgALQA1gDqAWQB2AHYAgQCVAKAAtADDANMA7ID6ARKBQYGHAbSBwgHPAeMB94H8ggGCBgILAheCI4JBgmWCjwK0gseCzILRgtUeNrVWAlwG+UV3vf/e0grraTVsWtbslaHvZJjW7a1OpLYsWIS4iTEkJALwg0ZmCSEeEiI24FACBB6TEjDkbYTCqUN0HaAAk6aHmHoQJmE6UFb6LRQhqPTkoFCJ1DaJsTa9P0rOXG4SmFaBtvr1f56+3/vfe/tO5YjXJ7juP0kwlFO4ly7RR440t1uqZaasdR0fvvyfJ5Eqn/Nw0MccLuqI6SHv5qLceKol0B3O4SldA4yZrFQDpYtLRKWREmkYiSsB3WN9Iixi7/WVigsejomKvHE/UmXy3xFqW6k4tIj23/y0ouPgLVbpLwvmX3N3jJ0xfoh+/RDPg5x0tUR+CbixBFHYTihQqkX4qAzBCKlU2axVC6FSsVChmTMjJl2KUodSfFJ4H3FdLmS9yfiXv5yF8+wXn7hEfuXu3kX+A7BA0PrrxiCta+1JRysyWjTW4ilIJbIMSy0hiuXmDWcJJ6qkS2Uqlp1LaUoqXnE31OZaPLhLJU5dv9LqOs+vF/C+8G5X7UiaTxeOrAL+ZIk6/B5FsqV6zg+lHODw106lTG5jFmy8rrGkbf0AEKsBfB7vCIlW6pbG2RefE7w+GV6uM3BClRHuH/VsSjbI1REJ+EROHBgF3+KdeiwJd6FciOIlUa501Cu1cGSGFYmB13EdM4F5K9cqpACI7LoXPSCHgmLzIF+Eo7giR1+5FwPsyNigIbnOERIWlQU76jBAwARpNQKmeflFSlJIAA8RM5u73V5fCJ1mcagH5co6KssUfbuiONHIP5Bw3TR6gaRr6xTJz31lqfBv9iiUoOLWov9jZ43W6bs8FEYmtKoEdGnCNSv5wflNydVbvIBnHFSI6Vi/3oA302VSQc9g3ndTwXF4Wbc5rloc0s9Zhix7DcS1uu61wxE28K1MwulQj8p90O5FHT+VyBTo6j2L0dHBL+i9OcWhASQiu1FN6XuRNNSDwihBbl+RfGJPO/lC/NlIODNtbd1edyXd4bcjByQ5xfwO55f6RcEzSjP0Q6+Ks0stzfwglcReH94YJn06kFtTtnQBNHndlOe6AssLzyr5AeMeIjnewZjCXXSr96SrAU64akb7Tx6hBTp65TnNLTTxaOdNI9q83pYTDP/QkrygR9SpgB/eKcV3hY8xDCumfIP+vcp1xgG8ZCzZi9SvgM07Xal/DNm+FMud9rhjyMX0QPkb1wX7qurLGasPHvidM3KY3j0QwU0A3BzJ5LYQ5dCAhmW2QUsfqBbzZ6c6Ti722ueOn9aNxUJoYKrZemNQ109seK5XScuz+8bIG94vP6kSJojDSwyXO5AsL1TkUInLmXDEabfWIgUOX6i3fD+do+F/hvDYayBXHT06Cexuzr7f2k3N9nu55+gP+BaUb+EY7fWC5Fk0cpXQE2qoQlXLGbboZiMoIp8KrRZtgPyhiZqe+DYZ09jo1mW+S3ydZr95OJSaZ6b31PdWb279vGiWNzjL5UWTcTNIG7w3bgTkShq8R7kI2uPo8FBRAP4x4SrcexxQFRhJ//DY+gMv2z3C5cifi/iZ51cV2oDPU70dM0NGbM1qXO6JkHYSpSdDFa2MF8JCVaOKoDBwWUKqBhkCn2ULCPLpioJP81KqGN2+Bc99m/s513wFCao6sGn4bupL869ZWEknKV9U6v3Vu9Bd6VTmwdAhpO2TbH/CXQXudGYlxJ8bYg6U6Hgqd4oEr56DxAp2HJhtFPcuQMIkQifyX59DqZZOHPfqbDaX/Phmup6Ooa5KTpeYyCvs+LSDmgGRaXNDEs8oSZSLtFXVVL9U1BSvUQo3uUPJtzBxmxL4deL7Lu8In91kD88rywJ4b2kIxjJuILxnkl91RxI1ISjKZnxNvYt+qAwn+tHrGKY8RaWWDBrDkPBUD/F2pbX2HPDcl/ZyXROTLNfQsfTYoalT+3eIuFDTYrPKsbal23W9JxlJA2rnzbH9ESRUpn6gwJJJJPZeOP5GxNaa0fn9M4KiUf1RDXa7qM0DIr1zqZDJEgaF51+wwKt4aSe5mSiod3HUxeRwX3Wsp/fvKP6x6p9zYzhqZWZ3bFkgiPMBuGnjg0bsCdZt7AYJp/QDuHTIYEE/v/8NXxc3injXdpb530vJ+8ZvZlxTz9N7j97joOxz47PP1msOHlmAXcxtx5jZc2KC5fMjr8rVkKmMxtgLrZwQHCS9Ad6jzqNGlZWKY09/kQ3AjZoaVbfJREbOQPyuGFrIYNVmEhW3unajns61z3UmsslVs+Q3UsmdVoZi7rel/vueWYuZ1yGYqd3dlrHveeSmkJEaOnIDXhFMXyqBoQ2Qu4adyNb570NM85RyAQ//Ra6zN4ZCxfM6pkudsDGL9x2UsEN7yVwq/2COXXWgoUzegbEDnv7jttm1oik9xkbzxI0bX5en64vtRSfen375tktW+ObzhLEwMWzA+O1kDewFrL6Ea7NXSJrR4Crd7DlEptY2Biha7wRC8d9vH2pvYoq8XAzNhSPE68R8xF4goC9JhSPivzWI2v4aHNY4t2Cxjc20Hf+IlHu/bHqfTQ4CM6I56A6o0s5GjEUEW6Gr4K/ORwDYvcSJdbsJ/Y0CvT6kNHkPbKev5U0xUMSld75C21ookJEpsdwdnM5xPFztb7L6dHxLxRAZ6P3TTWAIVJ3vXps0Ykk4tIK3m3Dcy/wCdhp01gqii23/Oedc2Zd9mUXDiLRVAw7KWj4yka6GwKLy3ec2bzQ3mhP4VVdU3nYC4/K237XlN01LNsD9kxe1XRc3Qf7PY+PrKjxUHF46D42T/QDi11NDaCG9bBTA3hyFsn4PDE+OdDAZBINqrGaVnNnrZ6olSdzyi2rRjqMJd+Yen4E9adbA0wre6Y9MK4VPAp7mVYBwZ5iT/Ysm7d1jiV4F1ZW3ti8EDbCvvHZ8yj2FcLx2RNbMPUlMF6vTZ4d3PjcCF11ufrcmFTTagAMy5kaxWc47gP2s9gkaznbHe6w3ncvlEkWxyz75er3xGdwBK3tNYzzmAflmlAuIqJcuRhiExZyKEUo65+jENGcQKLDD98eFd2y1wej2fM0bXQU/LLfE739bR98H9ad7HH7Zck+7cI/l0r2kD1f8vjDJ8M6xFiCurCZWmfvIxx9U2a5GIWCDPWxGjEoumZYDsDo6MOjBHyegAR7du/eA1J1JCBL8CCMAtwHuyRZVcAetE/x2XPtQcChkmIPXBEewBht5vpwrpT3nFzJGSpgjoMJo2XN8WhGi5PrMDSFYzkNB082S9QnCZy0CwSfWnygnFGUJTiT3B7P9XquW/n86rnm9Fu/sb9lOD1qvzoPL267E5Z6rC7toc1X9cZPm/32ncHmePCyCy6+Y1LH3VeP2AeK2RbLyiS7XAQTMfjylzx3693rhn985XVNgtDw1PbaxQ2zgNcvX7Xz7PPv3HLVt32EyJ1d96xcs/ZeUOcNVndnLZLPZPOZZi+HHj1ubxs3hRvkFnP+6d55c3qn5jqNuArCfzI8pKZxhTC7k2CmM2oyMQ1yUGSPBA4riWZAu53hCgptoNZJwWf5Qzg4SDrMh8cMAUKwLciLeAoBKFdddK19wH7DfoN9Xn7DfeQmdiGuOgfZafQKH0ZI9RaS4d1Z+9CjcS8QfLSrz2Ln7qIbnj3lvCOXkMz4xXKVtLLv5A4krDIYP4GfLq7CzeeWM37OXTQ4MC0/yfgI/Ag4JDmREcEqVoECy+CZVD1QWNEsIWs4DnA6Cxj2esukWg70FBcJO5vW4ug/hUzI67r3hralqx577LG2TfbLtr1JzCYiHafJTQ38JhpzwxkrHwNSX2xcLe7bL4C9oRD4/FeDfcHtVwasD48nUM6P8Wfg7o/zsbOrPwL+2r6CtWbtHVtCLelryQYvfmWPja+1j70oPrlftK8CYspDGH++IdnkWI9/LL8uxx5/yGoh5GPkWKjf0MyqB3uonILYXnvR4whOw/rhZJliwXnJVSz8F3kZfsY3OrIrLqUBPaoYkhVZAYI/1oxVZ0XEkgwlqgfopSs+RgK3v8luwXuBRlVDkWDlkpi7qckdW7ISJMVQoxRRT6zJpXfXokZIjtMTiREtxosxaAY0PdlqZop9xOzjS31QnFy3grYwS1mhlAzBLtqluOtY7al+qfplcgVZjyprajg8eM7nNmzbvG3D584ZDIcNCamJnrjIfMiU60D/1d4dC7V3xz1FK2Lhsbz289HlgMmhFJOr15+e2vfcvwGbwXQGAHjapVTBTttAEB2HENQgIhASh/bQlZAQaYMTBy4EhBRBIyEQCIIQh1ZocTbxQmJH9iYBfqLXqj/SL+ipH9If6L19Xi8lQWkpxSt7345n3szOzC4RLVg5sih59umzwRZN00+DUzRlvTJ4ghatK4PTNG99MXiSXqemDc7QfKpu8Ixlp78anKOXmTcGz9J05oPBczSVuQGzlX6B1SftJcYWLdB3g1OUs6YNnqCatWhwmpasjwZP0pb1zeAMLaXeGjyTep9qGZyjtckfBs/SQuadwXOUy0japoC6dEMhSWqRR4oYLZNLecxlKmGs04pGDl5GOyQo0ro+VnVoSkh8zIIKkOxqbFP2UWaH1oD28Idrrir+cWqApwMr2g66N6FseYotu3lWLpXWV8olp8R2RCRbPqu7UviuKLBd37WzD5WdNbbncZ9VXd4QHbDtgfoE1Gd0jqAl3QKXIeYn4uy8Lm8FFseQtahHbeiGWIpWr80BatiIj/DjOYSG0BuwdToqegvjuFce8tUCX9WCsCVY2S6xChvyvfLb1z9yjbU9hU6oixPohDqI0aENIIXRhGUPc4CES72fuBx9rbWKotCpCCMZ+MyxnQ2mVJP3VOBJHyntO/Zq/nmxPa3NCk9otJhnkwZ62GgdDm6PLjFfY51UbAt+ntuQo36ujBYf0Rn2V4DHATzF0TCdo0jXp49vA5K7rmJ0AIaO7qrxGY4PUxbyuG7RiGUdqAk00JmPGRKNNmZXZysy3nrADe2f6YiEtt7F9cfoEFkResf3zPsjDHG+x3eXPRLZqF+GqPp4pe6MC3xj2X1OuPZYpSONFc5SVldFIZ4KFTEisMXV6kIWwVekue6yXETkNUT6p6uiMPauYMubg8HA7nDlXfJrGwdyK//Y/WFsriDiiSSxK2QHUnnsWEQi7IsGi484O+AdMXy47Wz2xJNR8rMeNNWAh4JB0Jau8COY9fyGCJnyBKvv7rPDrvAT5f1EocCGjqadkBlbxvtctvlFWzAdCWe16hHjqpL1lOpWisXIDWVXRXYk23HIxcMa8vVfSf4b4TNu11+L2HpeAAAAeNptybcNwlAYBOA7kzE5wwo0z8+I0ADG2GMgRCgsERqYgClAtOwE0xDsv+Sk0yfdwUCY9wUa/9L9ljAQg4kcKhhjgikWWNLAEy/GGMeNCVzxwJ1JpphmhlmazDHPAossscwKq6yxzgabbLHNTup8CJRyVKitdOYU7Dbb9XG/+i1aWypSu+Jc9CJd+V1L1KIdaquhOBIdcRY68IZi9DtKiZaoxZ7Y/+n5/lz0RP8Dxh1BegAAAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsf
d09GRgABAAAAABKoAA8AAAAAIKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAASjAAAABwAAAAcacggPk9TLzIAAAHMAAAATgAAAGBFuluAY21hcAAAAngAAACkAAABqv8Uls5jdnQgAAAJLAAAAAsAAAAMAAAAAGZwZ20AAAMcAAAFqAAAC5fVFNvwZ2FzcAAAEoQAAAAIAAAACAAAABBnbHlmAAAJcAAABXQAAAfsNmC19GhlYWQAAAFYAAAAMgAAADYMVNkdaGhlYQAAAYwAAAAgAAAAJAYGAfZobXR4AAACHAAAAFsAAABsPQX7mmxvY2EAAAk4AAAAOAAAADga0hz8bWF4cAAAAawAAAAfAAAAIACvAGpuYW1lAAAO5AAAAx4AAAePIclXHXBvc3QAABIEAAAAfwAAALpRo2QycHJlcAAACMQAAABoAAAAf+LQSDp42mNgZGBgAOLjVm1W8fw2XxnkmV8ARRiuTfRWgtG/Iv54sS5nXQXkcjAwgUQBTLkMEgAAeNpjYGRgYF31x4shinXJr4j/b1iXMwBFUIA0AKr+Bv942mNgZGBgkGYIYGBiAAEQKcBQDiSlGDhAAgASAwEaAHjaY2BiWs04gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjA4MCi8/8+s8N+CIYp1FfM2BQaG/jhmuBYFBkYALwQQzQAAeNpj+MVgxAAEjL5A4hcDA9MDhotArMQiwmDOJMDwHUhbAGlupncMTUDcDFLDuuT/H9YlDIxADRFAHMv8giGfyZ3hGxBzw+l3DHVAHMeoAzQbiBlSGBgASjgYwQB42mNgYGBmgGAZBkYGEFgC5DGC+SwMHUBajkEAKMLHoMCgyaDPEMtQzVDLsIDpGNMdZmYlKWVu9Zfv////D1SnwKABlI9GkmcCynOov3j/F6jg8f87/6//X/O//3/f/5y/7n+N/vLe/X6X64aegDTUXjyAkY0BroiRCUgwoSuAeAEEWFjBFBsD8YCdgxOvPBcDNwM1gCCE4iFBCy8fjAUA9VMoWnjarVZpc9NWFJW8JE5ClpKFFnV54sVpaj+ZlEIwYEKQLLvgLs7WSlBaKXbSfYGWGX6Df82VaWfoN35az32yTSBJO8OUYXzPuzp6d78KGUqQsRf4oRCtZ8bMVovGdu4FdNmi1TA6FL29gDLF+O+CUTA6Hblv2TYZIRmerPcN0/Ai1yFTkYgOHcoo0RX0vE25lXv9VXPS8zv+9v3AlrbVCwS124FNm6ElqMqoGoYiSUlxl1ahGpwErfHzNWY+bwcCTvRiQZPtIIJG8LNJRuuM1iMrCsPQIrMchpKMdnAQhg5llcA9uWIMh/JeO6C8dGlMunA/JDNyKKck/BLdJL/vCn6SGudfMiK/Q9mSDb0neqKHu5O1fBFhbQVR24q3w0CGeLq5E+CRxUENLDuUVzTulftGJk3NGI7SlUixdGPK7B+S2YF9ypccGleCnZzyOs9yxr7gG2gzCpkS1bWTBdUfnzI83y3Zo2RPqJeTP5neYpbhgoeII+H3ZMyF0JkyLM4mCQtODr2kbFHG9dTE1Cmv0zLeMqwXoR196YzSAfWnJrN+YFvSDku2Q9MqyWR86sZ1h2YUiELQGe8uvw4g3ZCm+bSN0zRODs3imjmdEoEMdGCXZrxI9CJBM0iaQ3OqtRskuW49XKbpA/nEoTdUayto7aRKy4Z+XuvPqsSY9faCZHbWIzN2abbMTYrWdZMz/DONHzKXUIlssR0knDxE6/ZQXjZbsiVeG2Irfc6voPdZEyKSJvxvQvtyqU4pYGIY8xLZQjdt9E3T1LWaV0ZiZPzdgGalK3yaQlNOIr+RKyKY/2tuzjRmDNftRcnZsTI9LlsXkKYFxDZfdmhRJSbLJeSZ5TmVZFm+qZIcy7dUkmd5XiVjLC2VjLN8WyUFlu+oZILlB0pUyHzgUEmDhw6VNXjk0LvKoOnya/j4Hnx8F3cL+MjSho8sL8BHlhI+slyGjyyL8JHlCnxk+T58ZLkKH1kqJWq61RwFs3OR8FCfyNPlwPgo7reKIqdMDibpIpq4KU6phIyrktfYvzLQSg6tjcpjLtHFUpI3F/0Aa4gD/PBoZo4/vqTEFe3vR+CZ/nEjmLATjbPeWPrT4H/1DVlNLpmLiOgy4ofDJ/uLxo6rDl1RlXM1h9b/i4om7IB+FSUxloqiIpo8vEjlnV6vKZuY9gBrHWsRE71umosLsF/FllnCgOC/ptCEVz7oVaQQtR7uuvbisaikd1AOd4IlKOJ539wKnmZEVlhPMyvZ86HLO7CAbSo1WzYwfd6roxTxHkqXfcaLupKyXtzF44wXW8AR76BX34nhEhazbKCGEhYaiAtCW8F9JxiR6bbLYcCR+zwaKn/sVtzIERW1E/htp1vuhS2U/DrnQECTXxnkQNaQmhtaTQUMjxAN2WRjXK2aThkHMMiosRtURA3fRvZ4oBTsyzDlY0Wc7hz9+qaFOqmDB5WR3MY3Bx54w9JE/Hl+NcRhKTeUFBXOWgOLuRZWkoq5gAG8NVK3j6o3X2afyLmtqFo+8VJX0bVyD4a5WeDtcQ7KUqEKqN6ow4bZ5eaSaPUKhiS9ro6lgR3+Gq3Y/L+6j93n/VKTWCFH6m2HAx99TsYw/gbHb8tBAgZxjEJuIuTFdDjxdccczlfoMmbx41P0d7BzzYV5ugJ8V9FViBZnzUdeRQOfsmGePlHcjtQC/FT1sWcAPgMwGXyu+qbWtAG0Zos5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZoP+UAbQN9qdAvoO91POGzi8L2iGyP2D3zQ7B81YvZPGjH1Z0W1EfUXPmjqrxox9TeNmPpQ0c0R9REfNPV3jZj6h0ZMfayeTuQywz+e3DIVDii73H4y/KY4/wARbE1geNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDYyMGhBaA4UeicDAwMnMouZwWWjCmNHYMQGh46IjcwpLhvVQLxdHA0MjCwOHckhESAlkUCwkYFHawfj/9YNLL0bmYC6WFNcAJhIJBt42mNgQAAAAAwAAQAAAAAWABYAFgAWAFIAiAC2AMwA/gEUAZYCCgIKAjQCdAKeAt4DFgMqAz4DUgNmA5IDwAPUA+gD9njarVVdbBRVFJ5z7p07+zO7szM7s9tSuu3utlukSMv+Fdh2q62N0lKBSg2hUrRBJWggKhCBgCIJRkPkBUmM8UF50AAvRuEBLEoQY0gMIfFNCA/6oDREqqHEOjt4ZnZDmkgMD947c2fm7rfnu985554roZSVJOl7tCQmKZLvlOAgYWd7Ts/pbTk9nT26KZtFqzKVhc8lkK7YQzgpH5cSkvhCR+hsB1NJt2XaJJYp5LsMKPZCLmaZikA9EjXiMZwUTTyxzLnUoSgdUFyW4E0ieGHykWd+CdprmeB1PTCK3at3bh/BEoz21HHBuHqpcs7Z4Vy4KzlHbqq0OOJNEW+YeBuI1+TE2xqBfLEE8VhcirqECEKDdCpTKHZJcNLZ6QtrxAtFl9e5RLyapnSUoPlvVg/v+jgROycqF0e271hT+dY5QcTc1zEMb7pcXfYQu0pcFnH5JeKKplxxRamrmMvGFMEEOUoRa4IaMLYV5Yiqgzjc5Jwfc65xxR4yAhz9/lamGkHD2T9in5y2b/NgVccd0sHJtkK2wbOtJ620nrPuQOjyZXvIv7F8p7FcxS6trSNO2HDV1yKdastARmrDQr6Yi8VjEJPiBrsaCWgKd66NOeebjkTUEMUwPQa9Te/bLwQjQc6C02ztCBzyqWH0c/v2tH1yxHnF4wjaQ1BXWw8Ddz2FpJ4s5PQghJw/L8svl2c+Lvt+9rBv0dq3EHYVYZMuFij0i4Euhu4z05bJl6Gr6PaoQQPlQpxCQ9lAPUwod1TCqEE84V5R0yIJ7u2OFm4RifCzuw0ZqKkTAyoAcl/vkmLInZBbL0YSAgMt8zZSArgT2vOrmKqgXx/dGnH/w8HcOK8lgPYaIRbsHbJKoENf4Mn9rQpnpo/xZGngqQD0gd5tfTCqCC2CyA1zxbi51PndudVtDby+EMlzzL9w7xNWtzPdOfSDznB8hWlwxEg1JgdqPnicfJBxY2JQFmJVToObjTF6sUySSZq1mmQvMXswX6z6xqg+ej2PoTu0HZBVOayN7zIE6UB9c2udwoDLyxf2a0gzwtg1roUjgiscj9YDQigfb32o0zTPNtBH/dEwygcTJHrPYLzHueV8E9759PwgF6EAKW/sWLEh7Hzt3OqJD+5ZIHhAEX5BoR45pOP2yKpHGxPN9f7Ac8d0fE0/NCK4p/OujXn5U8alKOkMuPuNiZZekHnO1CDVkk7JnHY9D8CWM2fgJeqcy5VuzpwPnY8Y5zjGRtsXrR2FaPRgf380WvUd4IT8Cd6UWsmm4uV+W9UluaznuFguS+9xL11Snlsy6ZQigoEJ8+1Xc8tK6vAb65c/3HVsxmKBHccPq+vV4f3rly12J3AiyZrlds0HvtZ5PmW1kpTTBcofJeN9efyz6zAvsbma4D6aZtfNFcUrpf8SBbMbcOKuM1cTPJCm2Rf/F1EgbbMHmU352Ej8DVGXnzIq7+VcpgN6IZqvVq24SRUrnYLP8CdoVnQuCyW0cvgK2ChUoULlR84s1V4JHIHlg/OFIvtCu3fZS5lvsxwIKL6Z77jf5Zuh/C8Rnzy3fiX1GRhw/vKq18z1e3VldQ13r66kqaoMlL2a4k9Wc+I+9nJkcaYMimtu5nqtFv7LHri4Ahhl56z9jj9JVcrD7bMH8T3CxQhHhaSzvasQNTwPNNJmNBtob7pxYPumbmAwEtJ/pWbUaXjjDx0HcZBrRshX+apyTlTOVSb9YV3jOOjaHad1bqvVYrV6JvRA1MgzdE8GN9hkmqEi9ibI4m/gN/Ug3piamgKfPZTwYz/2CezDx0KIMY1XTldO65VTlS9Bk9ATuEjaVDt/5er5u6SQs3J0b6o26YFx4OII5eJqPl1S/V36By9tlh142qVUwU7bQBAdhxDUICIQEof20JWQEGmDEwcuBIQUQSMhEAiCEIdWaHE28UJiR/YmAX6i16o/0i/oqR/SH+i9fV4vJUFpKcUre9+OZ97MzswuES1YObIoefbps8EWTdNPg1M0Zb0yeIIWrSuD0zRvfTF4kl6npg3O0HyqbvCMZae/Gpyjl5k3Bs/SdOaDwXM0lbkBs5V+gdUn7SXGFi3Qd4NTlLOmDZ6gmrVocJqWrI8GT9KW9c3gDC2l3ho8k3qfahmco7XJHwbP0kLmncFzlMtI2qaAunRDIUlqkUeKGC2TS3nMZSphrNOKRg5eRjskKNK6PlZ1aEpIfMyCCpDsamxT9lFmh9aA9vCHa64q/nFqgKcDK9oOujehbHmKLbt5Vi6V1lfKJafEdkQkWz6ru1L4riiwXd+1sw+VnTW253GfVV3eEB2w7YH6BNRndI6gJd0Cr0LMT8TZeV3eCiyOIWtRj9rQDbEUrV6bA9SwER/hx3MIDaE3YOt0VPQWxnGvPOSrBb6qBWFLsLJdYhU25Hvlt69/5BprewqdUBcn0Al1EKNDG0AKownLHuYACZd6P3E5+lprFUWhUxFGMvCZYzsbTKkm76nAkz5S2nfs1fzzYntamxWe0GgxzyYN9LDROhzcHl1ivsY6qdgW/Dy3IUf9XBktPqIz7K8AjwN4iqNhOkeRrk8f3wYkd13F6AAMHd1V4zMcH6Ys5HHdohHLOlATaKAzHzMkGm3Mrs5WZLz1gBvaP9MRCW29i+uP0SGyIvSO75n3RxjifI/vLnskslG/DFH18UrdGRf4xrL7nHDtsUpHGiucpayuikI8FSpiRGCLq9WFLIKvSHPdZbmIyGuI9E9XRWHsXcGWNweDgd3hyrvk1zYO5Fb+sfvD2FxBxBNJYlfIDqTy2LGIRNgXDRYfcXbAO2L4cNvZ7Ikno+RnPWiqAQ8Fg6AtXeFHMOv5DREy5QlW391nh13hJ8r7iUKBDR1NOyEztoz3uWzzi7ZgOhLOatUjxlUl6ynVrRSLkRvKrorsSLbjkIuHNeTrv5L8N8Jn3K6/ALc7emoAAHjaY2BiAIP/zQxGDNiANBAzMjAxMDNwM/AwCDHYMdgzODDEMSQwMjHcYLjJyMzIwrCUkZWRjZGdkYORk5GLkZuRh5GXvTQv08DA0QBMGxsYcZZk5qSkJufnJoFEjIwNLKC0JZR2hNJOYNrc1QJKg+Vd3dxcoLQrlHYDANf7InIAAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsf
d09GRgABAAAAABk4AA8AAAAALBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAZHAAAABwAAAAcacggME9TLzIAAAHMAAAATgAAAGBG5l0GY21hcAAAArQAAAC7AAABygH7nbxjdnQgAAAJgAAAAAsAAAAMAAAAAGZwZ20AAANwAAAFqAAAC5fVFNvwZ2FzcAAAGRQAAAAIAAAACAAAABBnbHlmAAAJ/AAACxQAABGItJ3JomhlYWQAAAFYAAAAMwAAADYMVNkdaGhlYQAAAYwAAAAgAAAAJAcyAp5obXR4AAACHAAAAJUAAADYlmIQXWxvY2EAAAmMAAAAbgAAAG57nHdebWF4cAAAAawAAAAfAAAAIADKAHFuYW1lAAAVEAAAAx4AAAePJMpbIXBvc3QAABgwAAAA4wAAAcgLwGLWcHJlcAAACRgAAABoAAAAf+LQSDp42mNgZGBgAOKLzXrb4vltvjLIM78AijBcm+itBKN/TPwtx57Hdg3I5WBgAokCAGE2DIkAeNpjYGRgYLv2W44hij3xx8T/L9jzGIAiKMAMAKWkBtV42mNgZGBgMGMIZ2BiAAEQKcBQDiSlGDhAAgAViwE8AHjaY2BiZmWcwMDKwMDUxbSHgYGhB0IzPmAwZGRiQAINDAzvBRjevIXxA9JcUxgcGBTe/2dW+G/BEMV2jeWRAgNDfxwzXIsCAyMA+g8QggAAeNpj+MVgxAAEjL5A4hcDA7MEw1sgVmT5x2DB5M7IC6EZWJnVGCaAMEgNe+L/T+yJDEwMDD8mAvFC5hcM+Uz1jLxM9QysMJo5m1EZgRnkgfRJEM00m9EegRkYgDQ7iGauZGxgrmRYBaGR2QyrWBQY8oF29wBxOosC0z4QZjz0/wUQf4PTE4BYB+gPIGZIYWAAAHIuNDMAAAB42mNgYGBmgGAZBkYGEDgC5DGC+SwMK4C0GoMCkMUGJDUZ9BliGaoZahkWMB1jusPMrCSlzK28Vnm7+ssHjA9D3v///x+oXoFBA6guGkkdE1Adh/JsoLoXDxgeBrz/C1T4+P+d/9f/r/nf/7/vf85f979Gf3nvfr/Ldaf6TtENJwUduXsCZlD3EAEY2RjgihmZgAQTugKIF0GAhRVMsTEQD9g5OPHKczFwM1ADCEIoHhK08PLBWABKzTQwAHjarVZpc9NWFJW8JE5ClpKFFnV54sVpaj+ZlEIwYEKQLLvgLs7WSlBaKXbSfYGWGX6Df82VaWfoN35az32yTSBJO8OUYXzPuzp6d78KGUqQsRf4oRCtZ8bMVovGdu4FdNmi1TA6FL29gDLF+O+CUTA6Hblv2TYZIRmerPcN0/Ai1yFTkYgOHcoo0RX0vE25lXv9VXPS8zv+9v3AlrbVCwS124FNm6ElqMqoGoYiSUlxl1ahGpwErfHzNWY+bwcCTvRiQZPtIIJG8LNJRuuM1iMrCsPQIrMchpKMdnAQhg5llcA9uWIMh/JeO6C8dGlMunA/JDNyKKck/BLdJL/vCn6SGudfMiK/Q9mSDb0neqKHu5O1fBFhbQVR24q3w0CGeLq5E+CRxUENLDuUVzTulftGJk3NGI7SlUixdGPK7B+S2YF9ypccGleCnZzyOs9yxr7gG2gzCpkS1bWTBdUfnzI83y3Zo2RPqJeTP5neYpbhgoeII+H3ZMyF0JkyLM4mCQtODr2kbFHG9dTE1Cmv0zLeMqwXoR196YzSAfWnJrN+YFvSDku2Q9MqyWR86sZ1h2YUiELQGe8uvw4g3ZCm+bSN0zRODs3imjmdEoEMdGCXZrxI9CJBM0iaQ3OqtRskuW49XKbpA/nEoTdUayto7aRKy4Z+XuvPqsSY9faCZHbWIzN2abbMTYrWdZMz/DONHzKXUIlssR0knDxE6/ZQXjZbsiVeG2Irfc6voPdZEyKSJvxvQvtyqU4pYGIY8xLZQjdt9E3T1LWaV0ZiZPzdgGalK3yaQlNOIr+RKyKY/2tuzjRmDNftRcnZsTI9LlsXkKYFxDZfdmhRJSbLJeSZ5TmVZFm+qZIcy7dUkmd5XiVjLC2VjLN8WyUFlu+oZILlB0pUyHzgUEmDhw6VNXjk0LvKoOnya/j4Hnx8F3cL+MjSho8sL8BHlhI+slyGjyyL8JHlCnxk+T58ZLkKH1kqJWq61RwFs3OR8FCfyNPlwPgo7reKIqdMDibpIpq4KU6phIyrktfYvzLQSg6tjcpjLtHFUpI3F/0Aa4gD/PBoZo4/vqTEFe3vR+CZ/nEjmLATjbPeWPrT4H/1DVlNLpmLiOgy4ofDJ/uLxo6rDl1RlXM1h9b/i4om7IB+FSUxloqiIpo8vEjlnV6vKZuY9gBrHWsRE71umosLsF/FllnCgOC/ptCEVz7oVaQQtR7uuvbisaikd1AOd4IlKOJ539wKnmZEVlhPMyvZ86HLO7CAbSo1WzYwfd6roxTxHkqXfcaLupKyXtzF44wXW8AR76BX34nhEhazbKCGEhYaiAtCW8F9JxiR6bbLYcCR+zwaKn/sVtzIERW1E/htp1vuhS2U/DrnQECTXxnkQNaQmhtaTQUMjxAN2WRjXK2aThkHMMiosRtURA3fRvZ4oBTsyzDlY0Wc7hz9+qaFOqmDB5WR3MY3Bx54w9JE/Hl+NcRhKTeUFBXOWgOLuRZWkoq5gAG8NVK3j6o3X2afyLmtqFo+8VJX0bVyD4a5WeDtcQ7KUqEKqN6ow4bZ5eaSaPUKhiS9ro6lgR3+Gq3Y/L+6j93n/VKTWCFH6m2HAx99TsYw/gbHb8tBAgZxjEJuIuTFdDjxdccczlfoMmbx41P0d7BzzYV5ugJ8V9FViBZnzUdeRQOfsmGePlHcjtQC/FT1sWcAPgMwGXyu+qbWtAG0Zos5PsA2cxjsMIfBLnMY7DHnNsAXzGHwJXMYBMxhEDLHA7jHHAb3mcPgK+YweMCcBsDXzGHwDXMYRMxhEDPHBdhnDoMOcxh0mcPgQNH1UZoP+UAbQN9qdAvoO91POGzi8L2iGyP2D3zQ7B81YvZPGjH1Z0W1EfUXPmjqrxox9TeNmPpQ0c0R9REfNPV3jZj6h0ZMfayeTuQywz+e3DIVDii73H4y/KY4/wARbE1geNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDYyMGhBaA4UeicDAwMnMouZwWWjCmNHYMQGh46IjcwpLhvVQLxdHA0MjCwOHckhESAlkUCwkYFHawfj/9YNLL0bmYC6WFNcAJhIJBt42mNgQAAAAAwAAQAAAAAWABYAFgAWAEwAhACsAMIA7AECAYgCCgIKAjgClALCAx4DVgNqA34DkgOmA9oEBgQ6BHAEnATQBOQE9AUIBRoFKgU+BXoFzgYEBiwGZAa4BvQHKAdYB4YHoAe8B+wIGAhKCH4IjgiiCLYIxAAAeNqtWHtwVNUZv985956zd/fu7n3sIwl5bTZkMQuB7DPyigzyCBBRDDBCUVSwURiU+iiVMKYEFPExYEUHH+04U8VxfHUYR9SpTqftqNVSbVGr1jJOZxiVoR0hhmCyl37n3F0kPjr8US67e3P35Pf7vt/3ne/7ThSiZBRFeYNEFapwxfcCU0EhU9JZK2ulslYy88CaTIZES0cz8BsFlGMjDWSIva+MU9j+EIEpaSXCk02plpRimVAoFqZBLMIZJZbp2HFcadrAUm437K92iGWx0IErb7zxygMjacaAtsEx+lv6Cvy73gHGnCPu6+7O0oelv7s73dePIFcCuVqRq05wAXI5uWmQicfiigmMJ1kamvK5YsGxLZOSVEvC8QWRDPa73SnGuMYs68lV27atetJif9aRzXWGd7h2GwU/jb4LcdhBFpAu2AHxd6MoAPJ1jDSof0S+CPIFBB8UMrFohEWZwlmyqSWfK+QLinqvv8YBGHmW6KZhA6hL2J8MywAV+OCAatgBcRfYogAE0f5ZiMcRDxSBZyWiSSsbhSDkjh4daQi82DX4cdcY7iiuDRLpayGLvirxiDBBSKykcqkOy3A4UZcA2Iapk5FnAdgBwzbUwQGOvAG8C2zhQCSmNtIA55f5qdQvn7AS+aylQc59+yi7p2uwqyswXq7dhbbuwbXLcO0U6TtPYlTxsii+t0GqTc3lp5NCbiYpzoRioRMcs1gQVydk43UQ4SHgjDPLFO88FpeXZcbLd3WA+Am7b247ukeoz1k5i2AO4C1RyayVjo/iY262rktMjiWYv/3SqnoGEFixcPG0CVUNKzAe/gU1iXiNf2Q802f0LviRAffCbrO+tru/FRGoxjRV0yghRIXW/u7aegt2wz1G+3kbFldXB5hl6Oq4FbnO+brb527R+9ddnGqujzSt6/d+3rQyURMJqbpxthZLUIu2ciymkYojlh2L1wP+z8RqCWtiwu8QUM9tFgYvUTxprLJExZaylqZUEnZRPWBGJrb8PIFbBUALXTWfYNQIMDr/qpAGqAqrvqy4MBK2GWXZ1Ep0X18eTeUnt2dT0eU6AL9uMSfsNZP7Y3Wr74zUGO6N7tML6pbvmUQ0rpmoBpm0Z3ndAvcZ9ydGTWTd0kKLn1lBrtZNvHq7DgOwTd98bU1TOl6Vbqq5drMO22BAv/pXk1Um98Lp46Sdb6DdShVq4Jf50JzNqPFMNCK2wiTQVJGSYvvBX+CQQejznKlMJ27anYSvVtA5phz5dP371E9iiVWrV69qiKBRuA8UQubxVbSodCB2nbfPRKqLK5spFsYXsqgvZj33ckqWF5StJdnEmcaS4raYk0lIrmiOz29bcF3/JS3ntUx5CeKzVNCAQ9J8ce7He6ZnFvQuXJZpbp0w8SX3yAUqZkZAbTZfmvswzRPdSGd1VXWWRnB9Q70GuqMXrA58XFfNKs+n6n4bn7ZKTYZ3k3YleE6afL3hjCaa/39q4nCpyfBjZN7p0f+LJl+7zfF5k39Ikxnt56pJY905aKJcP1JPR3Gv1IqaSYXdShEtj8UjsmbmcylCc7grUp0Qc2z4EEqgBXkASn+jNGqYiwYaTbNmUTf0rh2d4b+LBvycD66nOiEr4AAZJhc0Jmr2Pgilx0v7JJ+sqT9DPu3smpqwsKKudz/xKup9ldq3sbzuTO1LYuVb3yXrXmDDD+JlERGCXZAUcIP3dSnfiyfX5WFCl3v/SG9gA1ZSiZcsbaQL1a2yPwYlngiaHyjDKi7j1gb5QtEWvTJL5zD/W78PiwqYnk00oNGL4XbuA1vdyqgacg+XTJc9kmg0ANPGzv7nA1oFH+o+EDynh+AxcpVSjTxhUaO0JtYks6JlBpidmD1TATMnFrUi8CjY44IFirUWVHJhIBrEToElBKj/1megjaoATde4T+wo29+H9t8j7Ze4UOnvtIWKsoZZWQ/RSLwG05EuZJYDPu7ef3mjKrDT6InV8Ien/aXtlIFPh5fJO19BR9bGIgdG4+Bf3d7SzsEQ6tlQ2kjmoU6it4fH9HYn5nyjVC7lB+FTgxUIIRGsF0QamS2Javftbmik6k8DyOTOLbWfdN+sMJ04BDeR+UdzaQ19evP0EJl3blqR2eeuFfrQhz54WoVErB05jxQLtlMQN55UjGNZ56yjmjU27N5Xa2mko+jF2r0VY13q06k/nTuKo8hN737VSsuRHv3MTYlIi5h0ljaTh1Crb+d8J6x0T5U2c95zqluuw7dfkBU4x5XXJTBHobOHrCg94eH0Ic7Ad3K9swd4qY/zU9090i+ltBlWlvlkrlty78DKHrWtZ/gU249YHBeu/A4Xr3AhRh9iDHxnv/Ae9/HSO2z/8CnJBf0Ym4N0QEniuqi0KS7KqShy4iMSxQt/8KLlqdsJ5A2GknavNTE4AGZrjoh4GXsyFwbpgEhJpub3rQVau0sNnD/+OOaKCOCnx/RXdk1u4dLHp0rrYVjdoeSQt/bseivZsWCVuz3u2jSwMnsKp8x8S65caNEa2E4uOE+SB1Z3rggx39Y5BY4jIZBe+dQ8gFvXuKxXPLtDZtEnn+uP3nZph65qFw+suUH//Plp8vE/vjCA36kTaAKizz54m/HFv6inz+gWclDxy30SHDOX5WXmZoSNscpsEiUHWTLwyKI0jk4qzbWaCA4+s30LZzA6wFjPQ8tW+Q9AHVZ9FOXLr4xZUx5cpjJwKrGAYSh4M+hYTcS4XQmB57RQXvopbiCPL394+y0TwLvZS4TGAg9j23hmj+Px4GxZcVQSgqbKVz73HJ4RArcvnuFpONZ+uhVYV/8Nvfqx/dOF9ccHK9bbjlfL+0vrycFyTOvG2h+3hUyV7jkmqF5KVUwwz4rp2dGrRHRsnO+oBM89NSZ4z037nmD7X4AqInNvdAsMY0ybK7qM/1buyRES7cIsEx+5PF6Fb+ziMy66I2A6Yg9ctDYsbPMqFCb49b0/78KjlCV2wJNrgNTdywJTx3+per169C5yhO5TapA3rgl9Qmoay2sAeMtkrCb2OLAcYQo5AoygJUZt9QeHljIe7O6+etNH4NcN3+he/IqSnovInWTgKc0XfPgR9z33gdI6cpwcD4Ylz90jjeQ17JViTnJ8yFPMOzb6kRFDDAbGdrh3oqF3D50kPizsJBRxq04M4ZEiYpCTx23yT3KYBjGzHFP/ekkpVWrVTcei5LDE/zHi70X8mJg5vLqLhbygFLFfSCXHQZQSznaaziUwZ4lb5YQjQXJyCMmMkUaEPEHfPKE9q5sRm5YSpSYb3xLUEtjkVZx8j5CNio7YmsBWm1KeKBY5XMOlBqEQZCATDJd+qVR+R82RVUoAf0eXPbNQTGCyJSzMMfKqasDycNj9Ha/hpNtQ8aP0Vgj7xenPTqfhbWWT7B+64OKpvDwtZKQXcqr0TlVYAG3mW9R/zRZqqxZWM2La+s0vn28HVB5+jyVD27tm6hiYXjxS8UvnxyIM99/pIcT/CPFF3zNUxE/lc1kJ3QBRLjefuEQk/JoauP2W/kU+ZoW52tCxtG/mVJPA9PpaMr9reyiJ6dCRnlMVlLifodNvQ7e02xH5S4uyDlXG1bLpAnsyVEnEoFmdKGMCCS+/YkoVcsE8hI3biWoJjLY3R8NIJs8fQ/j2EXKIudJX7gveCUsAy+ZaPloV0CU4JNSpmnLF8rAnjv/AzYlqM6gSYkO31Cccbfb0CVxenbDjjChneB5Cjc70sWQ+EfXDrzdtEt97iyYqa8p/G9G8v42057PRLL7WeP/OfZ3o5wquWvMNX7v3vfJf3UY+cXjapVTBTttAEB0HCGoQEQiJQ3voSkiItMGJIRcCQoqgkSIiEAQhDq3Q4izxQmJH9iYBfqLXqj/SL+ipH9If6L19Xi8lQWkpxSt7345n3szOzC4RLVpZsih56vTZYItm6KfBKZq2Xhk8QUvWlcGTtGB9MXiKXqdmDE7TQqph8KxlT341OEsv028MnqOZ9AeD52k6fQNma/IFVp+0lxhbtEjfDU5R1poxeIKq1pLBk7RsfTR4iratbwanaTn11uDZ1PtUy+AslaZ+GDxHi+l3Bs9TNi1phwLq0g2FJKlFHilitEIu5TCvURFjg1Y1cvAy2iVBkdb1sWpAU0LiYxaUh6SmsU2ZR5kdKgHt4Q/XXBX849QETwdWtBN0b0LZ8hRbcXNsrVjcWF0rOkW2KyLZ8lnDlcJ3RZ7VfNfOPFR2SmzP4z6ruLwpOmDbA/UxqE/pDEFLugUuQcyPxelZQ94KLI4ga1GP2tANsRStXpsDVLERH+HHcwgNoTdg63SU9RbGca8+5KsGvqoGYUuwNbvIymzI9+pvX//INdb2BDqhLk6gE+ogRoc2gRTGBSx7mAMkXOr9xOXoa611FIVORBjJwGeO7WwypS54TwWe9JHSvmOv554X29PaLP+ERot5tmigh43W4eD26BLzNdZJxbbh57kNOernymjxEZ1hf3l4HMBTHA3TOYp0ffr4NiG56ypG+2Do6K4an+H4MGUgj+sWjVg2gC6ABjrzMUOi0cbs6mxFxlsPuKn9Mx2R0NY1XH+MDpAVoXd8z1wfYYjzPb677JHIRv0yRNXHK3VnnOMby+5zwrXHCh1qrHCWMroqCvGUqYARgS2uVheyCL4izXWX5QIiryLSP10V+bF3BVvZGgwGdocr75Jf2ziQ27nH7g9jcwURTySJXT4zkMpjRyISYV80WXzE2T7viOHDbWcyx56Mkp+N4EINeCgYBG3pCj+CWc9vipApT7BGrc4OusJPlOuJQp4NHU07ITO2jPe5bPPztmA6Es6qlUPGVTnjKdUtFwqRG8quiuxItuOQCwdV5Ou/kvw3wmfcrr8A4p56dgAAeNptzkdOA0EQheH6x4AxNsnkaDIs2zM4bYA27jkGQoSFJcIGTsBZuBOcBkzP846SWp+qpdJ7llicnw9L7b9pjx6WWMmqVrO6XdilXdmN3ZLYl31TYsI+mWSKMtNUmKFKjVnmmGeBReosscwKq6yxzgabbLHNDrs02GOfAw454pgTTjkrv78MnfMumrm08jZ8eni8f32++/tJM9eVPellv7A39loOZJB5YZEwsilTmclz2ZJt2ZHq4dXDq4dXvle+V36/uOuErox3wTknY4/QbDk53lOZydgr5PlABpn/AtN8YLEAAAEAAf//AA8AAAABAAAAAMw9os8AAAAAxvkyTwAAAADWkUsR
d09GRgABAAAAAFG8AA8AAAAAjdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABRoAAAABwAAAAcac8AMk9TLzIAAAHMAAAAUwAAAGBFTFlvY21hcAAAAyAAAAEyAAAB8mk8GeNjdnQgAAAKfAAAADAAAAA6Aj0OXWZwZ20AAARUAAAFpwAAC5fYFNvwZ2FzcAAAUZgAAAAIAAAACAAAABBnbHlmAAALuAAAQXgAAHDEq1xATWhlYWQAAAFYAAAAMwAAADYOeJjiaGhlYQAAAYwAAAAgAAAAJAUoAZpobXR4AAACIAAAAP0AAAIUB1IfDGxvY2EAAAqsAAABDAAAAQyVAbGMbWF4cAAAAawAAAAgAAAAIAGTAdFuYW1lAABNMAAAAycAAAfpdukdb3Bvc3QAAFBYAAABQAAAAbLWyrwRcHJlcAAACfwAAAB+AAAAipKM/Mp42mNgZGBgAOLYz+dr4/ltvjLIM78AijBcm6EtBqP/f/kvzaTItA3I5WBgAokCAGzCDJgAeNpjYGRgYNr2X5ohion3/5f/b5gUGYAiKKAVAJzEBsQAAQAAAIUAfgAFAAAAAAACACAAMAB3AAAAcQEhAAAAAHjaY2BivM84gYGVgYGpi2kPAwNDD4RmfMBgyMjEgAQaGBjeCzC8eQvjB6S5pjA4MCi8/8+s8N+CIYppG8NTBQaG/jhmoO71TMlAJQoMjABOexJKAHjaTdKxboFRGMbxlxh9SUsjNGj1Q7RRQQ1q6CAGBjF2bTC4AJNbsXesLi6gvYAuElfQSzBJhP+rz1DJz3GO5zvvOS+2t6bxigx525tFA/vBAkV0ECKLFd7xih7K+MAzvpR9wAQtVJHT50fNfawpv9KzZY0vynitS1RwgSRSyvm8r3wCGcRxhbaybeW87nU0OB60Htfenq1jqzPf4017fuq7GLq40TzUXWKq72sBnth/p/WWxjuklctoLa0z5f7OdM408YuGejpT/2dYY/mvlp9vjAG+McdIZ17r+YbqhepBHgXVrah/ftcSbnVX/w023vdIlf8AbGp2AqXkLlgAAAB42mNgYGBmgGAZBkYGEHgD5DGC+SwMF4C0AYMCkCXAUM+wgGEFwwaGHYyGTOZMx5lOM91iuss8hXkG82zmecwLmBczL2NeqSCpYKSi/P7///9AnQooOo4xnWS6wXSHeTKSjqXMKxQkwDr+ArU8/n/4/57/W/+v+2/2z/Dv4r+L/k77O/XPgz93/9z+c/PPjT/X/lz9c+VB2gO/O3ECrVDXkgQY2Rjg2hiZgAQTugJgULCwsrFzcHJx8/Dy8QsICgmLiIqJS0hKScvIyskrKCopq6iqqWtoamnr6OrpGxgaGZuYmplbWFpZ29ja2Ts4Ojm7uLq5e3h6efv4+vkHBAYFh4SGhUdERkXHxMbFJyQmEXRkKoKZgi5Xi8xJhrPq6gmYmZ5ZyJCXX5BWxJAFAEWFYVUAAHjarVb5c9NGFJZ8JE5CjpKDFvVYsXGa2iuTUggGTAiSZRfcw7laCUorxU56H9Ayw9/gv+bJtDP0N/60fm9lm0CSdoZpJqP37e6nffeTyVCCjL3AD4VoPTNmtlo0tnMvoMsWrYbRoejtBZQpxn8XjILR6ch9y7bJCMnwZL1vmIYXuQ6ZikR06FBGia6g523Krdzrr5qTnt/xt+8HtrStXiCo3Q5s2gwtQVVG1TAUSUqKu7SKrcFK0BqfrzHzeTsQMKIXC5psBxF2BJ9NMlpntB5ZURiGFpnlMJRktIODMHQoqwTuyRVjGJT32gHlpUtj0oX5IZmRQzklYZfoJvl9V/BJqpyfOPc7lC3Z2PdET/Rwd7KWL8KtrSBqW/F2GMgQp5s7AY4sdmqg2aG8onGv3DcyaWjGsJSuRIilG1Nm/5DMDu6nfMmhcSXYyCmv8yxn7Au+gTajkClRXRtZUP3xKcPz3ZI9CvaEejn4k+ktZhkmePA4En5PxpwIHSnD4miSsGDk0ErKFmVcT1VMnfI6LeMtw3rh2tGXzijtUH9qMusHtiXtsGQ7NK2STManblx3aEaBKASd8e7y6wDSDWmaV9tYTWPl0CyumdMhEYhAB3ppxotELxI0g6A5NKdau0GS69bDZZo+kE8cekO1toLWTrpp2dif1/tnVWLMentBMjuL/MUuzZa5SFG6bnKGH9N4kLmETGSL7SDh4MFbt4f0stqSLfHaEFvpOb+C2uedEJ40YX8Tuy+n6pQEJoYxLxEtj4yNvmmaOlfzykiMjL8b0Kx0hU9TKMpJKI5cEUH9X3NzpjFjuG4vSs6Olelx2bqAMC3At/myQ4sqMVkuIc4sz6kky/JNleRYvqWSPMvzKhljaalknOXbKimwfEclEyw/UKJC5gOHSho8dKiswSOH3lUGTZdfw8b3YOO7uFvARpY2bGR5ATaylLCR5TJsZFmEjSxXYCPL92Ejy1XYyFIpUdOl5iionYuExyZ4Oh1oH8X1VlHklMlBJ11EETfFKZmQcVXyGPtXBkrJobVReswlulhK8uaiH2AMsYMfHo3M8eNLSlzR9n4EnukfV4IOO1E57xtLfxr8V9+Q1eSSuQiPLsN/GHyyvSjsuOrQFVU5V3No/b+oKMIO6FeREmOpKCqiyc2LUN7p9ZqyiW4PMNYxFtHR66a5uAD9VUyZJTQI/jWFJrzyQa8ihaj1cNe1F8eikt5BOdwJlqCI+31zK3iaEVlhPc2sZM+HLs/AAqap1GzZQPd5r7ZSxHMoHfYZL+pKynpxF8cZL7aAI55Br74TwyQMZtlADiU0NOAXhNaC+05QItNpl0ODI/Z5FFT+2K24kT0qaiPwbKdT7oUupPw6x0BgJ78yiIGsITQ39DYV0DxCNGSTlXG2ajpk7MAgosZuUBE1fBvZ4sGmYFuGIR8rYnXn6Nc3TdRJFTzIjOQyvjmwwBumJuLP86suDlO5oaSocNQaGMy1sJJUzAU04K3Rdvvo9ubL7BM5txVVyyde6iq6Vu5BMRcLrD3OQVoqVAHVG1XYMLpcXBKlXkGTpNfVMTQww1+jFJv/V/Wx+TxfahIj5Ei+7XBgo8/BGPrfYP9tOQjAwI+Ry024vJg2J77u6MP5Cl1GL358yv4dzFxzYZ6uAN9VdBWixVHzEVfRwKdsGKdPFJcjtQA/VX3MGYDPAEwGn6u+qXfaAHpnizk+wDZzGOwwh8EucxjsMec2wBfMYfAlcxgEzGEQMscDuMccBveZw+Ar5jB4wJwGwNfMYfANcxhEzGEQM8cF2GcOgw5zGHSZw+BA0fVRmA95QRtA32p0C+g7XU9YbGLxvaIbI/YPvNDsHzVi9k8aMfVnRbUR9RdeaOqvGjH1N42Y+lDRzRH1ES809XeNmPqHRkx9rJ5O5DLDH09umQoHlF1uPxl+U5x/ACtxTWMAeNpj8N7BcCIoYiMjY1/kBsadHAwcDMkFGxnYnDZJMDJogRibuTkYOSAsUTYwi91pFzMDAyMDJ5DN4bSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzm5WDk0drB+L91A0vvRiagPtYUFwB3WSTLAAB42mNgwAAhQOjD4MOUzMDIlMy4noHxvzKTKAMDU97/r0wpjDv+//ovA+IDALGbCqQAAAAWABYAFgAWAFoApgGSAk4C6AOsA+gELgRqBSoFcAWsBcwF7AYgBnAGxAdSB/IIaAkWCaYKAgqKCyILWAueC+gMMAx4DP4Nig4UDqIPFg9uEG4RFBHKEmwSuhMYE6gUIhS+FUwVoBYUFroXrBhQGNQZUhnMGmYa/huEHDAceBymHOQdKB1GHYgebB8SH5AgRiCyIWYiRiLIIyAjmiQ6JIAlZCYSJlwm/idwKBIosClAKc4qNCrgK4QsFCzCLWAthi4QLmIunC6cLtYvDi9kL6QwCDBMMIIwrDDYMQIxQjFgMZgx+DKCMs4zEDOGM+o0fDTeNTw1mDYuNrQ3Njd4N7Q35jgsOEA4VDhieNrtvXmYHFl1Jxr3RsSNfcnIWHLPyj2rstZca69USSpJVaWlpVarS1JLrZa6UU9vorvB0Cw2ZszWmHmf7TEYGD88mB3TPUBjz8x7LOYNnz+DMWDG8IbvGY+NYcY245mxsbFNl965NyKzUksDnvnem/ljWq1SLDcy45577jm/3znn3uIw1+Q47rewx/GcxMnPEQFxeLbRirVitVas1PzFK80m9p7/syb6FxzmvshxqI8f5SwuzU32xw0ZIw5tcghx5+BTvC0B8Tw+x2Hs4m3bttN2esIviiRoxNvdVg65FjJRsTqDqvEc8lxSKlY77e4XC6kgLxISm7YJEZcS+bFUMl/AneQYyjd/4VlTlqxnf373bpxLpsbyyfQYvMdT6Cj6OfwY53AVbqyfLadikkDfhEf0VeClOA9t1xN1RyAJ+t1N33MlE0nwjbVpVKv2br30VG4iLxFelt24LPNE+hc3neM1N5P2jPvOJSVZlpLnLpk3nXPwXmWQz3/El7nHuFdxb+nbk1mMeQ4p3NW7sarwm1vPZk/c3Z/QkKJyymkRhGVsWYYEb413iIAxtrdMGXOcek5Hquqq2+l+nV5nbTiMrtzw5I1Nd/qZJ6499dJrr3riVQ9cuXDPXXce29pfCSqB195fsUm20Wuv8r1WZxV12qUaiL3XXULdHvxp5pFLPDc6azX9gJ62mgEIyEIlz0T0Zk4CcZEG8ohEqMyqtXa30775vFirVujF8Bn4sjKWeB1toNjkZDIgMzOCoGJlUhGsdoseqp7hYiudIYlUqYhijUkkYcILGCXIzDSWogZ2q713PE8ClG+1UYz+/RxRJV4GabwRYaT7KQnnKxtiPK5bj4ijh1hOumbUTMAiJiIRkjIIfP8B2oT8BEE3HEu/g1lj+AF6zXOL1z+CvoI/wZ3kLnIPctv9I9vrmixw/OWOyWOhNVfIJ0VovQltBZ4TrnEChl48CkPGY/QofADiz3A8j87BATp+8cLhjalGLgMzw2ugaBr0ajAvvDzyqdwlYiH6s1ScQZ1aFRQU5gkbHLjq54fXeqsIBo0OZgueyyL6M/BJu8RGxXMDvxW0qzU6nL0u+kom5WdMITZHkHq24Xcn9/GK7OUkpDnx3ipRbNfPWUGL15KZ2e5p3sBjeV7JxGWFD5SLGfm/ophZMqSur/7qbA1JMMD/Jp3LBm5MKmj4nvO8d6Q6eag1bqB0UZX9TAbzUvyuBcfUzLxvez0JfRmLRnBs6lQXScgUs2niIFktpAU+uCP1yPt5JZY27KmU/rlC07j3Xi3HiVzp+q/BfPoEzPMxrs1tcKe4pf78dBom+JEyxgKGCQ8zTuDQZZA4Fs5wgoDPi4TeOlEsHFhfWpycKLSL7VpFIj41BL0mkxTYHjbxq71qqRoKqgfqy7OB6HIDSRNOIr1Q8KPPtGtFiVDZglBLtTLS+LRXqeRkPedVLgigSaYFf23TA2vkY9W14GD3T3nlg7UyL2e8enlM0jNu/UU2r2KsiPTn7MxRBWG/dmjmsMoH9SdlzMeLUyr9mXv+omeK0KPPinF6ID6/SpyfmdtUkFfdnD6sY7e6WbfTSl1JpxVQtcz176E/Bd3b5M5yV7lz/bu3EJLuSmGM7jlsGSCgqxOgnEtI5MVNqqdY4K9xkhRZcLDdVEuRvUWnlXiOIFH0xe0XPXDHibWVhfnW3PRktZzPFhVQXWrUm0EOhfrqByCoNQTCoeal26MyYyaD3qTCAgFTsVIpzqDQZjBxrzGDPIOKpSIbCmqG+GqtONDgZu/e5Z7jZ4tFr2Trc1KQ41UE01g257vEcUgyZTfTklwuanrZtcSu7T1oaK3l2rKpeko5wwc/nwSvlDGwrkzLKFVN4oA3UlirVdAXD55Tzc1mZ26sFCsf0XsnpBxCRIzFdYmX5iW+8YY5XRnP2HnHPZaW27rWmZ0sZGdrTimjHzqxaKApJTXdVmbLwu6zC3NJwR9fsdA0CJJD3DMoj+4BX5Dm8v1MgDBzlBg9ARJmsjbwdiNZ5ME5OiNyBLkMJnanCDL6nbGUbqXHWl7VUtWsNzbBg4kMcKw5JmqrjTtWs76CMppj2OsNE7HvfS/YqudgzhS4XD8dB69IvxdunIncNOKO5woYpoPoUm0O7Uhk+8M3oH9cakjQc1VLMJKn7jlbnU1rglXFQmxfNWZls40rVieLRXf1Uw+/4+VzZVfEWYGo2uS+ZO3wew8/3ldDGZyBd3kA3iXLJfoeR1/gDL0OCsah4w32FvE2VZS93herbfYynTa8W/VMzeK1zKnz23OH47bnKMZPZ0hj4riP35bDggff/pYXH57THV+Tz717rHF55/S8Sb/3AHcW/RaWuRdzp/u6CGaYW+mBpmPwwFXwwAGdpOiciKieg11m4xHnwd26zNzzF0caYHCt5uVLx7aXFupV33UI1fxVRP2klEHEzSKwrtQOtwaQIsjhls/gTW0al4pZlEG+6/ngFZmf7C2jbnsFtUvFEH7QScA+oEeb07lDtQG3mitoGVXbneofYH/Mx/AueHJOUImdsIRLaE5PWsgKbEXW50oU9+DAsm9shcykNsvf0hB9x4zHzWxWjhka+KQkSDJwPA13UIqYiu46gUCyPsx+zYjJ2awVd29tLBskxd+ueTjuVe4O9B0c5/LcVH/CiwEKEgAdIbwJcgWhwoBcpoI+B7KPc9vtYqldKhCSalRCj0f1kgGUDjO93tCUoHEn5hnoxAkSBOTECWR4MQdOEgk4eSiVOnkSS20JnzyZSv0qlpsUHyHuI9dfgi5xb+ZSXKGfg7fAT7CJQD2Hy20jDsCVyKVQSiBuo1AMxb9n7ME0MXXsIaVQq+TG2xsdhWiWzmMTGQVXNCuFfG1pqn/W4U1TjalI1BJiln7vArLQV9FpQNUD3T9NZbNDdf9o3KG677R7BehYYSGL7s3ldt+FEm1FbUZz5zPwyDa8t8bF+3Y0awA+b5eL9NHe4DVBfz5TTY9N1PJjlY1cvTqWr1bY84vgOylmiVP7Y/A4MgTocQqPH0ScpnBxFOeh18Ft3N4F24UZsCmpvulhtPsJWTvlmYIs4o+anmfysvj8MQt6BfKcuP7X6I/wIyDMKlfpFykFuMmX+Gjb87yqV5muFxgZYP408qhMxiD0gGJGZu0pRIVrpQ+NT6XIwuT5x06SCdKbPr/xht7+8sSiIi7sW2uZBr4jg7SZC//85R+1ETu49DZFe92JK0dOIv2Xdo7+YxOHcrwMb/Cb4A8rXKfftEM5iIiaYg5fgxPKWkBBz4IumjzoQz6bTMRjlsFVUIWAdOIwZ0P01YVXgzePhWhAKkQ6ytDWGx2TmK4prFZlzUip3Q5x/N3fCxzS6SJeGEfvVw3TswHKH7e05PN/w0uZlKaAh/nMpzGfZe/Zhnf5OrznEvfi57qIE1FEF8oETniRAy8NFox/gBNFJlUmX+EsQB5TAMtVGW0m8vBBt2u30weP0GlVypl0wlUlbgktSWEfWReXqFkbECMG4YEoDWxzYQ9xgnWulorg82EIH0xkD7bKNX77CU8tu+35V9z/gDOrSBgTc/eNhoKF3w2W/djZ/b0c1tLorblkd8sxtteyhZVurj19rwjo01Ekc6wsGkQ0HVskv+Z0G/nSwsFpMeYkMlQ2k4BpvgldOkHxzCaMoWQjkbiIF+tI4IVNGYHKShyBvouCyAMAJyAMIl4GYDMQAiAfykx9DGN8cP/yUnuuMV4uwjBI3Al0QomkwAx5hBElPxhIIwIrAwROkV+opAzsDIVCLzDkHWr3q4IsPzk2PY4TL511T06QOR1h4+V33v2kgrO+N6aUT58tKwdmxPGSGFdEs9BxF2OZ1V6WOh8k5NEnx1Kllh5H4tbY2NmlhFifJ05CPnBu/7xOAoDeqls+FE/MLAP3kLKuQgDLqTkQdsGhZp4XZN3LsTmaBRH8BWj7HNfjDvbXW1lwhha0wJsOEJIjMFq8AAaKR1dAQt4WTA+O7MiIEJNsN5sc1wTcDA/PFSqlnUJdBUvdG8AG0JESm8K9rsMMyBIgwdjQYnuDqS7VYtQ1/hloBFFItf7a19oiRtI3BUPHvlq3pMkJCuYmJutVuM/7by28tnAfYgoBEPk8IoaYTGnokqghydp9By93Zf48L4LmZJS/RN3WF9sonO9tsEdfB9y1DQzcnEZIjMFUPwQKQvm3ChNqEtyPBBID1MtxEswnjjolYBACv8NRYi3T7p/nCPEJTKypkeZI4h794e13+gHi9u9bWWrNTTXGAlNXJHAy21S9es2BzoCKlCK7ByJsLeLuIgopNiXczd4QDlLFA1c4sMsuSPJ783fNVXR7uy7pjiNqMGzEEgXby+TKsXcANhQx+Hj/1a9CamOxVuxsIPWV5183o+d8Ly9jWyzt278ws0/h51QROLXwy/9MMMEhA72A2SILIOAPi57l3r9ukq0HLmRncxnf0QRsC6Gtn4rmYYs7xB3tbwIMxwkgEpgiW2C61PbIMDF5mHgU5UqIuQFChHMgLV/Y7sAgrS63D3UONcYzqZgFnreFWlQ4KHJmbJYx68JskOT1ImcRuYsoXsOsVRwoAsOpwC3C+QjDvba0nUnoQplkFcud3nYUpPWPOnav3tJxJj/VS+Vj0uWLm2v7/NZxPpGZU2DWB6WY71Xwo4vdRAYZVdEiAhG1Y92yKMjjWK231h1/ejU/ZRJkvu+nL/xso7H79YXpiemugZ2g0snXfI95aLBTf43+EABGg/oaB/SOBceEHei9Qc0wQzzh/PIp9kinkoFlKDLXQA3CPHGExUsh+x/oCIigsCcBCjs98oUJknqyLn9bkZOuoIkYSyUYvqMxsP72WPydBElqc3Lq0+9sypqjyFjUxckpwbN1WdIs1RpL/Ov/QnQZjTHAOwXv/U3w4ZNclzvIrfQXyzCqLhJEGFmeE4XBgDK3TpAgDPz6fK+/2js4f7DTnp1Jpyh/G2GF4ctSbB9Z0YjxgbVkITf4UWlXi+Bo/GaXp7MDrpSKjPUtvvRYWT5879okBtTJk5k1oMfGS9//UgMjdX+LRnFkfXwaHdi47/D23dsvWzgqahszC8eUEvpC/xLSzi5N7reoEcTY2VcnTiAfOHv2gAz+eGI9zq5L8bVCud2s1pvN3XetT+uxyuyBac89xPR8OtLzSW6de6SvSsAJq+BoKH+wqEsGocDsvwpehuMJIIw9V0sDEKGXAZdMm3GhN3rhdjt9dbxSqUxMFCSSbqCQF4cUOoo7SAO9v8kD9fhqRJlzKJoEPXBB6A2L9zXmM00dJbL7rpycP4pjx2fms2MnaplskMgQrdIsHnGahXo1taUodddLT+y3ZIR1xM8l0839UnJuJXt48dgnPP/V21M28N9GkM35qqVlOo8iVDCrx/OeOy4rtZzpWUof5MWwKnoGsGpA0eYgIGwPdR6QVblcLkbh2CFyjd0OxQ7+RQ+GcLa6+4M9XIu5ZwDP38G+q8Rl+km4wmP+4vAr0XaleusXxfdER0KTyhz23pf2epVsrbZQS2sA480CjScPv/7XtcV8bXnmWK9mWilVihVMPvI1C1wPfRVPAcdvP5dkVHvrWR8URBvgdWA3aUDvN/HvnY9PMvxfCS1embGd8pBBYkn00Vd9Q5LI7ocEDWz8KVGWTV/HT7+VoAn9rOXy/NcELafxX+MF1zJ1fPe9wid1jsmnyn0WfQf9CicDIt/YerYErxPnMMByzN9DX2EnlFIaRAcvA3D4EgdzDJ+mQ7XDmh3d6euKoriK2407YfQ+5CnVIAoc09esZtHrcqndJ1LZbEL43L9J5dCrU8BeFOWfK6mkgiw3qd4goxTIKIFolH4go2jI4ojJ6KbowEBGoTnxBYYnhDBA0FvFvUp1IW7KEkGnBV0Xdj9EJMkAEgsS2v19Dat2nIpIz+jC13jezWlMQhqVzyp8xRfxg9wE1+Ee7mtl6LFv00AtvJceTm4M3gwBNxDAzjw6jNfQSSuegznsivDCL9TMG22201c815uaLlJyG/VkGGOJ4gGD6EsIHqm+grqydAk7XH30jse74zU1fjyOkWwHvqmIwVOWArbjgYOBlJ3O/lQhlciPtXPou8v9qcLcbEHWGstKPmfJkpkrufesyYZoi5XANLx8bveB5BjLpIxRWUxe/zv070EW89wm1++vJAA/gMcSJSSJrGMS6xgnAVa4PIiTBLSD5Bx49STZTtaLdVDflkwyLLw67OEwugcXIszjRb561KwxZ16OUBFlgNACGky+4UXECLzXL9fnWpumWpw+mHFMKZnp9zY2xluy163oaV+IG+0jVmCKL3oaPVpKi6opp/KltJAQMqj5imc1MKXXX7pcP9Yp1I82N1VXdDqHH3v0cF3FRRVLrqG3dR5pHzl114aKBePAeAP+xRqbQ9SC/Wf8GLcCKLLXb/dXsSwVaNxiE6YVz8n8fUAswBMKmKcKS+NEwMwPb9Qq1cCttm0FxFEJrU0DhS5vDTDLDCqBGEir2Ypc4tCmA+9wWDKGisjxA5dv14pMRG6zA9JBn0vGHOH4MR8TLW5J0v8GvIbHWlwj2Dt+XHBiyTjqLfCiQ+ZFV+AXeujDCKUTwjUhkd62/bSMpZwlaBL1fGP5/BgQDEkTrKyM5TTV/h8gQbaAs0mWvPuDHwBw+degA5k3PaWBRJ4KcyAxkMkfAa6e4ha5I9y+/iqQDFwGzwhCESnfIpcE+vGUZBlbFPrxOzSGDKaf4w6s71ttN+dm4Omp+UJdAaMywiBiA6TTZYmM2QgxEAtFKNhCfJVyiW4YHIhT9BCe0yu1kFN4QeARgLWKgZ7+WV0qzlux5oTWOqJa+6e0pHRgfXVVKk5Wl/BsQTxy8NBRDYvZ0pBhoM/zoirYDoXDPFamcoXi+IYjqnf1sqnGkkJTmh9DWGkVctO776oviugLSEBYnWU2rg544VuAF3rc4f5BD27ALAIUDJj6GkfBEg3LeVssAxQdimIIjxkMpFyhUsqmXSDCYC17MkBBsbgHAWDWRLEHf0gKBmQzDJp0I/dmIpR8+Gdedd6WV1uU04kwK0xfxliw3aSsxPO9ztSRldm1qSXXTzjCk9pnX/6Kj+u4CpZMUhw1Lp49J+qSImnp6srUoVe+eGNhfdoxLH/7ITYvwJOhPwEdyIH1bPTrI+MtsvEmg/GuVytFaJXrFSoSHevIb8QivhyO8zDVFacGoIFiLehk1beluOs6sg3EBv3kq5X9MxuHZvepj2wvkNZsu7N8BEm5hEbHS0uYjL1ga+38m95417KJ0eTO61S020HmU2xc4vC+fw3vewcq9E0DnF0FWPEqkuQBF+yBBwTzfZWTRUmSr4KaExi1SxrgRuYoDTpSjL3YWyqSJOUspyimsp0OfcX8yOOiDBTxH/B8Cp5fCJ8HhPgP/oDBq9/6LGBOoHLi5ZHPGH1yZ2en7xw/ur15YL8fc1OlmJf8OZ1kqZMfMFGfOdvIOq8AJW2FQemR69Xo8tBosQjRIIrExjnuE+JlqvXZ4HeBlGDgqqCCEv7mS5yEQyhhCa8oL/keHJEyu0TM3SM+0UiQSAQkhldyEjIk8WVAXsACG/nix+3A4eHszeyKEtifn2jAIU+vvUE0iJy1DUJ1I8QePoz/n8L4H+Fe31cH4z9w9NODwRuRmwRyU/fkpoDc5B0OwJcMEp8ZSvzHe2Knbx86eGA9GEhZ+2+Ucg5TLlW6Qbg+FW62Wp9L/N6ocP/45TcJ9+UbKiGK8TtUqIlUKnE7oX7qZqF+mgiWAZZwRJqIq4KN+88sr/jWrWcTFMAlYgArDyIOPEB6eKbA2U7YoMFJMvgHiQrqBY2gEhpBKt0f0RoQafgIx57Y6ZtHDnlea9yvVScKKsi2MkQdYTomj5o3W83aDUgjDOOVQPw0X8nodSlEZejh2r6NlwS67t/ft+WFGYJk1dgzpDLmzfScLC4fXZpz/UbKz2aBxZsf9O24LpleYGRqT9zTWlxonb6m4Ipg2QPLKktOIbeAtJ89ffw1SbU1DaBCNKq6ZCRdGz9jylrIK6id/QHo7XnuSH9jAiwc+BMBGI+gXZJA2Vm9CKJmV1dlQCDKjmlgNrnh6fPc+TtP3nHi+NGDBwrjiUJsHPCPRQtAbvK3oUWmukWVjXrTzp4bbu1dj+0F60ujQT9v7zp1wKIiuR48E3PFO0+BzvHswm/CFYW65A8ML7ErPFwZPPSbgysginhMCH2xnMxLmKqhReDCxz4Gzwo0LTu8tNuBS8QCLR089YUvDK4wGR4GGf5fIMM6N96vsgTZDvNUAiicuEPz2qZI5VXn6oWJTqEqkeRARjdKSAxhXGxQBHDRUB2ysra2QhxPeN97scKLCA+uQC+IGUvLrA9pmGmYYEJUAlfgjeW0o0uUE7H4wmWuyc31p+tjWOBhgHnADbxwjYLJgenfi1lXKtVq7ecojXD2LEg4SA0WarldjHqVmpXab/sCr9uenzaeUCQSk/0EEmMXVjd2NJwJvJxQqK9mRNRs4vyyhAixNPCuv/uBjjG9ODNB7GQ2GyimOa7MvveLlMZyDoslXw5rMbaO7G/mRZZSAToEYEBgaikTzHHSjqpgSTIlKuVT3KkZr1KbrHQKFWoHb0EEIamkncmgNTwYh0EPLeTncYgXSmH0rzaNZxCQqGh6jwcxChviUixA21sexRBo50zMdMjGIdpr0LODG6WJY05cjPk/ZShGvEhSnpTppuEZ2xvBFFkZ6Sk4efxoGb34mmi6MHSRVHZ21o6+GXqpJTIKaJ1n8cvaXFWf2yg+yR5kege0Gv0HNrbnn/MpQ4zcTQ4GGCj2VYIi3ktBE9iT8zDKLs3g5GkDwJ7XXqDFTl8t1A9XYpVZGigKk2iRZt7ohy1QBUDIzKpFIoZjYFXigy+iMfZS5Rs0HFim5h487pceW2yA3eUBAY4lk2OKxGMJX8Iswr7bmWgQ2kzUCfWv0HlBksdkoB+fB0c3JuqszzoNJECfT3Ob/UP7TNB5CoAxjwl/TQNWBdQYukTdIzVfvHBORiwdBQ+f5k7feero5sEDy0ut5uR4uVQspJMdnQYSQyWgFWls5IPmXqFCZI9irRwahHSY2QJUzMh1aOpJFt3cINb0bVfsrrhEqI4jNO+Loqatdohj+5bl246wvl+gx0gqVIi+rJNKQUKjN3CALS8rYV2XfvLNroCE9L88ZKi0UjDtWXi3A3eBbWF29kdfkSYee42SSCiveWxC+sofjd5Dnwe5uSC877NcxWp/qQzC3ZfBHGojwvE3TihKFcg5RQZb4hIqtm1ue7w8nhiv0HRM5rbGPQybO/lRejVq14cZ7hrMpBEr37jRmr9M9FWcfoXGe3EZTLlsvjM05XLck1WSygkJYHNP6eHt21lxDC22dv/ZjIY+e6sVxzFoKCbj+9ClOW13eWjBMTd//a/RV/EjYG8aLKa4F18JC+lo+LlRTxZYqG+YUR5GmUWYAbSEKItGwqOUND1Quf+Uvpidnk4c+ulDiWnU0ifGGxN2WpPS2USi3VQ0UcTbBSQlp777n6Y8Xfem/tN3c3EdK3b+12JPTeUyRMjUp556ojDJOBHlGH8IYzjHrdKoPyfRSlr+EtnjRqHHkQceZ2lhvsOSaSv/tFBVqNe5Adl1qH1H3SbofTPKQ0Y1OVE2DS4wwlQrhYR4fA8w+7KcHht3susNtN2qYX3KDdIVcnA9EUgx/yO9cbKyvLxCxntoD9klwUchab3dj5nrE65miejtPLVv6FcnllVgewipy6yf89dfysajCLr3UN/anMQiv44EcQwhgY9sXIETeUEQr1Kb8AQX1QKziBg6H45Yul+kbXgRUPQLNtrpKwvp3ETFof5OBJNfpcWR9CdY/SioxOodqWgCn68CosNRGHwJsdxC1CqHGAjELLWAPmf0JQlnss19iWXPMPB0pAqeWcvlXpJ5MjBN0FYnyE0JmFcF18JjOQF5qoZ5Xad3XqqBR8OLi0jUJlL3HDrw3alQTxK/vNiILS3h12mBud1fPZZaa2m6KHpKnVjg1FE97or21urydma1xXj09e9hFXTmBHeR+1LfHENEXUMC6SGOidIFUY5zAuE44SqnckRQySVlJLbCg3cVz2syZrV56TCe2v4RD8hnNQS0ZPA0Fz4LCguPEYG7drvnQHHlnfAxGKjBQ0AgUxx35vSdJ6EDJw5vHFxfWmi3JhsANPXbBHaGQzGsbKWH4Z+wciq0VVH6bwZVw+DO0CDFh6oeZvlutE8PvSw1s2FKPoAuJKKEynyULdJKIxVYpY3navfEwK+aM+LUxABqtuXJRmNSzkwqUutW2KmvNtzMdCkXl2hqNJmLrywq6VgSKBU4SXd631W505PrKvr0wFzhOEafgi8seFa83Bzkob/H6jnu5rb6h01gDNxqB5wnzajxoTtklRnDQ5olFcEt+lucJEWHwvbRrUMHV5bac9WgVpQHSY3Az6PIDbqRtwvDQWQQZQ2irFtU4F4d1jOtoGGUltGfNkvDUXzwos2K3C5qhiHJAS2NFuWmrEiJ87Weim0lbh0/JNeXDI0/vy7FLi8KFthD4EM8UZIJaPezE4nxum0IrxEWttHn1u9Hqi+NET4uvlckgqJIqhE/Uc3LWsI3NdWJ8eZiNVM5dEFBVZhqKazExZP1KrgERXYeiOeu5DQB55B5F8gxBTbhv8JcWeDu72tjIGjeBpg0IPF5gRbyIHyVwuYoH08QBZ8cg57p/ljUgrv2Ak12+loA9PxtlVichrG7DCaURirAOiNJ+ptJe2zIzl+jGAcfxVKUjUWySYifrY7PJb46StAfDfn4N404sD70+WIexE3B2MpqTLiRle92IhYuMn26/jzYDBvkcIhr9WddBKB7M4w/8zvwubRTg/QiWFB44hB3qD5R61RqNYXmFfe4QrTqocqiCzcRQXqfFa9Q7aEEghWihq3gCP0dw9JBApFD3fzYkcclxNwOOrczuCEgeTpLxkh2WhYQuytKYOoiBP2hZ6S1+1z90VPSMx8KfU9049nUxOMAiopzFB/NFe3CW5+F+4ZJRBbHu/636G+h7+uULy0iDqtI4DBAJAT9H3BhcCBJYXttuduenqxVMmnfC/PRLqG9p3Om0+10ae4oXHcCYIhn0mgA6B6CRg0NUxdUKP+3FVjYiIkLwCD5BcExsOVbsvl2SaQVTkbcWVvDkimuiqaE11bjcYNgHx3dhkHGK4El9jbj32uoYDYm/srZWhCtAMCPICi6Ygm6tHt993mABKAcpghOAkm6YFGJCBbD1Nf/lmHqM9x8v3MXQMKxXAYANdgPAh6E4Gs05IrO0RissUWpRRJvb22uLvfa4/UlIEBgiVFxAAQpb+JZQcUgCkLL1gbQooGYEeBLA1tNzS6oAjUjXgi5mTGmEqTrDdCrUjGHvJo4ObmUkYmFPU/UZV6pIlRVeFkXPQ9bRM6U5Jwn9IEVx1KeETegk3FL1Dd00Yrz1OoaOLACoFeAnUv87vP/tiMpYEQNaeLZiozk6kcmJANmkiJ1/i3i+RKIBhoGlnDwNx7a0p21e7YMzzO27llz9K2HfuOgADLLRNx0h1vod48emS9rt3LTcOoDlB5Q0x1up12pVPKdapVB6QEao92eGZ0hVFuKLrW9a6g0rHFnorKQm8cDPga31tA0mkE0zuSHiTypSVGaHyx2JBBi4MnguY4epVqUldOmqZlJZUwxj24DP0sHzbm1fuDDoXDsmJ8DGxmPO05JII4J8DqEbq+4ZvBXr4b+iilUicedVCqR7fKlmCEzQV29Kjz1SkR5HJZytPT3eA3+Ow6isN2YSRj/QGxebVN57ZusasKeuHZGxSWjgbSAeBxYX13udvxeua6ARxqtBAMl2ovwRzalGBbDNalQ2oy8gyGJaFkDgU6OePqPMtcOzMI/6/tumAI4dhRMy5gikMN4Q1ccA8zJO3U1Jnk+NLqFdHxg9jNzg8QANS1FAanauzye99+eov2mFkUyY2Bx5j4z+4G9gBHiZqHr/x5kscb9St8MwMa4iBbx8sIgV1CCRiCfq4DReOEBionDgBJFRmejeFJ6kEMeNoX/H32Btv1K2IyuF/oh7QBumXBnjVvzM2+rJEfiVBzo4Qv4qZzACnktNBobYPP9kKnA8E6I+h+MOitRjCeLpYb3G1jDYE7R7u+L+l+MxuURGDsbHMwniXOj08ISL2sy3NpdJ87k5CAaf3BDNAiV6+9f/wj6Y/wJLs9N9xtsQdRmVHhwmRUenBkpPIAbeS5fmOzRqoOgWovZkSJJIzE4V/quLYGZEB97bFDv5pATd9xxgjj+ScFFD6GHBUvAw6K2jMQ//09gFkR11Xt10bE+WyzwOAz8g/XiSLEBFwyK0bhadTFue5qENjF2LU+Tdz8B0+LnaRH088fgw+HAwh8V5fCzx6GvXfhsn2v2Z+IwiVxwUGCxobNhzTtAP1rjwPrLsf76nN8plMP+3hIRC4Ck94NB71zosSOIsZO0cBi/mJcyWQlQ2PPjDp3L96IvoA+D/pY5r+9gWmjxBA0hcdv1yQIfVl0DKMQjmfditWSi0l6Z2Sp6npflQ3YtjlRFUWUiEvQYgv/hQKZX+DfhSxiVZU9FxFbtmCjwa2iVh1eCM4IPhfUe138FffX6d35Y3bt/U937XWHZO+KeRfejC/gDXJYr9ccSrKDGROjwzfUzmRSMVrR0brh+pTWsXPaaNGiE+qWEpaXHDmRSgqxbxmDtTAn9ciovamuNew5kNIwsU41WzxTC+pnZ63+HdfTrgDcPcT/o29OAtBYtDLRvU4cXOhKSrZqCOJAKd5UTOdBB6TLAd4a9ElsyjfKdE8JMaDqs4a5HzcVrP7r9FLRv/sj2tKaKHbLcYJLGD2d/yEPDOqwtTpYHj9BMYBJxB9aBYDQnG6VCKnBsmYDRW1AHReFD6pZF/iAaQQESWPpo7QrgKVYFH2ZWaC180CkxIhLGXF7t57z86QV56YyMxklOUhyhPFm3eQmpK8f3n20cOTo5YYlTJaUIHk7gzf9Tfs2C161OrYOZaub9rJtH6kZbfOwREclqPC1j2eJlRMpnlkudvCPwYrIONM2X0q8t8xUzlquXMoSOo3D979Cfw3yY5Ba5d249WwCxugmE+TQShU4bE1EF8kWEzfStlwGC0RxWgUU0IsntJWITlKsBbZOARyc5ZsZv1wYhM2xIWXSS5qs8mBy9uZlC3nNMXRK5STQZZvprAxPOx0pDvswCHL1hBQCbtSbq0dLYkEODdFFlf5tnVlwXUT4fBGh1idprpVRLZFszvt5Caj5zauPgQnHRFOyZifZxMumD8QZ7TuejlMvKiFrrixeJDwA4Fls5lxH6E7Xp/2fpTCUtvWKyc4rOuHWQ5VfQb3Az3IuHMe0Y83OYB7RANU4QxAcGkbkExeLceYL2BDRsxovCo7dvx9YmjNfKxUzCdXSFm0Ez0qAQgskhDAWHBX0riJqvKJPXGsnzEVQ6+/rO/Blg2s583/Vo4bOK0kpgtvr39VsOsby4EFenyavvPbFvXUNIj3tZP5/zaCGBdmxx7WTbUrDkau750B7kwR7IoEdVbp77XLh+zKGmnSCJm0W8lGcrENK3XBzVoWFEZbDQMrFFSyVClk+Xb4Sf23jhhnT5BjtkpWVJih7Gb9eaGzYG3Ru0hXmu1avVstsuFSnFZYuH8qxwf6hssdagIGllsCi+F0m21xlkTfPXzqw2lYGiqfKa76+uCY7S3VcrdNfvPNg6UIa5GVvRY5o4u+/rO/94jLxhoGSxXWwkMwqWA0WasJMPH148c5jE+Zc1HR7JJ4a2F30J9KzONWlEnCBEWGKMpUWAGXGIJ+jSIAnMzNrAmI2PjzfHm8s1t1Sbk2m1XW9QZUXzIQGdLhEOumFBR68b0HAhq8n/vqqS05fALulv/yXeOru85DL842jeufmtp1Lm+nzpw0qlQhJztZSGfh3hq2ckPWbCAzMr8xrAHjmuehNzd+wvjq8+kol9oDGtoFqSwkb4i57DD3JL3Kf7KkwgBL6NrUakuLI4WCdFVxLAfGBL0+wtCdAf2eHYGowIVg5bBj+spfVjfuaP83HUReiFql+ojFcqcYUWMFD0zsBCazgZa8zgZ9FIRirK0BRuSKg2kGI8SqwLq1N+LOs5Wax2TLR/H81J7du/tEizp7ufMhWHLC71usRBT8c0OVdzGvN8Ih54Gd8WxAkhl2VLc3f/Y5hNJYZDs60BTwvzstfT6Hn0r7h17iT3APe/9wOCZC5AWO7nMS8tIUW4DNBGjJaBtmmsXpD4y+ATwzBcYi8il9iic1M5xylKcosDzaAVjynCIqajjw30MDJot39op+9cvOeuO49uHzoYnPQb5XJRoym8cBr2hmXKoIcEJBmezCDmQrvBIvO8IWEqhusR18IIN5y4g7VI4BUAzcX3goDDhMfylSNTVUOZbpRm0m7aAgAuSG5w39Z4RREcSxKRlXcPp/rHKwd3D1YRH+hxUYjFSXB6tt5Nya06L+P8+DPytWLKCsj0Q917FWx7yDlwIS6R1FjWzabA/8ql6fV7bVGVY2m67EHQDyzPVvfvr89NFh1bkLOVxIRWnajNzsbd+iwi07ufQ5IVZFWtV8kQMXASDDsCGWK29gCto7PBvC0hTqYRU0EWePnaiMGLUEyCZRQ5jpxVw9VK+9dXVyp11y9V2wWHJZrbNJo36lXpbggDt+rSPRMGSeWIxIarECQa1gjvVYVgdcS5YnPdVDJXAhGB+ftkWHvo+ojP5HsVQ8L06peDalpDn9/zr5cuVjHeiZ/Mxp+iRnBQdHjtSTGTmHIS6oUL9LJEbSCtW/givsJpYAVb/dk0MNC9LVYCZuB3WDkYzQ0P5qlfaRW8clEaaFU0Mfkwlhmtpg23iBjMzOpvFxN+qRgkCz+tGE+v7/N9dOlijMcry2wevtfHM0Eu7/n5/C4zcgGSllnh0HveE848aWCzM+hl8L4qWLcj/Y1JJIgLJltsLSFgYALmr428PcCEHbDfbNn1YHboWqc1UcimHVtb0peoi/IbiPUi7EQTXjsIzXdU0hAmyYYR2eHC+RrdhgSJrGN+svgrQVYupKSABlHR5hHf53nNjLsJ/UV0lYzbnj7SXLQllGE9nRjLP/903qe7f3ieY3V/9QtIzoalUt/+S+9QqYj9tGUmx6ieGtCjvwc9vZM70T96HMnKyenJmisyrifLbP4bW1jF0SoAsKlAU8Exk9DdI277yHp/bWW+Mzczlk8EMQtQ953oTo0uhCqOhJvAcwGf8fMoDFWWBvsl0OCShQbroofLpUfLK1mSwAu6PRSnwboXPUhjTV6hENtwltX+Ejv7MFhUU5/VkgQ+ozBGA04PvEgAazxWoGdY1oSFLtEEHi2voMssVMdiTaDUsf2xE8bp6IwWT8CkXzOLslwYW2MRJ0zLB1gRjCUatLBFE559dnkx5MktEMq/A/kVuFq/bNANPDYpEgyrXoa1OibeLvh+/OdEkryxbi4MurNyQ+qNqIK39sbWEX5BkYi/+zO+KKk/D8POKt4UexfTgFBGkbM0CASzk9VrXP8rji5i+zh3lvtS6BbiuRTg+TOrFRpU3Tzahp4dSbOr8k1Xd8IH8hrNl/DnRNB13t4ydIXQ1ZQ7KmUIJjcgdRM0kTZsxf3QJ/o12jjEh3vs7TYtwT9T03mWO3v61OFD6/sanl8qVwq+Z1Lbx5xGKVpmGCuFNJ8ZPqogw6V1XhiOC41gK6JyoUd/oRs/E9jem4OY6MRijhgLxuvEEFuF+SQZX6n4ATiEGDT4CUPJSGAeY4WacOuFbWz6VHcCHWQJTloP0hpPYvlpcTwZNIXX/iS7D6ayxD9x/7hhLdTJPTu3u8bt+Q4Yxz73vnBYVAAyQCIwK08cnCisOpHeTiuI4kjEMI8MzJOGoaQbaHiF22sBU/qFGvdLg8xLImzG3aYVjeKtrbiuD94pUS2qUS0otcZBazAQP5476kQuDdwS2GqEltcms5Pm0B2J6q3uiDkw9EYQsOyJE0bQucEVCeqtrigHDgxMfmjj24DLvw643OfKo7UYiWEtRhJtlycmbq7FGEYmoS8igyiDoMCT+4/N1e+P4+TcP7LNpfaJGMY6Wj/c6xzemM92zSx6+ZrXeqntLE5fiuNi+wG7bG/fv3Dyzt7KhUIQ1l0I10voz9Fz3BT4nV8Kh1ST4IW7HaxIrCJVghkenUVjPsHxClaAS9B49sjIMlSRZCsbmXtywsx41BhM+mB0I571Qg/BGC/OlwuuG4+P3zDGWdQbsNdh9pDuDHLTiIo3sPtwfJXegfqWR4n88uV0TgROMTKi/3SE2bPhlVyRlGrZkMafVnH+3PnhcH4PSb8wQutBhsXrJVwAGU6ADBf7PRuIL9dFhCapB/JJ7BHJcKOE8zDmDr9dr1Yq5VJlf8Qn6cZKlFIytz1c/z3cx6NdjFKOEWDtdVfYEg4TFR85jk3hYEd2Ep5FQif070IfhOXFA8cfMdCpEx1LXs4pKH+X0t382rmXK2icaI6jWs9/Zc/XXLxAGo8ck1Orp7CxEssGs5ekY9QuJGDkvgN9bHEfjeyCijCXQWDHqV2AEyk8AR3Jw+2xcC3zVZpU5M7J1M5SWB/Brj2yXhiseX7hhpTQj7aJ+DzGYULFvqE1GAi6iLjFtQquVytWGjRtG8+JLijPICdXopvnEZbAHSA55gWHEPd3cRgRP3BpLUEyXjwloIZXa4qov0Ycb/e3guC+uTlAss8AsRZ5IinEOdAwdS/nx3lRix+eIvtWwWVTs5zS6fyHf2gtLcz/34b5fwd3qn8i5bJCb5GCnUGldmKvUpvNknDjqCRbGh8diwB7jm4d2L+yNF4rjiUBlHF3oDvo2u9KM9zsJ8IudIsuWrXTbd1A1kcXkQ2qf8Ki7tKgBGIYLEPCKwvB4Q3vnnztDM4oS2DrJdWOyrcDMJnx+FwnnzISM/fmTsawaF08fGiGLlbSJ6GNpCQ9mUjBxlIQ0zVdHjvSyNfhLswuNS4250Rd0uOerFm6ayi2ZCu5NTkmq+50Kw3M2YuLKx0HJCvY+1k9KMju03iCW+Re1dfzCcwLPRWmGWX/tEi+AiKCQeMkulIozrSD36F6YW8NNq9IIhZDAyz9+LDxC7Rj2w9027PTpWIm5Xtsb5tFtBhKeUAyh4l/RuWj0BnjBoMtCKLNzXpd9NakfXn/YqVE0NwM+BrFuIQk27UpD3p2uNvA3XcjaXFJQ4r8CcPbt1MprZIXP8zLWaDvzZahUAI0Nze6ycA/ekTcd9yRZOa3r/89+O1nuB73ynBiWc0M9C2PBCyxeqj08IoUXYmsOd1zD4ARYUKQWASDWiyGnwqj9wZm22RFZkNRaX65UmtXKiwmVgmDX7W90o49zkiB9F499RBDsQ33sExDYIaozK0/HIh4yBMBNMurW8nwCthxENiaX80AW4yJqcNW9aGfitghAON3vD03p2V3HkLUTFNpvec9BsM0ies/QH8FsunQfZTG2eJZMar5kEgIIxFyWblHh+tAZ6rdMg1+oXDvRupqLDSB2AYdM6h0c61HmMkeFnf8ge+nUu0uVlxVNVXVVXC3nUoGrnjqFCscj3tTU15iCrSI1nSgZ6hjQe95r+DQHSQc4b3vQRIQJhxVdDz99OrRp0dqOGzoyw+gL5e4A/19p47Xq64osbJ3Gk4BhRawIgwWU9Ld5yQpKYHJOHv3kUP91YV58C5Zy5BF7hK6dGN2IqRAHhuPbrRb096eEXRRTYdFQiKaFFlSyWXlEGS4BxrYFpNm7EtUVHCh2vVtT7jzDsJ8kSDmEeLBgghB3JF0GZAOnGck5rDIe1n9cCaLiS7HfeIRxaeWUJa8dMIhlpWR0OWYxwoYKCtKjf0rT0Ta2IkUL5u8oEvenWWwO4Sf/GCdD9vQcuIYQu95v6ARHkux5H0JSeKF7AOGKSNFO33Xe1C0Bp3t7cLkGq3JPHO6VKRgeBPeGB0J1+hR0sJY6MjGLhcv3HFia3P/vsX5yYn5qsvWZDI+RRfGz6CRNZmD2gcv6LVLAx2KUrIgtqLPah+CAZYBE04/wEL+kD5kCVHXu50g3SyORWs0T52kHDQjtWalnEPuOLWXyx0rzM6hXKoHTelOMB/0jbg2aUr5vCjFTe+DhlI1LIEcOYJy5fXhos2oCAIdOID4Eo0IjqR/9+3D9eJhRIuWDcr/XBujdVednUW0lhvoBJVj6nqGzbW7aI0R2BpumwEhkWdrfHeEcLM4SRpELcq1SW95vF0OARCtfLh5TU1J8ljqjNbQ0NqHqLg3lBx1Zjja8S5ETVk6YcOVnn/e2m+nU2BJBktp5JiDYX4cJLyyoHtx2fbfvyevRAqJb8L1w0D9ZrO+l3MAc0jtpJBE6HXPNkIzM6y4RjD4gfovi6I2/ZEaoqW+6qiosL17l3h/Um5Vg2za42GExGW6rAhxRdCzb4B81rl379VHLEf1EdYL1kfYN9dHuC9cH2H/mPUR9s31ERQ4rXPrCzDv31ZOSSNFqKDPo3upjFZIiJ5rshGQWqPBQTifp+WaQvC8/yVlpJxPjKcK5Unv/6ALfijQIVh508ONP1aUaMUdMZFoeg7AquC7vpcJ91yZnaUlEnCNaJKq8hKvvPZyI11QmVNsd6Iaieb1X0PfwJ/g1rhX9+35ZrmYELG4aup8mCWYYtLFIgfz9xqtHICBFy8TxLZMIGi4Z0K6X4+EH7XlwqZXbm3Kkm1zMxO1aiUeA6u6htZYsi3aIoP6CxzuMjvEZbT8do1uybeGmkOzayE33N+T8lgffSTtxMWxevYhF1CvtSV0sUrr21TcFbYsHrlvp3BKVhQ586iFsFaX5bqGkUFDwUBVBfugev8DYl4BPM6rohMTVThASp7c/8A5CSlKXVHy918m0wmRJKbk+64AVue+df0jaBxkp9D9/RRR4NhO0DdvJ+GGm03SUY5RtPgtunWgoEzq+J2p1PMNEqfLdri5aBwO0d0QVhZVSUBiF2E0k8/QQCYtXBERJ16m5RwwrJeZtOmuszQ8I/DH963VJlLjBUIDVqzcAgRDAWtzUPwsmZiiVXDOVO/29khYQ2Fkrxqis+HGYt2DQqGWXVxVENJP8NkUdsDg4VSWP2bS6pKHMvWMIVFxPmzxVJyCAPLkrYczIGOCPw4iVabqxdcXKwrNamdtSaWeQCnDJfWgTYt3FM+VlbR45T55KgGQIjFNLt8vpBXZ9RQS7uHJPYmeA7Rf4Wb7UxZItcjW0MK05NEZupcgnZt0kz3+HK1i5I83y9VmkW3nGIYCKJJcQtTtsj4PkHwD0S6Cd/myKpYyhmDN2oagmgYK9jXihuOwK7qg0SsriMfj8YZtmqYW7OMlOTU4WWI89ioAw/fgK5wO3jDou3vbgBtou5Xs7G0HE5XrFSPGGu6yQWOuVzOAcypZX+p9PrDpHpV6Ijcv+Vnc8RNIK7qp6ViSfmzCn05z/8O+8zn0lyDzhzgDWO2Na2Ko+Olummi7BID2xu8ONy2mkQUWfXmuOVZLxJpj9SD28sCyUynTSuLpTCERczKFZMzRY3bKDvezesf1SfRRrsk1uGq/lEfDLSTpyzBM4WCKPRvcRCZdF4jXCNj6jOEegbVpfiQcjffiHx9VJaJIZnk1X6mkVE0GnG6LcUumWznOezL2H8ssfFUULcMFXo2QJMdsWvkt6YUSb4FJU31NcBp2MiYf1AVuuN7zi+CfMjSmbIVrZqNAsr1FM5sDok1zJXEaU+79sOzI4dsnRaovkApBYR4Evn+W7p9VAN4/zdMtJulek5hWu11jdW5cBNpZ9ipFUwET9bzv2MDTZtEs2wPsH5juuPJjJjnO/Zi5jf9Z6sjuQ59BH8T7QNOTfV9k+yfTHVi4x0GODyYqsehdogTqYL+8KK3/uKpIq8vLy5IhCYalvNZ5vWjpuKcmgiCQ+Zzqi8LUNC/6So591xFAfp+F7zLpnskjNWus+7RKz+TMDh+uSaztYbx7dRW54nvfoxDJR38lmrECQDrR1jK0lu030Z+gt4EcWZ0hCvdcpTuu4j3yQs3BcKO0b1lxS3kjUnjH1xV+8zD6k7Idl8g4wglbg0H1g1DPn4TP3YTPdTn11+HCg5Mo3HRtb2vzQYn3k46JZP4XRfhg9fAmrwN1XLB8ATUAR9vlwOdFUwo/8zj6PvokfGaW7ZFLt6tHF7GA2bAjLvBhXAiXRVmR7dTn0QhUAw+WGzOiFaprF72tipxEf80019aSTtxNE95w3u4Y4LUIvlwM4p6qevGkY/KWgAX4X+f5/66awf//beIZ9BX0HMiqwh3rq3v+MCz0C2gaK/QCLLgXbgIW7iyNmHu8uNeCLulV/r/wljC7Xshb/i+MczuMM1izPcuRj6URmoWe3W6pzwD0Vm+3tvrLXxpd5/ONSokGBh64Ky3dsrL6pmU+jO9j8ZZl1aDbJfb7RB4Dza5y8nPFjM1jeDfQV8rIA9+h4h6jQnRoHRNmTEdqgXj/A/hOKYtVIiH+fTbevYDt9/FKh24s2zwofB/V+/hRcKsCEYTnf8dSZYRk1cItwXqCNxTeeva/KPjNX+PYvk+j63CPg80BcuzqiJ+97aLb4UpM3GrSwlCWvZIGtULNwXpub7CHUXFQT3rzqtzkcDXmdLs2lQQBweFzYtx1FQUrcsIzZMn0EnJ4Yt26YlfZW4rp6+XJydQxuvjyfYaCQMoYg5Ql84opD05kFgPIsfUjj3H7QQ8cDvSgN4gqd7opxOJKoWKk6MKO5jDiQU15px2uO2X7dlEhROWybbrwI+ag+QVedkTRlnKegBfnkWPLMf9dgSIl47ojdBDqCI4eT0qKHy3xoBwTGK4lIlMSdv9+dxcwBV2Zq2TiMGAYtU/G/r5GEKnsxk624ZxWx6rhmNGKwz8DfZ7gNrn7YczOb3WmDA7GDNTG9TNosPP2CircuNFoBDNafLjoll2hsIgCkGg+lGj0WMqhLCrcsDv0wPejL/MyrfaU6PrB3eH2pLxkENFLV6ozwaGgGqO/riNWDd40cvhkEEPF4dbRl03CAzrAlzHBokA0TQUrIMuKLct2SK0LY8Tk0e5H45qsi+dFXdbiojh68m5kehrbXRrmGd1dWifFsmDIN+6xQsc6zsb6R2yQcvuNUGKl2AtuhPLNP/jv2vXk1i1O0Of3rrF9x6AP32JrVsjH2hKzWy+4UtFloI0tCBnmSQabNrFt1aZRHXvg4TOl2rT/uVFj9jf7rKID6O3VfwG2dBjt2H2xj/Ev/hLGa2n5xqWL+EXJXhYb+teLOVNikY6nQPyKJ4v4B6LwNyT6HQEIfRs/yq3Au5fYu4Nh2Ps9CpGZDffTlsJNkNhcY0mLKi1JLbKK6HAt39s6MyoScHCktRET40kLQL+r0GVDqEuLQT5Fa0E6WC4TR/R4bDXt5Sn8yIEVwSVXttsJBRvBWJ63zpWeefdokci7nxFeBoLQ53zT8Oc2ZDq3aNntH4PMj3MXuIdhbl259/wdswTmlhMt3B+W7ngtwPKt4e63UpFIdF3zsJSH7lfRQNDHaME69AwwHFws1YLOyGJegATgKz32ayZopuxpH0YpUbCusCKeXI4u1sXzFw2MjQsLcIjxMrvzeV8xljD9ZTgL7ObFBUx/yVQuu4TjC4oixeZVAV+Bv9hZdKQY2/9lUN9zATzCSl2xbHl8BbzDhWGlD/Afem95QrYtZXyZ3kPfXkyqmq6qKZV/nF9cSroGHNMxrtDcK8jqAozxhheNsRuuLqW/3+KGkClLPIUFx+1uZ+AzBpsfhNsf3KgFA6DL4vWr6GgZ8Dd2EjEBpVPA3O69QIc+nUa8k3BAYwvlQFaI4AiId8eOKyIeVQ1ROT7mUpsb07GFvpEr4rQ61bTVt7wlpEqhWqC3vEW156bVNC7mkKy4jiQTy12tHnD5e0cV517ePVBdTfLABlzPYvo+BrL4c9D3cyCLMUxlccOvfRnstz9yiS7LDLvaHW43P1AKmMuDNjOIeVVKXgd51PpPnkumj9wvyI20qrrxcowaVZjNR46YBNuAaVWlP6cbncMqr6gZx7ajuzYwRCVZcuOqmp4TEfqFndeI1hN3JIL2fas5EK5WDnfqh4ku6kIsf2h68mCtnOttKXht1ojlyrWDU40DhRhtQOxKVXTLGsg9t/riFYn7n2J9z/+438vze+gYWgBs4VE+66IbfnEe2k6Nrj8Lu8lAFTUNv5f187ZAPQnDiDSYjJf9bFY29HvPJUIAkzh3J9t//CXoD7nvc1MUv1AdE6l9n0GdZbwKiHVg+Ju+S733MoYr7TUULQ5Efygbuz9hsY1LeKQYmkK3rugjcARKQoHLL40JkvnBM07S0zW6vwJSFCE+Vv72t52Eq8k04QqAXLE2QuxKOz3JXYl+r6AY/l7BuU7La8HfK+F/P347luyCVrQd+Rii/nouvM/9v+NxqO542q1UvU4bQRCeM2CEIyxoIkSTLe3IPvsMRTCIyAJZsrAgYAvRoeW89h3Yd9bd2of7VKlSRmlTp8kr5BHyACnzCinz3d6SYMKPSPDKt9/OznwzOzO7RPTcyJJBya9JHzU2aMlY0DhF88ZLjWcoZ7zVeJZWjO8az9GL1CuN07SSeqfxorE290zjLK2mRxov0VL6i8bLNJ/+BmZjdgGrD8pLjA1i9EPjFGWNVY1n6I1R0XiWysZnjedo2/ipcZrKqRONF1Pd1CeNs7Sefq3xErH0e42XKZv+Sjvk05AmFJBLPXJIIoIc2ZTHXKEyxgYVFbLwZ7RLgkKl62HVgqYLiYdZUAGShsImZR5ktmgdaA87XHHVsMepA54BrGjHH04Ct+dIlrPzrFIubxQrZavMdkXo9jzWsl3h2aLAGp5tZm4qW+tsz+Eeq9m8IwZg2wN1G9QndIp5gsAERSo0CRRAgbfFyWl7MhRR4EoByRE2ejSiPkzjpeiN+hygjnN5MIvnABpCncdU2amqE93vqniTue57su4HPcEqZplV2c1Qir9dP5r6bqpjZRBX0lfZt3ACizaBJEYX5iPMPqrjqtPGtRsrrTVUkI5FELq+xyzT2mRSdvlI+o7rIf9jy1zLP2moj2vRwiOaNObZQljxMNF2HNwOnWO+xDop7zb8/G8zT/u50Fp8Sue6vwI8RipVDmyP1GnipI3x7UBy1YKM9sEwUC34UMLjK5nBTlzQcIqjBdQFilQhYq5Eo4/ZVnkLtd8RcEexMRWbUNYNPKKMDpRHb4q5OcUQZ/72tjOnIpv2yxDVGH9XNcoZvrHsT3a48lijQ4UlrmBG1UciniqVMEKwxXkYQhbCV6i4rvJdQuR1RHrXg1O49cVhua0oiswBl845vzRxe7fzD71C2uYCIp5IErtCJnKlw45EKIKx6LD4PWD7fCD+egnMTKbtuGGi0fK7MuKBYBD0XVt4IWxHXkcETDqCtRpNdjAUXqLcTBQK7NrFNRMybcv4mLt9ftYXTIXDWb12yLisZhwph9VSKbQDdyhDM3T7cdylgzqS9k+Zvo/w6R7qX7m/mNMAeNptzdkuAwEYxfH/N+20RS1F7fu+q7bUTtGppah9X0YIk5iStJ5A3HoFt56AR0Fs8SSo9tJJTn5XJweFv3xf4+W/3PxWULBgRcWGHQcZZJKFk2xyyCUPF/kUUIibIoopoZQyyqmgkiqqqaGWOuppoJEmmmmhlTba6aCTLrrx0PP77cNPL30E6GeAQYYYZoRRxhgnyASTTBFCI8w0M8wyR4R5FlgkyhLLrLDKGutssMkW2+ywyx77HHCILopYuOWaD57EyjNfoopN7LzyxjsvfIqDe8mQTMkSp2RLjuRKHnc88CguyZcCKRS3/SpmeDwBLWXQ86fXF0g5OZA2mHZCDeumqaurZycJ3RbRzaNjXdk0lKihrhinpm5fu4wb5xcxS/TMsETjhs00YleJk+Ta6/f6koY0bSptKK32A+yLSTAAAQAB//8ADwAAAAEAAAAAzD2izwAAAADG+TJPAAAAANaYKxM=
{
"tiddlers": {
"$:/config/DefaultColourMappings/menubar-foreground": {
"title": "$:/config/DefaultColourMappings/menubar-foreground",
"text": "#fff"
},
"$:/config/DefaultColourMappings/menubar-background": {
"title": "$:/config/DefaultColourMappings/menubar-background",
"text": "#5778d8"
},
"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols": {
"title": "$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/pagecontrols",
"text": "hide"
},
"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server": {
"title": "$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/server",
"text": "hide"
},
"$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar": {
"title": "$:/config/plugins/menubar/MenuItems/Visibility/$:/plugins/tiddlywiki/menubar/items/sidebar",
"text": "hide"
},
"$:/config/plugins/menubar/breakpoint": {
"title": "$:/config/plugins/menubar/breakpoint",
"text": "620px"
},
"$:/plugins/tiddlywiki/menubar/config": {
"title": "$:/plugins/tiddlywiki/menubar/config",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "Menu Bar",
"text": "\\define config-base() $:/config/plugins/menubar/MenuItems/Visibility/\n\n! Menu Bar Configuration\n\n!! Menu Items\n\nSelect which menu items will be shown. You can also drag items to reorder them.\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/MenuBar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n\n!! Breakpoint Position\n\nThe breakpoint position between narrow and wide screens. Should include CSS units (eg. `400px`).\n\n<$edit-text tiddler=\"$:/config/plugins/menubar/breakpoint\" default=\"\" tag=\"input\"/>\n\n!! Menu Bar Colours\n\nTo change the colour of the menu bar, define the colours `menubar-foreground` and `menubar-background` in the currently selected palette\n"
},
"$:/plugins/tiddlywiki/menubar/items/contents": {
"title": "$:/plugins/tiddlywiki/menubar/items/contents",
"caption": "Contents",
"description": "Table of Contents",
"is-dropdown": "yes",
"tags": "$:/tags/MenuBar",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>\n"
},
"$:/plugins/tiddlywiki/menubar/items/hamburger": {
"title": "$:/plugins/tiddlywiki/menubar/items/hamburger",
"tags": "$:/tags/MenuBar",
"caption": "Hamburger",
"description": "Show the full menu bar on a narrow screen",
"custom-menu-content": "{{$:/plugins/tiddlywiki/menubar/items/hamburger}}",
"show-when": "narrow",
"text": "<$list filter=\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[no]]\">\n<$button set=\"$:/state/popup/menubar/hamburger\" setTo=\"yes\">\n{{$:/core/images/menu-button}}\n</$button>\n</$list>\n<$list filter=\"[[$:/state/popup/menubar/hamburger]get[text]else[no]match[yes]]\">\n<$button set=\"$:/state/popup/menubar/hamburger\" setTo=\"no\">\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n"
},
"$:/plugins/tiddlywiki/menubar/items/pagecontrols": {
"title": "$:/plugins/tiddlywiki/menubar/items/pagecontrols",
"tags": "$:/tags/MenuBar",
"description": "Page controls from the sidebar",
"caption": "Page controls",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/pagecontrols\" mode=\"inline\"/>",
"text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n"
},
"$:/plugins/tiddlywiki/menubar/items/search": {
"title": "$:/plugins/tiddlywiki/menubar/items/search",
"custom-menu-content": "{{$:/plugins/tiddlywiki/menubar/items/search}}",
"description": "Search",
"caption": "Search",
"tags": "$:/tags/MenuBar",
"text": "\\define cancel-search-actions() <$action-deletetiddler $filter=\"[<__storeTitle__>] [<__tiddler__>] [<__selectionStateTitle__>]\"/>\n\n\\define input-accept-actions() <$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>\n\n\\whitespace trim\n<$vars searchTiddler=\"$:/temp/menubarsearch/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">> titleSearchFilter=\"[!is[system]search:title<userInput>sort[title]limit[250]]\" allSearchFilter=\"[!is[system]search<userInput>sort[title]limit[250]]\">\n<span style=\"margin: 0 0.5em;\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/menubarsearch\" storeTitle=<<searchTiddler>> selectionStateTitle=<<searchListState>> \n\t\trefreshTitle=\"$:/temp/menubarsearch/refresh\" tag=\"input\" type=\"search\" focusPopup=\"$:/state/popup/menubar-search-dropdown\" \n\t\tclass=\"tc-popup-handle tc-menu-show-when-wide\" placeholder=\"Search...\" default=\"\" cancelPopups=\"yes\" \n\t\tprimaryListFilter=<<titleSearchFilter>> secondaryListFilter=<<allSearchFilter>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</span>\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/state/popup/menubar-search-dropdown\" type=\"nomatch\" text=\"\" default=\"\">\n\n<div class=\"tc-block-dropdown tc-search-drop-down\">\n\n<$list filter=\"[<searchTiddler>get[text]minlength[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">Type your search terms</div>\"\"\" variable=\"ignore\">\n\n<$list filter=\"[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n</$vars>\n"
},
"$:/plugins/tiddlywiki/menubar/items/server": {
"title": "$:/plugins/tiddlywiki/menubar/items/server",
"tags": "$:/tags/MenuBar",
"description": "Server options",
"caption": "Server",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/server\" mode=\"inline\"/>",
"text": "<$list filter=\"[[$:/status/IsLoggedIn]get[text]else[no]match[yes]]\" variable=\"ignore\">\n<$transclude tiddler=\"$:/core/ui/Buttons/save-wiki\" mode=\"inline\"/>\n</$list>\n<$list filter=\"[[$:/status/IsLoggedIn]get[text]else[no]match[no]]\" variable=\"ignore\">\n<$button message=\"tm-login\">\nLogin\n</$button>\n</$list>\n"
},
"$:/plugins/tiddlywiki/menubar/items/sidebar": {
"title": "$:/plugins/tiddlywiki/menubar/items/sidebar",
"caption": "Sidebar",
"description": "Sidebar",
"is-dropdown": "yes",
"tags": "$:/tags/MenuBar",
"text": "<$scrollable fallthrough=\"none\" class=\"tc-popup-keep tc-menubar-dropdown-sidebar\">\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\" mode=\"inline\"/>\n\n</$scrollable>\n"
},
"$:/plugins/tiddlywiki/menubar/items/topleftbar": {
"title": "$:/plugins/tiddlywiki/menubar/items/topleftbar",
"tags": "$:/tags/MenuBar",
"description": "Items from $:/tags/TopLeftBar",
"caption": "Legacy Top Left Bar",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/topleftbar\" mode=\"inline\"/>",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>"
},
"$:/plugins/tiddlywiki/menubar/items/toprightbar": {
"title": "$:/plugins/tiddlywiki/menubar/items/toprightbar",
"tags": "$:/tags/MenuBar",
"description": "Items from $:/tags/TopRightBar",
"caption": "Legacy Top Right Bar",
"custom-menu-content": "<$transclude tiddler=\"$:/plugins/tiddlywiki/menubar/items/toprightbar\" mode=\"inline\"/>",
"custom-menu-styles-wide": "float: right;",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]reverse[]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>"
},
"$:/plugins/tiddlywiki/menubar/menu": {
"title": "$:/plugins/tiddlywiki/menubar/menu",
"tags": "$:/tags/PageTemplate",
"text": "\\define menubar-inner(size)\n<ul class=\"tc-menubar-list\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]]\">\n<$list filter=\"[<currentTiddler>addprefix[$:/config/plugins/menubar/MenuItems/Visibility/]get[text]] ~show +[match[show]]\" variable=\"ignore\">\n<$list filter=\"[[$size$]match[wide]] ~[<currentTiddler>get[show-when]match[$size$]] ~[{$:/state/popup/menubar/hamburger}match[yes]]\" variable=\"ignore\">\n<li style={{!!custom-menu-styles-$size$}} class={{{ [<currentTiddler>get[show-when]addprefix[tc-menubar-]] tc-menubar-item +[join[ ]] }}}>\n<$list filter=\"[<currentTiddler>!is-dropdown[yes]]\" variable=\"listItem\" emptyMessage=\"\"\"\n\t<!-- Dropdown -->\n\t<$set name=\"dropdown-state\" value=<<qualify \"$:/state/popup/topmenu/dropdown/\">>>\n\t<$set name=\"dropdown-state\" value={{{ [<dropdown-state>addsuffix<currentTiddler>] }}}>\n\t<$button popup=<<dropdown-state>> selectedClass=\"tc-selected\">\n\t<$set name=\"tv-wikilinks\" value=\"no\">\n\t<$transclude field=\"caption\" mode=\"inline\"/>\n\t<$text text=\" \"/>\n\t<span class=\"tc-menubar-dropdown-arrow\">\n\t<$transclude tiddler=\"$:/core/images/down-arrow\" mode=\"inline\"/>\n\t</span>\n\t</$set>\n\t</$button>\n\t</$set>\n\t</$set>\n\"\"\">\n<$list filter=\"[<currentTiddler>has[custom-menu-content]]\" variable=\"listItem\" emptyMessage=\"\"\"\n\t<!-- Link -->\n\t<$link to={{!!target}}>\n\t<$set name=\"tv-wikilinks\" value=\"no\">\n\t<$transclude field=\"caption\" mode=\"inline\"/>\n\t</$set>\n\t</$link>\n\"\"\">\n<!-- Custom content -->\n<$transclude field=\"custom-menu-content\" mode=\"inline\"/>\n</$list>\n</$list>\n</li>\n</$list>\n</$list>\n</$list>\n</ul>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]limit[1]]\" variable=\"listItem\">\n<nav class=\"tc-menubar tc-adjust-top-of-scroll\">\n<div class=\"tc-menubar-narrow\">\n<<menubar-inner narrow>>\n</div>\n<div class=\"tc-menubar-wide\">\n<<menubar-inner wide>>\n</div>\n<div style=\"clear:both;\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MenuBar]!has[draft.of]is-dropdown[yes]]\">\n<$list filter=\"[<currentTiddler>addprefix[$:/config/plugins/menubar/MenuItems/Visibility/]get[text]] ~show +[match[show]]\" variable=\"ignore\">\n<$set name=\"dropdown-state\" value=<<qualify \"$:/state/popup/topmenu/dropdown/\">>>\n<$set name=\"dropdown-state\" value={{{ [<dropdown-state>addsuffix<currentTiddler>] }}}>\n<$reveal type=\"popup\" state=<<dropdown-state>> class={{{ [<currentTiddler>get[dropdown]get[class]] }}} tag=\"div\">\n<div class=\"tc-drop-down\">\n<$transclude/>\n</div>\n</$reveal>\n</$set>\n</$set>\n</$list>\n</$list>\n</nav>\n</$list>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"text": "<!-- The menubar plugin overrides this tiddler to remove the core top left menu. The menu items that it would include are instead included in the menubar -->"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"text": "<!-- The menubar plugin overrides this tiddler to remove the core top right menu. The menu items that it would include are instead included in the menubar -->"
},
"$:/plugins/tiddlywiki/menubar/readme": {
"title": "$:/plugins/tiddlywiki/menubar/readme",
"text": "!! Introduction\n\nThis plugin provides a menu bar with the following features:\n\n* Menu items take the form of simple text links, dropdowns, or entirely custom content\n* Menu items can be individually enabled via the control panel\n* Responds to reduced screen width by abbreviating the menu items to a \"hamburger\" dropdown\n\n!! Menu Item Tiddlers\n\nMenu items are tagged <<tag $:/tags/MenuBar>>. The following fields are used by this plugin:\n\n|!Field Name |!Purpose |\n|title |Each menu item must have a unique title (not shown to the user) |\n|description |Description for use in listings |\n|tags |Must contain `$:/tags/MenuBar` |\n|caption |The text that is displayed for the menu item. Avoid links, using `~` to suppress CamelCase links if required |\n|target |For simple link menu items specifies a tiddler title as the target of the link |\n|is-dropdown |Set to `yes` to indicate a dropdown menu item |\n|text |For dropdown menu items, specifies the body of the dropdown |\n|custom-menu-content |Optional wikitext to be displayed in place of the caption |\n|custom-menu-styles-wide |Optional string of styles to be applied to menu item when the menubar is wide |\n|custom-menu-styles-narrow |Optional string of styles to be applied to menu item when the menubar is narrow |\n\nCustom menu items should make sure that the clickable link or button is an immediate child, and not wrapped in another element.\n\nNote that menu items can be pushed to the right of the menu bar setting the ''custom-menu-styles'' field to `float: right;`.\n"
},
"$:/plugins/tiddlywiki/menubar/styles": {
"title": "$:/plugins/tiddlywiki/menubar/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define breakpoint-plus-one()\n<$text text={{{ [{$:/config/plugins/menubar/breakpoint}removesuffix[px]add[1]addsuffix[px]] }}} />\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nnav.tc-menubar {\n\tposition: fixed;\n\tz-index: 850;\n\tdisplay: inline-block;\n\ttop: 0;\n\tright: 0;\n\tleft: 0;\n}\n\nnav.tc-menubar ul.tc-menubar-list {\n\tposition: relative;\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0 0 0 42px;\n\tbackground: <<colour background>>;\n\tbackground: <<colour menubar-background>>;\n\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml nav.tc-menubar ul.tc-menubar-list {\n\t\tpadding: 0 0 0 8px;\n\t}\n\n}\n\nnav.tc-menubar li.tc-menubar-item {\n\tdisplay: inline-block;\n\tmargin: 0;\n\tpadding: 0;\n}\n\nnav.tc-menubar .tc-menubar-narrow li.tc-menubar-item {\n\tdisplay: block;\n}\n\nnav.tc-menubar li.tc-menubar-item > a,\nnav.tc-menubar li.tc-menubar-item > button {\n\tdisplay: inline-block;\n/*\ttext-transform: uppercase; */\n\tline-height: 1;\n\tfont-weight: 700;\n\tcolor: <<colour foreground>>;\n\tcolor: <<colour menubar-foreground>>;\n\tfill: <<colour foreground>>;\n\tfill: <<colour menubar-foreground>>;\n\ttext-decoration: none;\n\tpadding: 0.5em;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\tcursor: pointer;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar li.tc-menubar-item > a.tc-selected,\nnav.tc-menubar li.tc-menubar-item > button.tc-selected {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n}\n\nnav.tc-menubar li.tc-menubar-item svg {\n\ttransition: none;\n\twidth: 1em;\n\theight: 1em;\n\tfill: <<colour foreground>>;\n\tfill: <<colour menubar-foreground>>;\n}\n\nnav.tc-menubar li.tc-menubar-item .tc-menubar-dropdown-arrow svg {\n\twidth: 0.5em;\n\theight: 0.5em;\n}\n\nnav.tc-menubar li.tc-menubar-item > a.tc-selected svg,\nnav.tc-menubar li.tc-menubar-item > button.tc-selected svg {\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n}\n\nnav.tc-menubar li.tc-menubar-item > a:hover,\nnav.tc-menubar li.tc-menubar-item > button:hover svg,\nnav.tc-menubar li.tc-menubar-item > button:hover {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar li.tc-menubar-item > a:active,\nnav.tc-menubar li.tc-menubar-item > button:active svg,\nnav.tc-menubar li.tc-menubar-item > button:active {\n\tbackground: <<colour foreground>>;\n\tbackground: <<colour menubar-foreground>>;\n\tcolor: <<colour background>>;\n\tcolor: <<colour menubar-background>>;\n\tfill: <<colour background>>;\n\tfill: <<colour menubar-background>>;\n\tborder-radius: 0;\n\ttext-decoration: none;\n}\n\nnav.tc-menubar .tc-drop-down,\nnav.tc-menubar .tc-block-dropdown {\n\tmax-width: 70vw;\n\tmax-height: 70vh;\n\toverflow: auto;\n}\n\nnav.tc-menubar .tc-drop-down a {\n\ttext-decoration: none;\n}\n\nnav.tc-menubar .tc-drop-down .tc-table-of-contents button {\n\tdisplay: inline-block;\n\twidth: auto;\n}\n\nnav.tc-menubar .tc-drop-down ol {\n\tmargin: 0;\n}\n\nnav.tc-menubar .tc-drop-down .tc-menubar-dropdown-sidebar a,\nnav.tc-menubar .tc-drop-down .tc-menubar-dropdown-sidebar button {\n\tdisplay: inline;\n\twidth: auto;\n}\n\nnav.tc-menubar .tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (max-width: {{$:/config/plugins/menubar/breakpoint}}) {\n\n\t.tc-menubar-wide {\n\t\tdisplay: none;\n\t}\n\n}\n\n@media (min-width: <<breakpoint-plus-one>>) {\n\n\tnav.tc-menubar li.tc-menubar-item.tc-menubar-narrow,\n\t.tc-menubar-narrow {\n\t\tdisplay: none;\n\t}\n\n}\n\n\n"
},
"$:/tags/MenuBar": {
"title": "$:/tags/MenuBar",
"list": "$:/plugins/tiddlywiki/menubar/items/hamburger $:/plugins/tiddlywiki/menubar/items/topleftbar $:/plugins/tiddlywiki/menubar/items/contents $:/plugins/tiddlywiki/menubar/items/search $:/plugins/tiddlywiki/menubar/items/pagecontrols $:/plugins/tiddlywiki/menubar/items/server $:/plugins/tiddlywiki/menubar/items/toprightbar"
}
}
}
<div class="tc-table-of-contents">
<<toc-selective-expandable 'Table of Contents'>>
</div>
{
"tiddlers": {
"$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js": {
"text": "(function(doc) {\n\nfunction _exposeIosHtml5DragDropShim(config) {\n log = noop; // noOp, remove this line to enable debugging\n\n var coordinateSystemForElementFromPoint;\n\n var DRAG_OVER_EMIT_FREQ = 50;\n\n function main() {\n config = config || {};\n if (!config.hasOwnProperty(\"simulateAnchorClick\")) config.simulateAnchorClick = true;\n\n coordinateSystemForElementFromPoint = navigator.userAgent.match(/OS [1-4](?:_\\d+)+ like Mac/) ? \"page\" : \"client\";\n\n var div = doc.createElement('div');\n var dragDiv = 'draggable' in div;\n var evts = 'ondragstart' in div && 'ondrop' in div;\n\n var needsPatch = !(dragDiv || evts) || /iPad|iPhone|iPod|Android/.test(navigator.userAgent);\n log((needsPatch ? \"\" : \"not \") + \"patching html5 drag drop\");\n\n if(!needsPatch) {\n return;\n }\n\n if(!config.enableEnterLeave) {\n DragDrop.prototype.synthesizeEnterLeave = noop;\n }\n\n if(config.holdToDrag){\n doc.addEventListener(\"touchstart\", touchstartDelay(config.holdToDrag), {passive:false});\n }\n else {\n doc.addEventListener(\"touchstart\", touchstart, {passive:false});\n }\n }\n\n function DragDrop(event, el) {\n\n this.dragData = {};\n this.dragDataTypes = [];\n this.dragImage = null;\n this.dragImageTransform = null;\n this.dragImageWebKitTransform = null;\n this.customDragImage = null;\n this.customDragImageX = null;\n this.customDragImageY = null;\n this.el = el || event.target;\n this.dragOverTimer = null;\n this.lastMoveEvent = null;\n\n log(\"dragstart\");\n\n if (this.dispatchDragStart()) {\n this.createDragImage();\n this.listen();\n }\n }\n\n DragDrop.prototype = {\n listen: function() {\n var move = onEvt(doc, \"touchmove\", this.move, this);\n var end = onEvt(doc, \"touchend\", ontouchend, this);\n var cancel = onEvt(doc, \"touchcancel\", cleanup, this);\n\n function ontouchend(event) {\n this.dragend(event, event.target);\n cleanup.call(this);\n }\n function cleanup() {\n log(\"cleanup\");\n this.dragDataTypes = [];\n if (this.dragImage !== null) {\n this.dragImage.parentNode.removeChild(this.dragImage);\n this.dragImage = null;\n this.dragImageTransform = null;\n this.dragImageWebKitTransform = null;\n }\n this.customDragImage = null;\n this.customDragImageX = null;\n this.customDragImageY = null;\n this.el = this.dragData = null;\n return [move, end, cancel].forEach(function(handler) {\n return handler.off();\n });\n }\n },\n move: function(event) {\n event.preventDefault();\n var pageXs = [], pageYs = [];\n [].forEach.call(event.changedTouches, function(touch) {\n pageXs.push(touch.pageX);\n pageYs.push(touch.pageY);\n });\n\n var x = average(pageXs) - (this.customDragImageX || parseInt(this.dragImage.offsetWidth, 10) / 2);\n var y = average(pageYs) - (this.customDragImageY || parseInt(this.dragImage.offsetHeight, 10) / 2);\n this.translateDragImage(x, y);\n\n this.synthesizeEnterLeave(event);\n this.synthesizeOver(event);\n },\n // We use translate instead of top/left because of sub-pixel rendering and for the hope of better performance\n // http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/\n translateDragImage: function(x, y) {\n var translate = \"translate(\" + x + \"px,\" + y + \"px) \";\n\n if (this.dragImageWebKitTransform !== null) {\n this.dragImage.style[\"-webkit-transform\"] = translate + this.dragImageWebKitTransform;\n }\n if (this.dragImageTransform !== null) {\n this.dragImage.style.transform = translate + this.dragImageTransform;\n }\n },\n synthesizeEnterLeave: function(event) {\n var target = elementFromTouchEvent(this.el,event)\n if (target != this.lastEnter) {\n if (this.lastEnter) {\n this.dispatchLeave(event);\n }\n this.lastEnter = target;\n if (this.lastEnter) {\n this.dispatchEnter(event);\n }\n }\n },\n synthesizeOver: function(event) {\n this.lastMoveEvent = event;\n if(this.lastEnter && !this.dragOverTimer) {\n this.dragOverTimer = setInterval(this.dispatchOver.bind(this), DRAG_OVER_EMIT_FREQ);\n }\n },\n clearDragOverTimer: function() {\n if(this.dragOverTimer) {\n clearInterval(this.dragOverTimer);\n this.dragOverTimer = null;\n }\n },\n dragend: function(event) {\n\n // we'll dispatch drop if there's a target, then dragEnd.\n // drop comes first http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#drag-and-drop-processing-model\n log(\"dragend\");\n\n if (this.lastEnter) {\n this.dispatchLeave(event);\n }\n\n var target = elementFromTouchEvent(this.el,event)\n if (target) {\n log(\"found drop target \" + target.tagName);\n this.dispatchDrop(target, event);\n } else {\n log(\"no drop target\");\n }\n\n var dragendEvt = doc.createEvent(\"Event\");\n dragendEvt.initEvent(\"dragend\", true, true);\n this.el.dispatchEvent(dragendEvt);\n this.clearDragOverTimer();\n },\n dispatchDrop: function(target, event) {\n var dropEvt = doc.createEvent(\"Event\");\n dropEvt.initEvent(\"drop\", true, true);\n\n var touch = event.changedTouches[0];\n var x = touch[coordinateSystemForElementFromPoint + 'X'];\n var y = touch[coordinateSystemForElementFromPoint + 'Y'];\n\n var targetOffset = getOffset(target);\n\n dropEvt.offsetX = x - targetOffset.x;\n dropEvt.offsetY = y - targetOffset.y;\n\n dropEvt.dataTransfer = {\n types: this.dragDataTypes,\n getData: function(type) {\n return this.dragData[type];\n }.bind(this),\n dropEffect: \"move\"\n };\n dropEvt.preventDefault = function() {\n // https://www.w3.org/Bugs/Public/show_bug.cgi?id=14638 - if we don't cancel it, we'll snap back\n }.bind(this);\n\n once(doc, \"drop\", function() {\n log(\"drop event not canceled\");\n },this);\n\n target.dispatchEvent(dropEvt);\n },\n dispatchEnter: function(event) {\n\n var enterEvt = doc.createEvent(\"Event\");\n enterEvt.initEvent(\"dragenter\", true, true);\n enterEvt.dataTransfer = {\n types: this.dragDataTypes,\n getData: function(type) {\n return this.dragData[type];\n }.bind(this)\n };\n\n var touch = event.changedTouches[0];\n enterEvt.pageX = touch.pageX;\n enterEvt.pageY = touch.pageY;\n enterEvt.clientX = touch.clientX;\n enterEvt.clientY = touch.clientY;\n\n this.lastEnter.dispatchEvent(enterEvt);\n },\n dispatchOver: function() {\n\n var overEvt = doc.createEvent(\"Event\");\n overEvt.initEvent(\"dragover\", true, true);\n overEvt.dataTransfer = {\n types: this.dragDataTypes,\n getData: function(type) {\n return this.dragData[type];\n }.bind(this)\n };\n\n var touch = this.lastMoveEvent.changedTouches[0];\n overEvt.pageX = touch.pageX;\n overEvt.pageY = touch.pageY;\n overEvt.clientX = touch.clientX;\n overEvt.clientY = touch.clientY;\n\n this.lastEnter.dispatchEvent(overEvt);\n },\n dispatchLeave: function(event) {\n\n var leaveEvt = doc.createEvent(\"Event\");\n leaveEvt.initEvent(\"dragleave\", true, true);\n leaveEvt.dataTransfer = {\n types: this.dragDataTypes,\n getData: function(type) {\n return this.dragData[type];\n }.bind(this)\n };\n\n var touch = event.changedTouches[0];\n leaveEvt.pageX = touch.pageX;\n leaveEvt.pageY = touch.pageY;\n leaveEvt.clientX = touch.clientX;\n leaveEvt.clientY = touch.clientY;\n\n this.lastEnter.dispatchEvent(leaveEvt);\n this.lastEnter = null;\n this.clearDragOverTimer();\n },\n dispatchDragStart: function() {\n var evt = doc.createEvent(\"Event\");\n evt.initEvent(\"dragstart\", true, true);\n evt.dataTransfer = {\n setData: function(type, val) {\n this.dragData[type] = val;\n if (this.dragDataTypes.indexOf(type) == -1) {\n this.dragDataTypes[this.dragDataTypes.length] = type;\n }\n return val;\n }.bind(this),\n setDragImage: function(el, x, y){\n this.customDragImage = el;\n this.customDragImageX = x\n this.customDragImageY = y\n }.bind(this),\n dropEffect: \"move\"\n };\n return this.el.dispatchEvent(evt);\n },\n createDragImage: function() {\n if (this.customDragImage) {\n this.dragImage = this.customDragImage.cloneNode(true);\n duplicateStyle(this.customDragImage, this.dragImage);\n } else {\n this.dragImage = this.el.cloneNode(true);\n duplicateStyle(this.el, this.dragImage);\n }\n this.dragImage.style.opacity = \"0.5\";\n this.dragImage.style.position = \"absolute\";\n this.dragImage.style.left = \"0px\";\n this.dragImage.style.top = \"0px\";\n this.dragImage.style.zIndex = \"999999\";\n\n var transform = this.dragImage.style.transform;\n if (typeof transform !== \"undefined\") {\n this.dragImageTransform = \"\";\n if (transform != \"none\") {\n this.dragImageTransform = transform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, '');\n }\n }\n\n var webkitTransform = this.dragImage.style[\"-webkit-transform\"];\n if (typeof webkitTransform !== \"undefined\") {\n this.dragImageWebKitTransform = \"\";\n if (webkitTransform != \"none\") {\n this.dragImageWebKitTransform = webkitTransform.replace(/translate\\(\\D*\\d+[^,]*,\\D*\\d+[^,]*\\)\\s*/g, '');\n }\n }\n\n this.translateDragImage(-9999, -9999);\n\n doc.body.appendChild(this.dragImage);\n }\n };\n\n // delayed touch start event\n function touchstartDelay(delay) {\n return function(evt){\n var el = evt.target;\n\n do {\n if (elementIsDraggable(el)) {\n var heldItem = function() {\n end.off();\n cancel.off();\n scroll.off();\n touchstart(evt);\n };\n\n var onReleasedItem = function() {\n end.off();\n cancel.off();\n scroll.off();\n clearTimeout(timer);\n };\n\n var timer = setTimeout(heldItem, delay);\n\n var end = onEvt(el, 'touchend', onReleasedItem, this);\n var cancel = onEvt(el, 'touchcancel', onReleasedItem, this);\n var scroll = onEvt(window, 'scroll', onReleasedItem, this);\n break;\n }\n } while ((el = el.parentNode) && el !== doc.body);\n };\n };\n\n // event listeners\n function touchstart(evt) {\n var el = evt.target;\n do {\n if (elementIsDraggable(el)) {\n handleTouchStartOnAnchor(evt, el);\n\n evt.preventDefault();\n new DragDrop(evt,el);\n break;\n }\n } while((el = el.parentNode) && el !== doc.body);\n }\n\n function elementIsDraggable(el){\n // if an element is not draggable either explicitly or implicitly we can exit immediately\n if(!el.draggable) return false;\n\n // if an element has been explicitly set to be draggable we're good to go\n if(el.hasAttribute(\"draggable\")) return true;\n\n // otherwise we investigate the implicit option\n return (!config.requireExplicitDraggable);\n }\n\n function elementIsAnchor(el){\n return el.tagName.toLowerCase() == \"a\";\n }\n\n function handleTouchStartOnAnchor(evt, el){\n // If draggable isn't explicitly set for anchors, then simulate a click event.\n // Otherwise plain old vanilla links will stop working.\n // https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events#Handling_clicks\n if (!el.hasAttribute(\"draggable\") && elementIsAnchor(el) && config.simulateAnchorClick) {\n var clickEvt = document.createEvent(\"MouseEvents\");\n clickEvt.initMouseEvent(\"click\", true, true, el.ownerDocument.defaultView, 1,\n evt.screenX, evt.screenY, evt.clientX, evt.clientY,\n evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, null);\n el.dispatchEvent(clickEvt);\n log(\"Simulating click to anchor\");\n }\n }\n\n // DOM helpers\n function elementFromTouchEvent(el,event) {\n var touch = event.changedTouches[0];\n var target = doc.elementFromPoint(\n touch[coordinateSystemForElementFromPoint + \"X\"],\n touch[coordinateSystemForElementFromPoint + \"Y\"]\n );\n return target;\n }\n\n //calculate the offset position of an element (relative to the window, not the document)\n function getOffset(el) {\n var rect = el.getBoundingClientRect();\n return {\n \"x\": rect.left,\n \"y\": rect.top\n };\n }\n\n function onEvt(el, event, handler, context) {\n if(context) {\n handler = handler.bind(context);\n }\n el.addEventListener(event, handler, {passive:false});\n return {\n off: function() {\n return el.removeEventListener(event, handler, {passive:false});\n }\n };\n }\n\n function once(el, event, handler, context) {\n if(context) {\n handler = handler.bind(context);\n }\n function listener(evt) {\n handler(evt);\n return el.removeEventListener(event,listener);\n }\n return el.addEventListener(event,listener);\n }\n\n // duplicateStyle expects dstNode to be a clone of srcNode\n function duplicateStyle(srcNode, dstNode) {\n // Is this node an element?\n if (srcNode.nodeType == 1) {\n // Remove any potential conflict attributes\n dstNode.removeAttribute(\"id\");\n dstNode.removeAttribute(\"class\");\n dstNode.removeAttribute(\"style\");\n dstNode.removeAttribute(\"draggable\");\n\n // Clone the style\n var cs = window.getComputedStyle(srcNode);\n for (var i = 0; i < cs.length; i++) {\n var csName = cs[i];\n dstNode.style.setProperty(csName, cs.getPropertyValue(csName), cs.getPropertyPriority(csName));\n }\n\n // Pointer events as none makes the drag image transparent to document.elementFromPoint()\n dstNode.style.pointerEvents = \"none\";\n }\n\n // Do the same for the children\n if (srcNode.hasChildNodes()) {\n for (var j = 0; j < srcNode.childNodes.length; j++) {\n duplicateStyle(srcNode.childNodes[j], dstNode.childNodes[j]);\n }\n }\n }\n\n // general helpers\n function log(msg) {\n console.log(msg);\n }\n\n function average(arr) {\n if (arr.length === 0) return 0;\n return arr.reduce((function(s, v) {\n return v + s;\n }), 0) / arr.length;\n }\n\n function noop() {}\n\n main();\n\n};\n\nif (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = _exposeIosHtml5DragDropShim;\n} else if (typeof window !== 'undefined') {\n _exposeIosHtml5DragDropShim(window.iosDragDropShim);\n}\n})(document);",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js"
},
"$:/plugins/tiddlywiki/mobiledragdrop/license": {
"text": "Copyright (c) 2013 Tim Ruffles\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
"type": "text/plain",
"title": "$:/plugins/tiddlywiki/mobiledragdrop/license"
},
"$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup": {
"title": "$:/plugins/tiddlywiki/mobiledragdrop/rawmarkup",
"tags": "$:/tags/RawMarkupWikified",
"text": "`<script>\nvar iosDragDropShim = { enableEnterLeave: true, holdToDrag: 300 };`\n{{$:/plugins/tiddlywiki/mobiledragdrop/ios-drag-drop.js}}\n`</script>`\n"
},
"$:/plugins/tiddlywiki/mobiledragdrop/readme": {
"title": "$:/plugins/tiddlywiki/mobiledragdrop/readme",
"text": "This plugin provides a \"shim\" that enables HTML 5 compatible drag and drop operations on mobile browsers, including iOS and Android. The shim was created by Tim Ruffles and is published at https://github.com/timruffles/ios-html5-drag-drop-shim.\n\nAfter installing the plugin it is necessary to save the HTML file a second time before it will be fully enabled.\n"
},
"$:/plugins/tiddlywiki/mobiledragdrop/startup.js": {
"title": "$:/plugins/tiddlywiki/mobiledragdrop/startup.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/mobiledragdrop/startup.js\ntype: application/javascript\nmodule-type: startup\n\nStartup initialisation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"mobiledragdrop\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\twindow.addEventListener(\"touchmove\", function() {});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/stacked-view/StackedControls": {
"title": "$:/plugins/tiddlywiki/stacked-view/StackedControls",
"caption": "Stacked View",
"tags": "$:/tags/SideBar",
"text": "Set the [[fan separation|$:/config/StackedStoryViewFanHeight]]:\n\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"-10\">-10</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"0\">0</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"10\">10</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"30\">30</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"50\">50</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"100\">100</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"150\">150</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"200\">200</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"250\">250</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"300\">300</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"500\">500</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"700\">700</$button>\n* <$button set=\"$:/config/StackedStoryViewFanHeight\" setTo=\"1500\">1500</$button>\n"
},
"$:/config/StackedStoryViewFanHeight": {
"title": "$:/config/StackedStoryViewFanHeight",
"text": "100"
},
"$:/plugins/tiddlywiki/stacked-view/readme": {
"title": "$:/plugins/tiddlywiki/stacked-view/readme",
"text": "This plugin provides a new story visualisation that displays individual tiddlers as a stack of cards. It is currently experimental and incomplete.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/stacked-view]]\n"
},
"$:/plugins/tiddlywiki/stacked-view/config-macros/stacked-storyview": {
"title": "$:/plugins/tiddlywiki/stacked-view/config-macros/stacked-storyview",
"tags": "$:/tags/Macro",
"text": "\\define tv-stacked-storyview-fan-height-config-title() $:/config/StackedStoryViewFanHeight\n"
},
"$:/plugins/tiddlywiki/stacked-view/stacked.js": {
"title": "$:/plugins/tiddlywiki/stacked-view/stacked.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/stacked-view/stacked.js\ntype: application/javascript\nmodule-type: storyview\n\nKeeps tiddlers in a stack\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar StackedListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\tthis.fanHeightConfigTitle = listWidget.getVariable(\"tv-stacked-storyview-fan-height-config-title\");\n\tthis.placeTiddlers();\n};\n\nStackedListView.prototype.placeTiddlers = function() {\n\t// Initialise the stack of tiddler titles\n\tthis.listStack = [];\n\tvar numItems = this.listWidget.children.length,\n\t\tt, itemWidget,\n\t\tduration = $tw.utils.getAnimationDuration();\n\tfor(t=numItems-1; t>=0; t--) {\n\t\titemWidget = this.listWidget.children[t];\n\t\tthis.listStack.push(itemWidget.parseTreeNode.itemTitle);\n\t}\n\t// Ensure the tiddler at the top of the history stack is at the top of the array\n\tvar history = this.listWidget.wiki.getTiddlerData(this.listWidget.historyTitle,[]);\n\tfor(t=0; t<history.length; t++) {\n\t\tvar title = history[t].title;\n\t\tif(this.listStack.indexOf(title) !== -1) {\n\t\t\t$tw.utils.pushTop(this.listStack,title);\n\t\t}\n\t}\n\t// Get the configured fan height\n\tvar fanHeight = parseInt(this.listWidget.wiki.getTiddlerText(this.fanHeightConfigTitle),10);\n\t// Position each tiddler\n\tfor(var t=numItems-1; t>=0; t--) {\n\t\t// Get the DOM node for this tiddler\n\t\titemWidget = this.listWidget.children[t];\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\tif(domNode instanceof Element) {\n\t\t\t// Allows the width of the tiddler to be adjusted\n\t\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t\t\t// Find the position of the tiddler in the stack\n\t\t\tvar pos = this.listStack.indexOf(itemWidget.parseTreeNode.itemTitle);\n\t\t\tif(pos !== -1) {\n\t\t\t\t// Style the tiddler to position it\n\t\t\t\tvar posFactor = pos/(numItems-1);\n\t\t\t\t$tw.utils.setStyle(domNode,[\n\t\t\t\t\t{position: \"absolute\"},\n\t\t\t\t\t{transformOrigin: \"50% 0\"},\n\t\t\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration * (0.5 + posFactor) + \"ms \" + easing},\n\t\t\t\t\t{transform: \"translateX(0px) translateY(\" + (fanHeight * posFactor * posFactor) + \"px) scale(\" + (0.1 + posFactor * 0.9) + \")\"},\n\t\t\t\t\t{zIndex: pos + \"\"}\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\t}\n};\n\nStackedListView.prototype.refreshStart = function(changedTiddlers,changedAttributes) {\n};\n\nStackedListView.prototype.refreshEnd = function(changedTiddlers,changedAttributes) {\n\tthis.placeTiddlers();\n};\n\nStackedListView.prototype.navigateTo = function(historyInfo) {\n};\n\nStackedListView.prototype.insert = function(widget) {\n};\n\nStackedListView.prototype.remove = function(widget) {\n\twidget.removeChildDomNodes();\n};\n\nexports.stacked = StackedListView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/images/storyview-stacked": {
"title": "$:/core/images/storyview-stacked",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-stack tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M32,43 L32,37.3807213 C32,34.4040057 34.3875896,32 37.3328305,32 L45.5,32 L45.5,32 L84,32 L90.6671695,32 C93.6079301,32 96,34.409031 96,37.3807213 L96,43 L32,43 Z M30,48 L23.9992458,48 C19.5813843,48 16,51.578055 16,56.0085154 L16,103.991485 C16,108.414466 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.421945 112,103.991485 L112,56.0085154 C112,51.5855345 108.411895,48 104.000754,48 L98.5,48 L30,48 Z M80,27 L80,23.7529272 C80,22.2325275 78.803965,21 77.3335847,21 L50.6664153,21 C49.1937948,21 48,22.2299564 48,23.7529272 L48,27 L80,27 Z\"></path>\n </g>\n</svg>"
}
}
}
{
"tiddlers": {
"$:/plugins/tobibeer/inc/buttons/open": {
"title": "$:/plugins/tobibeer/inc/buttons/open",
"text": "<$button tooltip=\"Open this tiddler\" class=<<tv-config-toolbar-class>>>\r\n<$action-navigate/>\r\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\r\n{{$:/core/images/down-arrow}}\r\n</$list>\r\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\r\n<span class=\"tc-btn-text\">open</span>\r\n</$list>\r\n</$button>"
},
"$:/plugins/tobibeer/inc/macro": {
"title": "$:/plugins/tobibeer/inc/macro",
"tags": "$:/tags/Macro",
"text": "\\define tb-inc(tiddler)\r\n<div class=\"tb-inc\" title=\"\"\"transcluded tiddler '$tiddler$'\"\"\">\r\n<$tiddler tiddler=\"\"\"$tiddler$\"\"\">\r\n<div class=\"tb-inc-controls tc-tiddler-controls\">\r\n<$list filter=\"[list[$:/plugins/tobibeer/inc/toolbar!!text]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\r\n</div>\r\n<div class=\"tb-inc-tiddler\">\r\n<$transclude mode=block/>\r\n</div>\r\n</$tiddler>\r\n</div>\r\n\\end\r\n\\define {(tiddler)\r\n<$reveal type=\"match\" text=\"\"\"$tiddler$\"\"\" default=\"\">\r\n<$macrocall $name=\"tb-inc\" tiddler=<<currentTiddler>>/>\r\n</$reveal>\r\n<$reveal type=\"nomatch\" text=\"\"\"$tiddler$\"\"\" default=\"\">\r\n<$macrocall $name=\"tb-inc\" tiddler=\"\"\"$tiddler$\"\"\"/>\r\n</$reveal>\r\n\\end"
},
"$:/plugins/tobibeer/inc/readme": {
"title": "$:/plugins/tobibeer/inc/readme",
"text": "Provides the macro `<<{>>` that allows to transclude tiddlers with an on-hover toolbar for editing.\n\n; documentation / examples / demos...\r\n: http://tobibeer.github.io/tw5-plugins#inc"
},
"$:/plugins/tobibeer/inc/styles": {
"title": "$:/plugins/tobibeer/inc/styles",
"tags": "$:/tags/Stylesheet",
"type": "text/css",
"text": ".tb-inc-controls{\r\nmargin-top:-2em;\r\npadding: 5px;\r\ndisplay:none;\r\n}\r\n.tb-inc-tab-content .tb-inc{\r\nmargin:0;\r\npadding:0;\r\nposition:relative;\r\n}\r\n.tb-inc-tab-content .tb-inc-controls{\r\nposition:absolute;\r\nmargin-top:-5px;\r\nright:0;\r\ntop:0;\r\n}\r\n.tb-inc:hover > .tb-inc-controls{\r\ndisplay:block;\r\nfloat:right;\r\n}"
},
"$:/plugins/tobibeer/inc/templates/tabs": {
"title": "$:/plugins/tobibeer/inc/templates/tabs",
"text": "<div class=\"tb-inc-tab-content\">\n<$macrocall $name=\"{\" tiddler=<<currentTab>>/>\n</div>"
},
"$:/plugins/tobibeer/inc/toolbar": {
"title": "$:/plugins/tobibeer/inc/toolbar",
"text": "$:/plugins/tobibeer/inc/buttons/open\n\n$:/core/ui/Buttons/edit\n\n$:/core/ui/Buttons/delete"
}
}
}
{
"tiddlers": {
"$:/plugins/tobibeer/split/filter.js": {
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/split/filter.js\r\ntype: application/javascript\r\nmodule-type: filteroperator\r\n\r\nFilter operator that splits each item at a specified separator.\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";exports.split=function(s,t,e){var i,a,f=e.wiki,r=t.suffix||\"\",n=[],l=[],u=[],o=[],p={negate:t.prefix===\"!\",split:t.operand,prefix:\"\",suffix:\"\",num:1,$num:1},c=[[/^\\s+/,function(){}],[/^(num|pos|\\$num|\\$pos)=(n|-n|\\d+|-\\d+)(?:\\s|$)/i,function(s){p[s[1]]=s[2];if(s[1].charAt(0)===\"$\"){p.mode=\"$pos\"}if(s[1]===\"$num\"&&!p.$pos){p.$pos=1}if(s[1]===\"num\"&&!p.pos){p.pos=1}}],[/^(\\+|at|!at|first|!first|last|!last|list|keep|strict|\\$strict|trim|unique)(?:\\s|$)/i,function(s){var t=s[1];p[t]=1;switch(t){case\"+\":p.suffix=p.split;break;case\"!at\":p.nat=1;case\"at\":i=p.split.match(/(\\d+),(\\d+)/);if(i){p.at=parseInt(i[1]);p.to=parseInt(i[2])}else{p.at=parseInt(p.split)}if(isNaN(p.at)){throw\"suffix 'at' must be numeric: \"+p.at}else{p.at=p.at-1}break;case\"list\":p.list=\"list\";break;case\"first\":p.pos=1;break;case\"!first\":p.pos=2;p.num=\"n\";break;case\"last\":p.pos=\"n\";break;case\"!last\":p.pos=\"-2\";p.num=\"-n\";break}}],[/^(before|after|beforelast|afterlast)(?:\\s|$)/i,function(s){var t=s[1];p.before=(t.toLowerCase().indexOf(\"before\")===0?1:2)+(t.toLowerCase().indexOf(\"last\")===t.length-4?2:0)}],[/^list\\=\\s*([^\\s]+)(?:\\s|$)/i,function(s){p.list=s[1]}],[/^(\\!)?(\\$|\\$all|\\$first|\\$last)(?:\\s|$)/i,function(s){var t=s[2];p.mode=t;p.neg=s[1]?1:0;if(t===\"$first\"){if(p.neg){p.$pos=2;p.$num=\"n\"}else{p.$pos=1}}else if(t===\"$last\"){if(p.neg){p.$pos=\"-2\";p.$num=\"-n\"}else{p.$pos=\"n\"}}}],[/^(?:\\+\\\\([^\\\\]+)\\\\|\\\\([^\\\\]+)\\\\\\+)/,function(s){if(s[1]){p.prefix=s[1]}else{p.suffix=s[2]}}]];try{while(r){a=r;$tw.utils.each(c,function(s){var t=s[0].exec(r);if(t){s[1].call(this,t);r=r.substr(t[0].length);return false}});if(r===a){throw\"invalid suffix(es) '\"+r+\"'\"}}if(p.list&&p.split){o=$tw.utils.parseStringArray(p.split)}else{s(function(s,t){var e,a,r=[];l.push(t);if(p.before){i=1+(p.before<3?t.indexOf(p.split):t.lastIndexOf(p.split));if(i>0){r=[p.before%2===1?t.substr(0,i-1):t.substr(i+p.split.length-1)]}if(p.keep&&i===0){r[0]=t}}else if(p.at){if(p.to){r=p.nat?[t.substr(0,p.at)+t.substr(p.at+p.to)]:[t.substr(p.at,p.to)];if(p.keep&&r[0]===\"\"){r[0]=t}}else{r=[t.substr(0,p.at)];a=t.substr(p.at);if(a){r.push(a)}}}else if(p.list){r=f.getTiddlerList(t,p.list)}else{r=t.split(p.split)}e=r.length>1||p.list||r.length>0&&(p.before||p.to);if(p.pos){r=$tw.utils.getArrayItems(r,p.pos,p.num,p.strict)}if(r.length&&(e||p.keep)){n.push(t);$tw.utils.each(r,function(s){if(p.trim){s=s.trim()}if(s){if(!p.unique||p.unique&&o.indexOf(s)<0){o.push(p.prefix+s+p.suffix)}}})}else{u.push(t)}})}if(t.suffix){switch(p.mode){case\"$\":o=n;break;case\"$all\":if(o.length){if(p.negate){u=[]}else{o=l}}else if(p.negate){u=l}break;case\"$first\":case\"$last\":case\"$pos\":o=$tw.utils.getArrayItems(o,p.$pos,p.$num,p.$strict);break}}}catch($){return[\"split syntax error:\"+$]}return p.negate?u:o}})();",
"title": "$:/plugins/tobibeer/split/filter.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/plugins/tobibeer/split/readme": {
"title": "$:/plugins/tobibeer/split/readme",
"text": "Provides the filter `split[by]`, splitting input titles `by` a string defined in the operand, allowing you to slice and dice output elements as needed.\n\n; suffixes\r\n: `$` — return input titles that yield split items\r\n: `$all` — return all input titles if any yield split items\r\n: `+` — append operand to split titles\r\n: `+\\x\\` — append x to split titles\r\n: `\\x\\+` — prepend x to split titles\r\n: `unique` — prevents duplicate titles in the output\r\n: `trim` — no leading/trailing blanks in split titles\r\n: `first` — first title of the split => `!first` — all but first\r\n: `last` — last title of the split => `!last` — all but last\r\n: `at[<num>]` — split in two at number in the operand\r\n: `at[<num>,<len>]` — slice out ''len'' characters starting at character ''num''\r\n: `!at[<num>,<len>]` — cutting the above out of the input title\r\n: `before[x]` / `after[x]` — up until / after first match of `x`\r\n: `beforelast[x]` / `afterlast[x]`— up until / after last match of `x`\r\n: `pos=2` — 2nd split item of each input title in turn\r\n: `pos=1 num=3` — first three each\r\n: `pos=2 num=n` — 2nd to last each\r\n: `pos=-2 num=-n` — first to 2nd last each\r\n: `strict` — specified `num` is mandatory\r\n: `$pos`, `$num`, `$strict`, `$first`, `$!first`,`$last`, `$!last` — for final list\r\n: `keep` — return title even if not split\r\n: `list[]` — parse list field of input titles\r\n: `list=tags[]` — parse tags field of input titles\r\n: `list<foo>` — parse (soft) operand as list, e.g. variables or text-references\n\n<br>\n\n; documentation / examples / demos...\r\n: http://tobibeer.github.io/tw5-plugins#split"
},
"$:/plugins/tobibeer/split/utils.js": {
"text": "/*\\\r\ntitle: $:/plugins/tobibeer/split/utils.js\r\ntype: application/javascript\r\nmodule-type: utils\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";exports.getArrayItems=function(e,t,n,s){var i,a=parseInt(n),f=parseInt(t),r=e.length;if(t===\"n\"){f=r}else if(t===\"-n\"){f=1}else if(!t){f=1}if(n===\"n\"){a=r}else if(n===\"-n\"){a=-(f<0?r+f+1:f)}else if(!n){a=1}f=Math.max(1,f<0?r+f+(a<0?a+2:1):a<0?f+a+1:f);a=Math.max(1,Math.abs(a));i=e.splice(f-1,a);if(i.length<a&&s){i=[]}return i}})();",
"title": "$:/plugins/tobibeer/split/utils.js",
"type": "application/javascript",
"module-type": "utils"
}
}
}
<$button class="tc-btn-invisible" tooltip="Adjust layout">
<$action-sendmessage $message="tm-open-window" $param="$:/plugins/tongerner/layout_adjustment/tweaks" height="760px" width="720px"/>
{{$:/plugins/tongerner/layout_adjustment/image/layout}}
</$button>
/* See http://plaintabs.tiddlyspot.com */
<pre>
.tc-tab-buttons {
margin-bottom:0px;
padding-left:.5vw;
}
.tc-tab-divider {
margin-top:-1px;
}
.tc-tab-buttons button {
opacity:.9;
}
.tc-tab-buttons button.tc-tab-selected {
border-bottom:1px solid <<colour background>>;
opacity:1;
}
.tc-tab-buttons.tc-vertical button {
background-image:none;
border: 1px solid transparent;
opacity:.9;
}
.tc-tab-buttons.tc-vertical button.tc-tab-selected {
background:inherit;
border:1px solid <<colour tab-border-selected>>;
border-right: 1px solid <<colour background>>;
opacity:1;
}
.tc-sidebar-lists .tc-tab-buttons button {
border:0;
}
.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
border-bottom: 1px solid <<colour page-background>>;
}
.tc-tab-content.tc-vertical {
border-left:1px solid <<colour tab-divider>>;
}
.tc-more-sidebar .tc-tab-buttons button.tc-tab-selected {
border: 1px solid <<colour sidebar-tab-border-selected>>;
border-right: 1px solid <<colour page-background>>;
}
</pre>
\define applytemplate(signum)
<$set name=template filter="[{$:/richlink/.dictionary##$signum$}addprefix[$:/]]">
<$tiddler tiddler=<<template>> >
<$transclude/>
</$tiddler>
</$set>
\end
\define richlink(link, 1, 2, 3)
<$vars link="$link$" 1="$1$" 2="$2$" 3="$3$">
<$set name="domain" filter="""[[$link$]removeprefix[https://]splitbefore[/]removesuffix[/]] [[$link$]removeprefix[http://]splitbefore[/]removesuffix[/]] [[$link$]removeprefix[https%3A//]splitbefore[/]removesuffix[/]] [[$link$]removeprefix[http%3A//]splitbefore[/]removesuffix[/]]""" >
<$macrocall $name=applytemplate signum=<<domain>> />
</$set>
<$set name="filetype" filter="""[[$link$]split:afterlast[.]]""" >
<$macrocall $name=applytemplate signum=<<filetype>> />
</$set>
</$vars>
\end
<$list filter="[all[current]has[attachment]get[attachment]]"
variable="link">
{{$:/core/images/import-button}}<$macrocall $name=richlink link=<<link>>/>
</$list>
{
"tiddlers": {
"$:/plugins/TWaddle/TabLinks/Stylesheet": {
"created": "20170304101100313",
"creator": "twMat",
"text": "<pre>\n.tablink {display:none;}\n\n.tc-tab-selected .tablink {\n display:{{$:/plugins/TWaddle/TabLinks/Stylesheet!!display}};\n position:absolute;\n margin:-1.5rem 0 0 -7px;\n font-size:1rem;\n background:white;\n padding:0 5px;\n border:1px solid silver;\n border-radius:2px;\n visibility:hidden;\n opacity:0;\n}\n.tc-tab-selected:hover .tablink {\n visibility:visible;\n opacity:1;\n -webkit-transition:opacity 0.9s;\n -moz-transition:opacity 0.9s;\n -ms-transition:opacity 0.9s; \n -o-transition:opacity 0.9s;\n transition:opacity 0.9s;\n -webkit-transition-timing-function: ease-in; /* Safari and Chrome */\n transition-timing-function: ease-in;\n}\n.tc-tab-buttons .tablink button, .tablink-btn {\n border:0;\n background:transparent;\n padding: 2px 1px;\n margin:0;\n}\n\n.tablink-btn { opacity:.4; }\n\n.tablink-btn:hover { opacity:1; } \n\n.tablink a:hover { text-decoration:none; }\n</pre>",
"type": "text/vnd.tiddlywiki",
"title": "$:/plugins/TWaddle/TabLinks/Stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "twMat",
"modified": "20180914222330633",
"list-after": "$:/themes/tiddlywiki/vanilla/base",
"display": "inline-block"
},
"$:/plugins/TWaddle/TabLinks/Toggle": {
"created": "20170115223014606",
"creator": "twMat",
"text": "<$checkbox tiddler=\"$:/plugins/TWaddle/TabLinks/Stylesheet\" field=\"display\" checked=\"inline-block\" unchecked=\"none\" default=\"inline-block\"> In tabs, display shortcut links to the content tiddler, //when hovering// on the active tab.\n\n",
"title": "$:/plugins/TWaddle/TabLinks/Toggle",
"tags": "$:/tags/ControlPanel/Settings",
"modifier": "twMat",
"modified": "20180914222302945",
"list-before": "",
"caption": "TabLinks"
},
"$:/plugins/TWaddle/TabLinks/macro": {
"created": "20160806203109547",
"creator": "twMat",
"text": "\\define tablink()\n<div class=\"tablink\">\n<$tiddler tiddler=<<currentTab>>>\n<$link to=<<currentTab>> tooltip=\"go to tab\" >\n <span class=\"tablink-btn\">{{$:/core/images/preview-open}}</span>\n</$link>\n<$button message=\"tm-edit-tiddler\" param=<<currentTab>> tooltip=\"edit tab\">\n <span class=\"tablink-btn\">{{$:/core/images/edit-button}}</span>\n</$button>\n</$tiddler>\n</div>\n\\end",
"title": "$:/plugins/TWaddle/TabLinks/macro",
"tags": "$:/tags/Macro",
"modifier": "twMat",
"modified": "20180914222219769"
},
"$:/core/macros/tabs": {
"created": "20180914222106589",
"creator": "twMat",
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>><<tablink>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n",
"modified": "20180914222110828",
"modifier": "twMat"
}
}
}
{
"tiddlers": {
"$:/plugins/wikilabs/uni-link/aka-footer/template": {
"title": "$:/plugins/wikilabs/uni-link/aka-footer/template",
"type": "text/vnd.tiddlywiki",
"text": "''Note'': This tiddler has the following aliases || <<showAliases delim:\" ||\">>"
},
"$:/plugins/wikilabs/uni-link/aka-footer": {
"title": "$:/plugins/wikilabs/uni-link/aka-footer",
"tags": "$:/tags/ViewTemplate",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[all[current]has[aliases]]\">\n<br/>\n<hr>\n\n{{||$:/plugins/wikilabs/uni-link/aka-footer/template}}\n</$list>"
},
"$:/plugins/wikilabs/uni-link/aka-macros": {
"title": "$:/plugins/wikilabs/uni-link/aka-macros",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define tooltip() Tiddler -> <<currentTiddler>>\n\\define aka(target, field:X)\n\\whitespace trim\n<$list filter=\"[[$target$]is[alias]]\" variable=ali emptyMessage=\"\"\"<$link tooltip=\"Alias not defined!\" to=\"?\"><span class=\"uni-alias-missing\">$target$</span></$link>\"\"\">\n<$list filter=\"[has[aliases]!has[draft.of]]\">\n <$list filter=\"[enlist{!!aliases}regexp[^$target$$(?i)]]\" variable=\"dummy\">\n <$link tooltip=<<tooltip>> >\n <span class=\"uni-alias\">\n <$set name=\"tv-wikilinks\" value=\"no\">\n <$view field=$field$ mode=text>$target$</$view>\n </$set>\n </span>\n </$link>\n </$list>\n</$list>\n</$list>\n\\end\n\n\\define aka-no-links(target)\n\\whitespace trim\n<$list filter=\"[[$target$]is[alias]]\" variable=ali emptyMessage=\"\"\"<$link tooltip=\"Alias not defined!\" to=\"?\">$target$</$link>\"\"\">\n<$list filter=\"[has[aliases]!has[draft.of]]\">\n <$list filter=\"[enlist{!!aliases}regexp[^$target$$(?i)]]\" variable=\"dummy\">\n <span><<currentTiddler>></span>\n </$list>\n</$list>\n</$list>\n\\end\n\n\\define showAliases(delim:\",\")\n<$list filter=\"[list[!!aliases]butlast[]]\"><$view field=title/>$delim$ </$list><$list filter=\"[list[!!aliases]last[]]\"><$view field=title/></$list>\n\\end\n\n\\define listAliases()\n<$list filter=\"[has[aliases]]\"><$link to=<<currentTiddler>> ><<currentTiddler>></$link> - <<showAliases>><br/></$list>\n\\end\n\n<pre><$view field=\"text\"/></pre>"
},
"$:/plugins/wikilabs/uni-link/alias-list": {
"title": "$:/plugins/wikilabs/uni-link/alias-list",
"type": "text/vnd.tiddlywiki",
"text": "<<listAliases>>"
},
"$:/plugins/wikilabs/uni-link/backlinks-template": {
"title": "$:/plugins/wikilabs/uni-link/backlinks-template",
"text": "!!! Uni-links\n\nUse the following field as link text, if available. It defaults to tiddler ''title''!\n\n<<<\n<$tiddler tiddler=\"$:/config/wikilabs/uni-link/field\">\n<$radio value=\"caption\"> caption</$radio><br>\n<$radio value=\"subtitle\"> subtitle</$radio><br>\n<$radio value=\"\"> title</$radio><br>\n</$tiddler>\n<<<\n\nThis setting can be found at the $:/ControPanel uni-links tab! The configuration tiddler is: [[$:/config/wikilabs/uni-link/field]]\n\n| Link | Result |h\n|`[[default prettylink|tiddler-with-caption]]` |[[default prettylink|tiddler-with-caption]] |\n|`[[tiddler-with-caption]]` |[[tiddler-with-caption]] |\n|`[[tiddler-with-subtitle]]` |[[tiddler-with-subtitle]] |\n|`[[tiddler-with-subtitle-and-caption]]` |[[tiddler-with-subtitle-and-caption]] |\n|`[[tiddler-with-subtitle-and-caption|]]` |[[tiddler-with-subtitle-and-caption|]] ... but don't use them!|\n|`[[tiddler doesn't exist]]` |[[tiddler doesn't exist]] |\n\n!!! Alias Links\n\n| Link | Result |h\n|`[[alias|?]]` |[[alias|?]] |\n|`[[AliaS|?]]` |[[AliaS|?]] |\n|`[[alias|?t]]` |[[alias|?t]] |\n|`[[alias|?c]]` |[[alias|?c]] |\n|`[[alias|?s]]` |[[alias|?s]] |\n|`[[alias|?my-field]]` |[[alias|?my-field]] |\n|`[[doesn't exist|?]]` |[[doesn't exist|?]] |\n"
},
"$:/language/Buttons/Aliasify/Caption": {
"title": "$:/language/Buttons/Aliasify/Caption",
"text": "alias-link"
},
"$:/language/Buttons/Aliasify/Hint": {
"title": "$:/language/Buttons/Aliasify/Hint",
"text": "Wrap selection in square brackets and add alias postfix"
},
"$:/language/Buttons/Make/Alias/Caption": {
"title": "$:/language/Buttons/Make/Alias/Caption",
"text": "make alias"
},
"$:/language/Buttons/Make/Alias/Hint": {
"title": "$:/language/Buttons/Make/Alias/Hint",
"text": "Create a wikitext alias-link"
},
"$:/plugins/wikilabs/uni-link/history": {
"title": "$:/plugins/wikilabs/uni-link/history",
"text": "V 2.0.0 - 2020.06.11\n\n* Compatible with ~TiddlyWiki >= V5.1.22\n* Fix a \"backlinking\" problem introduced with TW V5.1.22\n** Adjusted uni-link \"backlinker\" to use new indexer `.extractLinks()` function\n* More info can be found in the [[readme|$:/plugins/wikilabs/uni-link/readme]]\n\n--------------\n\nCompatible with ~TiddlyWiki <= V5.1.21\n\nV 1.2.1 - 2020.05.22\n\n* Fix a compatibility problem with relink plugin, reported by flibbles.\n\nV 1.2.0 - 2020.03.26\n\n* Make uni-link plugin compatible with relink-plugin from flibbles\n** see: https://github.com/flibbles/tw5-relink\n\nV 1.1.2 - 2020.03.16\n\n* Fix issue #44 problem with backlink cases sensitivity\n\nV 1.1.1 - 2020.01.19\n\n* Update license link/text\n\nV 1.1.0 - 2019.08.13\n\n* Fixed problem introduced with TW V 5.1.20 link-widget core changes\n\nV 1.0.0 - 2019.02.09\n\n* Add `[[alias|?t]]`, `[[alias|?c]]` and `[[alias|?s]]`, that show the tiddler ''title'', ''caption'' and ''subtitle'' field as the link text\n* Add `[[alias|?my-field]]` shows the content of the field named: `my-filed` as the link text\n* Add a new editor toolbar button, which opens an alias search menue. \n** Default keyboard shortcut is to Ctrl-Space\n\n``Incompatible changes``\n\n* There is a new $:/ControlPanel setting, that defines the default behaviour of the uni-link macro ''globally''. \n* uni-link now only shows the tiddler title, ''or'' the caption ''or'' the subtitle field. \n* If you need different behaviour, you'll need to use the alias mechanism!\n\nV 0.3.4 - 2018.09.09\n\n* Add \"aliasify\" button to tiddler editor toolbar\n* Add ctrl-k to activate \"aliasify\"\n\nV 0.3.3 - 2018.08.06\n\n* fix [[issue 19|https://github.com/wikilabs/plugins/issues/19]] Alias References behaviour\n\nV 0.3.2 - 2018.02.02\n\n* new Undefined Aliases Sidebar tab under More: Aliases\n* `[[?]aliasbacklinks[]sort[title]]` shows a list of tiddlers that contain undefined alias links\n\nV 0.3.1 - 2018.01.31\n\n* fixed: [[CamelCase]] or [[$:/system]] tiddler \"double linking\"\n* [[NaturaL sElEcTiOn|?]] .. is a valid alias now. Same problem as above!\n\nV 0.3.0 - 2018.01.27\n\n* add: styling possibility for missing aliases\n* improve: history and copyright\n\nV 0.2.1 - 2018.01.27\n\n* fix: uni-link creates an unused a-element\n\nV 0.2.0 - 2017.12.15\n\n* added: [[alias|?]] link syntax\n** using aka-makros for tiddler alias handling\n\n* added: Alias backlinks\n** open the tiddler (i)nfo area: References\n\n* added filter operators:\n** is[alias] ... extends the core is operator see: https://tiddlywiki.com/#is Operator\n** all[aliases] ... extends the core all operator see: https://tiddlywiki.com/#all Operator\n\n* added: Right-Sidebar: More tab: \"Aliases\"\n** Sorted by Alias\n** Sorted by Tiddler Title\n\n* added: uni-link $:/ControlPanel setting\n* added: different colors for title, caption, subtitle and alias links\n\nV0.1.0 - 2017.07.25\n\n* fix \"backlink\" and \"missing\" issue\n\nV0.0.1 - 2017.07.23\n\n* initial release\n\nalso see: https://wikilabs.github.io/editions/uni-link/#History\n"
},
"$:/plugins/wikilabs/uni-link/license": {
"title": "$:/plugins/wikilabs/uni-link/license",
"text": "[[Uni-Link Plugin|https://wikilabs.github.io/#uni-link]] (C) Mario Pietsch - 2017-2020\n\nhttps://opensource.org/licenses/BSD-3-Clause\n"
},
"$:/plugins/wikilabs/uni-link/readme": {
"title": "$:/plugins/wikilabs/uni-link/readme",
"subtitle": "\"uni-link\" readme",
"text": "\\define createExampleTiddlers()\n<$button>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=\"tiddler-with-caption\" caption=\"Short Caption\"/>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=\"tiddler-with-subtitle\" subtitle=\"Tiddler With Subtitle Only Defined\"/>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=\"tiddler-with-subtitle-and-caption\" subtitle=\"Tiddler With Subtitle And Caption - using subtitle\" caption=\"capt.ion\"/>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=\"tiddler-with-alias\" aliases=\"alias\" caption=\"alias-caption\" subtitle=\"alias-subtitle\" my-field=\"alias my-field\"/>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=\"test-links\" text={{$:/plugins/wikilabs/uni-link/backlinks-template!!text}}/>\nCreate \"uni-link\" example tiddlers!\n</$button>\n\\end\n\\define deleteExampleTiddlers()\n<$button>\n<$action-deletetiddler $tiddler=\"tiddler-with-caption\"/>\n<$action-deletetiddler $tiddler=\"tiddler-with-subtitle\"/>\n<$action-deletetiddler $tiddler=\"tiddler-with-subtitle-and-caption\"/>\n<$action-deletetiddler $tiddler=\"tiddler-with-alias\"/>\n<$action-deletetiddler $tiddler=\"test-links\"/>\nDelete example tiddlers!\n</$button>\n\\end\n\n!! Important\n\nThis plugin overwrites the core tiddler: $:/core/ui/TiddlerInfo/References\n\n''This uni-link version is compatible with ~TiddlyWiki >= V5.1.22''\n\nIf you need to use it with TW <= V5.1.21 you'll need to use an older version, which is available at: https://wikilabs.github.io/#GettingStarted\n\n!! Video\n\n* https://youtu.be/IelDdM7iXrA\n\n!! Uni-link\n\n* A new wikitext parsing rule, that calls the global [[\"uni-link\" macro|$:/plugins/wikilabs/uni-link/uni-link-macro]], instead of referencing the tiddler name. \n\n* It substitues the following tiddler fields: ''subtitle'', ''caption'' and ''title''. The $:/ControlPanel contains a new tab, that lets you define the behaviour of the uni-link macro. Default is ''title''. So there is no difference between the default setting of the plugin and the default behaviour in unmodified ~TiddlyWiki.\n\n!! Alias\n\n* Alias Link Syntax\n** `[[anything|?]]` ... link to the tiddler that contains the alias: `anything`\n** `[[anything|?t]]` ... link to alias anything, but display the tiddler ''title''\n** `[[anything|?c]]` ... link to alias anything, but display the tiddler ''caption''\n** `[[anything|?s]]` ... link to alias anything, but display the tiddler ''subtitle''\n** `[[anything|?my-field]]` ... link to alias anything, but display the tiddler-field named ''my-field''\n** If a field doesn't exist, it shows the \"alias-text\" as used with `[[anything|?]]`\n** using [[aka-makros|$:/plugins/wikilabs/uni-link/aka-macros]] for tiddler alias handling\n\n* Alias Backlinks\n** open the tiddler (i)nfo area: References\n\n* Filter Operators:\n** `is[alias]` ... extends the core `is` operator see: [[https://tiddlywiki.com/#is Operator]]\n** `all[aliases]` ... extends the core `all` operator see: [ext[https://tiddlywiki.com/#all Operator]]\n** `[aliasbacklinks[]]` ... shows a list of all tiddlers that contain alias links\n** `[[?]aliasbacklinks[]sort[title]]` ... shows a list of tiddlers that contain undefined alias links\n\n* Right-Sidebar: More tab: [[Aliases|$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases]]\n** [[Sorted by Alias|$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byAlias]]\n** [[Sorted by Tiddler Title|$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byTitle]]\n** [[Undefined Aliases|$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/undefined]]\n\n* uni-link $:/ControlPanel setting\n\n* [[uni-fields|$:/plugins/wikilabs/uni-link/uni-fields.js]] widget, that allows us to assign CSS classes based on tiddler fields existence.\n\n!! Installation\n\n* You can drag & drop import this link: $:/plugins/wikilabs/uni-link<br>\n\n!! Link Styling\n\n* Uni-links are styled like this: $:/plugins/wikilabs/uni-link/styles\n\n!! Examples\n\nYou can use the following buttons to create example tiddlers!\n\n<<createExampleTiddlers>> -- <<deleteExampleTiddlers>>\n"
},
"$:/plugins/wikilabs/uni-link/filters/aliasbacklinks.js": {
"title": "$:/plugins/wikilabs/uni-link/filters/aliasbacklinks.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/filters/aliasbacklinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.aliasbacklinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerAliasBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n\n\n\n///*\\\n//title: $:/core/modules/filters/aliases.js\n//type: application/javascript\n//module-type: filteroperator\n//\n//Filter operator for returning all the alias-backlinks from a tiddler\n//\n//\\*/\n//(function(){\n//\n///*jslint node: true, browser: true */\n///*global $tw: false */\n//\"use strict\";\n//\n///*\n//Export our filter function\n//*/\n//exports.aliases = function(source,operator,options) {\n//\tvar results = [],\n//\t\tfield = operator.operand || \"aliases\";\n//\n//\t\tsource(function(tiddler,title) {\n//\t\t\tif(tiddler) {\n//\t\t\t\tvalue = (field === \"title\") ? title : tiddler.getFieldString(field);\n//\t\t\t\tif(!$tw.utils.hop(values,value)) {\n//\t\t\t\t\tvalues[value] = true;\n//\t\t\t\t\tresults.push(title);\n//\t\t\t\t}\n//\t\t\t}\n//\t\t});\n//\n//\tsource(function(tiddler,title) {\n//\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerAliases(title));\n//\t});\n//\treturn results;\n//};\n//\n//})();\n//\n//\n\n///*\\\n//title: $:/core/modules/filters/each.js\n//type: application/javascript\n//module-type: filteroperator\n//\n//Filter operator that selects one tiddler for each unique value of the specified field.\n//With suffix \"list\", selects all tiddlers that are values in a specified list field.\n//\n//\\*/\n//(function(){\n//\n///*jslint node: true, browser: true */\n///*global $tw: false */\n//\"use strict\";\n//\n///*\n//Export our filter function\n//*/\n//exports.each = function(source,operator,options) {\n//\tvar results =[] ,\n//\t\tvalue,values = {},\n//\t\tfield = operator.operand || \"title\";\n//\tif(operator.suffix !== \"list-item\") {\n//\t\tsource(function(tiddler,title) {\n//\t\t\tif(tiddler) {\n//\t\t\t\tvalue = (field === \"title\") ? title : tiddler.getFieldString(field);\n//\t\t\t\tif(!$tw.utils.hop(values,value)) {\n//\t\t\t\t\tvalues[value] = true;\n//\t\t\t\t\tresults.push(title);\n//\t\t\t\t}\n//\t\t\t}\n//\t\t});\n//\t} else {\n//\t\tsource(function(tiddler,title) {\n//\t\t\tif(tiddler) {\n//\t\t\t\t$tw.utils.each(\n//\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n//\t\t\t\t\tfunction(value) {\n//\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n//\t\t\t\t\t\t\tvalues[value] = true;\n//\t\t\t\t\t\t\tresults.push(value);\n//\t\t\t\t\t\t}\n//\t\t\t\t\t}\n//\t\t\t\t);\n//\t\t\t}\n//\t\t});\n//\t}\n//\treturn results;\n//};\n//\n//})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/plugins/wikilabs/uni-link/filters/all/aliases.js": {
"title": "$:/plugins/wikilabs/uni-link/filters/all/aliases.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/filters/all/aliases.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[aliases]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.aliases = function(source,prefix,options) {\n\treturn options.wiki.getAllAliases();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/plugins/wikilabs/uni-link/filters/is/alias.js": {
"title": "$:/plugins/wikilabs/uni-link/filters/is/alias.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/filters/is/alias.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[alias]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.alias = function(source,prefix,options) {\n\tvar results = [],\n\t\taliases = options.wiki.getAllAliases();\n\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = title.toLowerCase();\n\t\t\tif (aliases.indexOf(title) === -1) results.push(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = title.toLowerCase();\n\t\t\tif (aliases.indexOf(title) !== -1) results.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/plugins/wikilabs/uni-link/make-alias-link.js": {
"title": "$:/plugins/wikilabs/uni-link/make-alias-link.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/make-alias-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make an alias-link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-alias-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|?\" + event.paramObject.text + \"]] \";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"|?]] \";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/plugins/wikilabs/uni-link/relinkoperations/text/wikitext/unilink.js": {
"title": "$:/plugins/wikilabs/uni-link/relinkoperations/text/wikitext/unilink.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/relinkoperations/text/wikitext/unilink.js\ntype: application/javascript\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\n\"use strict\";\n\nvar prettylink = require('$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js');\n\nfunction Unilink() {}\n\nUnilink.prototype = prettylink;\n\nmodule.exports = new Unilink();\nmodule.exports.name = \"unilink\";\n\nmodule.exports.relink = function(text_or_tiddler) {\n // Check that this version of Relink supports [object] return.\n if (typeof text_or_tiddler === \"string\") {\n if (this.match[3] == \"?\") {\n this.parser.pos = this.matchRegExp.lastIndex;\n // Ignore this unilink. The link portion has a \"?\", so it's an alias.\n return undefined;\n }\n if (this.match[2] == \"|\" && !this.match[3] && !this.match[4]) {\n this.parser.pos = this.matchRegExp.lastIndex;\n return { name: \"unilink\", impossible: true};\n }\n }\n // The underlying prettylink rule expects everything after the \"|\" to\n // be the link. We'll just swap it in from the 4th position before we\n // apply prettylink relinking.\n this.match[2] = this.match[4];\n return prettylink.relink.apply(this, arguments);\n};\n",
"type": "application/javascript",
"module-type": "relinkwikitextrule"
},
"$:/plugins/wikilabs/uni-link/uni-fields.js": {
"title": "$:/plugins/wikilabs/uni-link/uni-fields.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/uni-fields.js\ntype: application/javascript\nmodule-type: widget\n\nunifields widget, derived from Fields Widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar exclude = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// If inclusion is defined, everything else is auto excluded\n\tvar include = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (include) {\n\t\t\tfor(var i=0; i<include.length; i++) {\n\t\t\t\tif(tiddler.fields[include[i]]) {\n\t\t\t\t\tfields.push(include[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n//\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n//\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports[\"uni-fields\"] = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/wikilabs/uni-link/uni-link.js": {
"title": "$:/plugins/wikilabs/uni-link/uni-link.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/uni-link.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for uni link macros. For example:\n\n```\n[[Introduction]] ... uni-link\n\n[[Link description|?]] ... alias-link\n[[Link description|?t]] ... alias-link - show title\n[[Link description|?c]] ... alias-link - show caption\n[[Link description|?s]] ... alias-link - show subtitle\n[[Link description|?my-field]] ... alias-link - show any field-name as link text\n\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"unilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n//\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n\tthis.matchRegExp = /\\[\\[(.*?)(?:(\\|)(\\?)?(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[4] || text,\n\t\tcheckAlias = this.match[3] === \"?\",\n\t\tuseUniLink = !(this.match[2] === \"|\");\n\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else if(checkAlias) {\n\t\tvar field = \"X\"; // field names are alwayse lowercase!\n\n\t\tif(link === \"c\") {\n\t\t\tfield = \"caption\"\n\t\t} else if(link === \"s\") {\n\t\t\tfield = \"subtitle\"\n\t\t} else if(link === \"t\") {\n\t\t\tfield = \"title\"\n\t\t} else if (text != link) {\n\t\t\tfield = link;\n\t\t}\n\n\t\treturn [{\n\t\t\ttype: \"macrocall\",\n\t\t\tname: \"aka\",\n\t\t\tparams: [\n\t\t\t\t{name: \"target\", value: text},\n\t\t\t\t{name: \"field\", value: field},\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\t} else if((text == link) && useUniLink) {\n\t\t// Since V 1.1.0 new link-backlink detection implemented\n\t\t// Overwrites the core $tw.wiki.getTiddlerLinks() method with own version\n\t\treturn [{\n\t\t\ttype: \"macrocall\",\n\t\t\tname: \"uni-link\",\n\t\t\tparams: [\n\t\t\t\t{name: \"tid\", value: text}\n\t\t\t\t]\n\t\t\t}\n\t\t];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/plugins/wikilabs/uni-link/wiki-ext.js": {
"title": "$:/plugins/wikilabs/uni-link/wiki-ext.js",
"text": "/*\\\ntitle: $:/plugins/wikilabs/uni-link/wiki-ext.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\nexports.getTiddlerAliasLinks = function(title) {\nexports.getTiddlerAliasBacklinks = function(targetTitle) {\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n//var widget = require(\"$:/core/modules/widgets/widget.js\");\n\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t} else if (parseTreeNode.type === \"macrocall\" && parseTreeNode.name === \"uni-link\" && parseTreeNode.params && parseTreeNode.params[0].value) {\n\t\t\t\t\tvar value = parseTreeNode.params[0].value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t} // else if type===\"macrocall\"\n\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinksXXX = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (parseTreeNode.type === \"macrocall\" && parseTreeNode.name === \"uni-link\" && parseTreeNode.params && parseTreeNode.params[0].value) {\n\t\t\t\t\t\tvar value = parseTreeNode.params[0].value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} // else if type===\"macrocall\"\n\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nAlias backlink handling\n*/\nfunction aliasInit(title) {\n\t// Parse the tiddler\n\tvar parser = this.parseTiddler(title);\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"macrocall\" && parseTreeNode.name === \"aka\") {\n\t\t\t\t\tvar value = parseTreeNode.params[0].value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tif(parser) {\n\t\tcheckParseTree(parser.tree);\n\t}\n\t/*\n\tFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\n\tsortField: field to sort by\n\texcludeTag: tag to exclude\n\tincludeSystem: whether to include system tiddlers (defaults to false)\n\t*/\n\tvar backlinks = []\n\tthis.forEachTiddler({includeSystem:true}, function(ttl,tiddler) {\n\t\tif (tiddler.fields[\"aliases\"]) {\n\t\t\t// var fields = tiddler.fields[\"aliases\"];\n\t\t\tvar fields = $tw.utils.parseStringArray(tiddler.fields[\"aliases\"]);\n\t\t\tfields = fields.map(function (el){\n\t\t\t\treturn el.toLowerCase();\n\t\t\t});\n\t\t\tlinks.map( function (el) {\n\t\t\t\tif (fields.indexOf(el.toLowerCase()) != -1) backlinks.push(ttl);\n\t\t\t})\n\t\t} // if tiddler aliases\n\t});\n\n\tif ((backlinks.length === 0) && (links.length > 0)) {\n\t\tbacklinks[0] = \"?\";\n\t}\n\n\treturn backlinks;\n}\n\nexports.getAllAliases = function() {\n\tvar self = this,\n\t\taliases = \"\";\n\t/*\n\tFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\n\tsortField: field to sort by\n\texcludeTag: tag to exclude\n\tincludeSystem: whether to include system tiddlers (defaults to false)\n\t*/\n\tself.forEachTiddler({includeSystem:true}, function(title,tiddler) {\n\t\tif (tiddler.fields[\"aliases\"]) {\n//\t\t\t$tw.utils.pushTop(aliases, this.getCacheForTiddler(title,\"alias\",aliasInit.bind(this, title)));\n\t\t\taliases = aliases + ` ${tiddler.fields.aliases}`;\n\t\t} // if tiddler aliases\n\t});\n\taliases = aliases.toLowerCase();\n\treturn $tw.utils.parseStringArray(aliases);\n};\n\n\n/*\nReturn an array of tiddler titles that are alias linked from the specified tiddler\n*/\nexports.getTiddlerAliasLinks = function(title) {\n\tvar self = this;\n\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"alias\",aliasInit.bind(this, title));\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerAliasBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerAliasLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n})();\n\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/config/ShortcutInfo/aliasify": {
"title": "$:/config/ShortcutInfo/aliasify",
"type": "text/vnd.tiddlywiki",
"text": "{{$:/language/Buttons/Aliasify/Hint}}"
},
"$:/config/ShortcutInfo/alias-link": {
"title": "$:/config/ShortcutInfo/alias-link",
"type": "text/vnd.tiddlywiki",
"text": "{{$:/language/Buttons/Make/Alias/Hint}}"
},
"$:/config/shortcuts/alias-link": {
"title": "$:/config/shortcuts/alias-link",
"created": "20190210193620358",
"modified": "20190210193621514",
"type": "text/vnd.tiddlywiki",
"text": "ctrl-? ctrl-Space"
},
"$:/config/shortcuts/aliasify": {
"title": "$:/config/shortcuts/aliasify",
"type": "text/vnd.tiddlywiki",
"text": "ctrl-K"
},
"$:/core/images/aliasify": {
"title": "$:/core/images/aliasify",
"created": "20180909082646243",
"modified": "20180909091537847",
"tags": "$:/tags/Image",
"type": "text/vnd.tiddlywiki",
"text": "<svg class=\"tc-linkify-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path d=\"m17.031 31.919h-7.983v64.931h7.983v6.92h-17.031v-78.77h17.031zm24.66 0h-7.983v64.931h7.983v6.92h-17.031v-78.77h17.03v6.919zm44.619 64.931h7.982v-64.93h-7.982v-6.92h17.031v78.77h-17.031zm24.659 0h7.983v-64.93h-7.983v-6.92h17.031v78.77h-17.031z\" fill-rule=\"evenodd\"/>\n <path d=\"m45.188 34.74v62.668h7.3507c-0.02998-28.03 0.06401-32 0.04791-62.668zm28.464 2.6834c-2.6133 0-5.1484 0.36297-7.6094 1.0734-2.4357 0.7104-4.8412 1.7835-7.2261 3.2297v7.159c2.461-1.6999 4.8147-2.9934 7.0728-3.8814 2.2834-0.88801 4.4263-1.3321 6.4306-1.3321 2.7401 0 4.9348 0.69381 6.584 2.0892 1.6745 1.3954 2.5205 3.2238 2.5205 5.4819 0 1.2432-0.33704 2.4589-0.9967 3.6514-0.63429 1.1925-1.6685 2.46-3.1147 3.8047l-3.431 3.3926c-2.2834 2.182-3.7748 4.0915-4.4852 5.7406-0.71039 1.6491-1.0638 3.7627-1.0638 6.3252v5.8556h7.2644v-4.6768c0-1.3193 0.03891-2.3631 0.115-3.1243 0.07613-0.76115 0.19278-1.4031 0.34501-1.9359 0.20297-0.63429 0.5434-1.2858 1.0255-1.9455 0.50744-0.68504 1.3568-1.6251 2.5493-2.8176l3.3447-3.268c2.2834-2.182 3.888-4.1399 4.8014-5.8652 0.91338-1.7506 1.3705-3.592 1.3705-5.5202 0-4.0341-1.4231-7.276-4.2647-9.737-2.8162-2.461-6.5637-3.6993-11.232-3.6993zm-5.5489 48.187v9.6604h7.7244v-9.6604z\" fill-rule=\"evenodd\" stroke-width=\"1.1245\"/>\n</svg>\n"
},
"$:/core/ui/EditorToolbar/aliasify": {
"title": "$:/core/ui/EditorToolbar/aliasify",
"caption": "{{$:/language/Buttons/Aliasify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"created": "20180909082308073",
"description": "{{$:/language/Buttons/Aliasify/Hint}}",
"icon": "$:/core/images/aliasify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"modified": "20180909091537847",
"shortcuts": "((aliasify))",
"tags": "$:/tags/EditorToolbar",
"type": "text/vnd.tiddlywiki",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"|?]]\"\n/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"tags": "$:/tags/TiddlerInfo",
"type": "text/vnd.tiddlywiki",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\"></$list>\n<hr>\n\n''Alias backlinks from tiddlers:''\n\n<$list filter=\"[all[current]aliasbacklinks[]sort[title]]\" emptyMessage=\"No alias links to this one\" template=\"$:/core/ui/ListItemTemplate\"></$list>\n"
},
"$:/plugins/wikilabs/uni-link/ui/ControlPanel/settings": {
"title": "$:/plugins/wikilabs/uni-link/ui/ControlPanel/settings",
"caption": "uni-link",
"created": "20171205224905238",
"modified": "20171205230149750",
"tags": "$:/tags/ControlPanel",
"type": "text/vnd.tiddlywiki",
"text": "!! [[Enable Aliases Footer|$:/plugins/wikilabs/uni-link/aka-footer]]\n\n<<<\n<$checkbox tiddler=\"$:/plugins/wikilabs/uni-link/aka-footer\" tag=\"$:/tags/ViewTemplate\"> Enable Aliases Footer</$checkbox>\n<<<\n\n!! [[Uni-link - Default field|$:/config/wikilabs/uni-link/field]]\n\nUse the following field as link text, if available: \n\n<<<\n<$tiddler tiddler=\"$:/config/wikilabs/uni-link/field\">\n<$radio value=\"caption\"> caption</$radio><br>\n<$radio value=\"subtitle\"> subtitle</$radio><br>\n<$radio value=\"\"> title</$radio><br>\n</$tiddler>\n<<<\n\n!! Additional Info\n\nSee: [[$:/plugins/wikilabs/uni-link/readme]]\n"
},
"$:/plugins/wikilabs/uni-link/ui/EditorToolbar/alias-dropdown": {
"title": "$:/plugins/wikilabs/uni-link/ui/EditorToolbar/alias-dropdown",
"created": "20190210145516221",
"modified": "20190210194738308",
"type": "text/vnd.tiddlywiki",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-alias-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width:auto; display:inline-block; background:none; padding:0;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width:auto; display:inline-block; background:none; padding:0;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/plugins/wikilabs/uni-link/ui/EditorToolbar/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
},
"$:/plugins/wikilabs/uni-link/ui/EditorToolbar/alias": {
"title": "$:/plugins/wikilabs/uni-link/ui/EditorToolbar/alias",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"caption": "{{$:/language/Buttons/Make/Alias/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"created": "20190210145538580",
"description": "{{$:/language/Buttons/Make/Alias/Hint}}",
"dropdown": "$:/plugins/wikilabs/uni-link/ui/EditorToolbar/alias-dropdown",
"icon": "$:/core/images/link",
"modified": "20190210194833231",
"shortcuts": "((alias-link))",
"tags": "$:/tags/EditorToolbar",
"type": "text/vnd.tiddlywiki",
"text": ""
},
"$:/plugins/wikilabs/uni-link/ui/EditorToolbar/SearchResults": {
"title": "$:/plugins/wikilabs/uni-link/ui/EditorToolbar/SearchResults",
"created": "20190210164849276",
"modified": "20190210194648558",
"type": "text/vnd.tiddlywiki",
"text": "\\whitespace trim\n<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AliasResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AliasResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AliasResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n</div>"
},
"$:/plugins/wikilabs/uni-link/ui/EditorToolbar/SearchTemplate": {
"title": "$:/plugins/wikilabs/uni-link/ui/EditorToolbar/SearchTemplate",
"caption": "Aliases",
"created": "20190210153457679",
"modified": "20190210194716605",
"tags": "$:/tags/AliasResults",
"type": "text/vnd.tiddlywiki",
"text": "\\define getRealName()\nTiddler -> <<aka-no-links target:\"\"\"$(alias)$\"\"\">>\n\\end\n\\define searchResultList()\n\\whitespace trim\n<$list filter=\"[all[aliases]search:{$(searchTiddler)$}sort[title]]\" variable=alias>\n <div class=\"tc-menu-list-item\">\n <$link to=<<alias>> tooltip=<<getRealName>> ><<alias>></$link>\n </div>\n</$list>\n\\end\n<<searchResultList>>"
},
"$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases": {
"title": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases",
"caption": "Aliases",
"created": "20171214213808142",
"list-before": "$:/core/ui/MoreSideBar/Recent",
"modified": "20171214215245931",
"tags": "$:/tags/MoreSideBar",
"type": "text/vnd.tiddlywiki",
"text": "<div class=\"uni-link-sidebar tc-sidebar-lists\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases]!has[draft.of]]\" \"$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byAlias\" \"$:/state/tab/Aliases\" >>\n</div>"
},
"$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byAlias": {
"title": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byAlias",
"caption": "Alias",
"created": "20171214203739053",
"list-before": "$:/core/ui/MoreSideBar/Recent",
"modified": "20171214213743140",
"tags": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases",
"type": "text/vnd.tiddlywiki",
"text": "\\whitespace trim\n<$list filter=\"[all[aliases]sort[title]]\" variable=alias>\n <div class=\"tc-menu-list-item\">\n <$macrocall $name=\"aka\" target=<<alias>> />\n <div class=\"tc-menu-list-subitem\">\n <$macrocall $name=\"aka-no-links\" target=<<alias>> />\n </div>\n </div>\n</$list>\n"
},
"$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byTitle": {
"title": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/byTitle",
"caption": "Title",
"created": "20171214201333460",
"list-before": "$:/core/ui/MoreSideBar/Recent",
"modified": "20171214213745643",
"tags": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases",
"type": "text/vnd.tiddlywiki",
"text": "\\whitespace trim\n<$list filter=\"[has[aliases]sort[title]]\">\n <div class=\"tc-menu-list-item\">\n <$link to=<<currentTiddler>> ><<currentTiddler>></$link>\n <$list filter=\"[list[!!aliases]]\">\n <div class=\"tc-menu-list-subitem\">\n <$view field=title/>\n </div>\n </$list>\n </div>\n</$list>\n"
},
"$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/undefined": {
"title": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases/undefined",
"caption": "Undefined",
"created": "20180202150804918",
"list-before": "$:/core/ui/MoreSideBar/Recent",
"modified": "20180202151517364",
"tags": "$:/plugins/wikilabs/uni-link/ui/MoreSideBar/Aliases",
"type": "text/vnd.tiddlywiki",
"text": "<$list filter=\"[[?]aliasbacklinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\" emptyMessage=\"No undefined Aliases\"/>\n\n---\n\nYou'll need to reload the page, to update this list!\n"
},
"$:/plugins/wikilabs/uni-link/uni-link-macro-old": {
"title": "$:/plugins/wikilabs/uni-link/uni-link-macro-old",
"tags": "$:/tags/MacroX",
"text": "\\define getClass()\n<$uni-fields template=\"uni-$name$ \" include=\"subtitle caption\" sort=\"no\"/> uni-link\n\\end\n\n\\define returnText()\n\\whitespace trim\n<$set name=\"tv-wikilinks\" value=\"no\">\n<span class=<<class>> >\n <$transclude field=subtitle><$transclude field=caption><$transclude field=title/></$transclude></$transclude>\n</span>\n</$set>\n\\end\n\n\\define uni-link(tid)\n\\whitespace trim\n<$tiddler tiddler=\"\"\"$tid$\"\"\">\n <$wikify name=class text=<<getClass>> >\n <$link to=\"\"\"$tid$\"\"\" tooltip=\"\"\"uni-link to: $tid$\"\"\"><<returnText>></$link>\n </$wikify>\n</$tiddler>\n\\end\n\n<pre><$view field=\"text\"/></pre>"
},
"$:/plugins/wikilabs/uni-link/uni-link-macro": {
"title": "$:/plugins/wikilabs/uni-link/uni-link-macro",
"tags": "$:/tags/Macro",
"text": "\\define getClass()\n<$uni-fields template=\"uni-$name$\" include=$(field-name)$ sort=\"no\"/> uni-link\n\\end\n\n\\define returnText()\n\\whitespace trim\n<$set name=\"tv-wikilinks\" value=\"no\">\n<span class=<<class>> >\n <$transclude field=$(field-name)$ ><$transclude field=title/></$transclude>\n</span>\n</$set>\n\\end\n\n\\define uni-link(tid)\n\\whitespace trim\n<$tiddler tiddler=\"\"\"$tid$\"\"\">\n <$vars field-name={{$:/config/wikilabs/uni-link/field}} >\n <$wikify name=class text=<<getClass>> >\n <$link to=\"\"\"$tid$\"\"\" tooltip=\"\"\"uni-link -> $tid$\"\"\"><<returnText>></$link>\n </$wikify>\n </$vars>\n</$tiddler>\n\\end\n\n<pre><$view field=\"text\"/></pre>"
},
"$:/plugins/wikilabs/uni-link/styles": {
"title": "$:/plugins/wikilabs/uni-link/styles",
"tags": "$:/tags/Stylesheet",
"text": ".uni-link {\n color: navy;\n}\n\n.uni-caption {\n color: #2a699f;\n}\n\n.uni-subtitle {\n color: #0e8446;\n}\n\n.uni-alias {\n color: #7557d8;\n}\n\n.uni-alias-missing {\n color: red;\n}\n\n.uni-link-sidebar .tc-tab-buttons {\n padding-top: 0;\n}\n"
}
}
}
<$list filter="[all[current]has[aliases]]">
<br/>
<hr>
{{||$:/plugins/wikilabs/uni-link/aka-footer/template}}
</$list>
{
"tiddlers": {
"$:/plugins/wimmoermans/history/fhistory.js": {
"created": "20160511174147745",
"creator": "wjam",
"text": "/*\\\ntitle: $:/plugins/wimmoermans/fhistory.js\ntype: application/javascript\nmodule-type: filteroperator\n\na filter to generate ALL tiddler titles from historylist, \nrepairs escaped characters \" \\\n\nassumptions format of historylist \n \"title\":\\s\"(.*)\" where .* is the title of the visited tiddler\n\n@preserve\n\\*/\n\n (function() {\n \"use strict\";\n exports.fullhistory = function(e, t, i) {\n var o = [],\n match=\"\",\n regexp= \"\",\n ttt=\"\",\n text=\"\";\n regexp = new RegExp(\"\\\"title\\\": \\\"(.+)\\\"\", \"ig\");\n text = $tw.wiki.getTiddlerText(\"$:/HistoryList\");\n while (match = regexp.exec(text)) {\n ttt=match[1].replace(/\\\\\\\"/g,\"\\\"\");\n ttt=ttt.replace(/\\\\\\\\/g,\"\\\\\");\n o.push(ttt); /* oldest first */\n }; /*while*/\n return o;\n }; /* export */\n\n } )();",
"type": "application/javascript",
"title": "$:/plugins/wimmoermans/history/fhistory.js",
"tags": "historyplugin",
"module-type": "filteroperator",
"modifier": "wjam",
"modified": "20160513184814825"
},
"$:/plugins/wimmoermans/history/history.js": {
"created": "20160505064231013",
"creator": "Wim Moermans",
"text": "/*\\\ntitle: $:/plugins/wimmoermans/history.js\ntype: application/javascript\nmodule-type: filteroperator\n\na filter to generate tiddler titles from historylist, reverse order, no duplicates (only most recent), no drafts.\n\nassumptions\n \"title\":\\s\"(.*)\" where .* is the title\n \"Draft of '\" is the prefix for tiddler in edit mode\n\n@preserve\n\\*/\n\n (function() {\n \"use strict\";\n exports.history = function(e, t, i) {\n var results = new Array(),\n o = [],\n match=\"\",\n regexp= \"\",\n text=\"\",\nttt=\"\",\n i=0,\n j=0,\n entries=0,\n found=0;\n regexp = new RegExp(\"\\\"title\\\": \\\"(.+)\\\"\", \"ig\");\n text = $tw.wiki.getTiddlerText(\"$:/HistoryList\");\n while (match = regexp.exec(text)) {\n ttt=match[1].replace(/\\\\\\\"/g,\"\\\"\");\n ttt=ttt.replace(/\\\\\\\\/g,\"\\\\\");\n if (ttt.substr(0, 10) !== \"Draft of '\") {\n results.push(ttt); /* oldest first */\n entries = entries + 1;\n }\n }\n i = entries-1;\n while (i >= 0) {\n j = i + 1;\n found = 0;\n while ((j <= entries) && (found === 0)) {\n if (results[i] === results[j]) {\n found = 1;\n }\n j = j + 1;\n }\n if (found === 0) {\n\n if( results[i] !== \"\"){\n o.push(results[i]);\n }\n }\n i = i - 1;\n };\n return o;\n }\n\n } )();",
"type": "application/javascript",
"title": "$:/plugins/wimmoermans/history/history.js",
"tags": "historyplugin",
"module-type": "filteroperator",
"modifier": "wjam",
"modified": "20160513175106215"
},
"$:/plugins/wimmoermans/history/HistoryTab": {
"created": "20160504135142490",
"creator": "Wim Moermans",
"text": "<small>breadcrumbs:</small>\n\n{{{ [history[]] }}}\n\n\n",
"title": "$:/plugins/wimmoermans/history/HistoryTab",
"tags": "$:/tags/SideBar historyplugin",
"modifier": "wjam",
"modified": "20160507201121730",
"caption": "History"
},
"$:/plugins/wimmoermans/history/HistoryTab2": {
"text": "<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n{{{ [history[]search{$:/temp/advancedsearch}limit[26]] }}}\n",
"title": "$:/plugins/wimmoermans/history/HistoryTab2",
"tags": "$:/tags/AdvancedSearch historyplugin",
"modifier": "wjam",
"modified": "20160507171948465",
"creator": "Wim Moermans",
"created": "20160505094007336",
"caption": "History2"
},
"$:/plugins/wimmoermans/history/icon": {
"created": "20160508110003253",
"title": "$:/plugins/wimmoermans/history/icon",
"type": "image/svg+xml",
"text": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- Created with Inkscape (http://www.inkscape.org/) -->\n\n<svg\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n width=\"22\"\n height=\"21\"\n id=\"svg4046\"\n version=\"1.1\"\n inkscape:version=\"0.47 r22583\"\n sodipodi:docname=\"cat backtrack red sign 22x21.svg\">\n <defs\n id=\"defs4048\">\n <linearGradient\n inkscape:collect=\"always\"\n id=\"linearGradient3600\">\n <stop\n style=\"stop-color:#ff0024;stop-opacity:1;\"\n offset=\"0\"\n id=\"stop3602\" />\n <stop\n style=\"stop-color:#ff0024;stop-opacity:0;\"\n offset=\"1\"\n id=\"stop3604\" />\n </linearGradient>\n <inkscape:perspective\n sodipodi:type=\"inkscape:persp3d\"\n inkscape:vp_x=\"0 : 526.18109 : 1\"\n inkscape:vp_y=\"0 : 1000 : 0\"\n inkscape:vp_z=\"744.09448 : 526.18109 : 1\"\n inkscape:persp3d-origin=\"372.04724 : 350.78739 : 1\"\n id=\"perspective4054\" />\n <inkscape:perspective\n id=\"perspective4064\"\n inkscape:persp3d-origin=\"0.5 : 0.33333333 : 1\"\n inkscape:vp_z=\"1 : 0.5 : 1\"\n inkscape:vp_y=\"0 : 1000 : 0\"\n inkscape:vp_x=\"0 : 0.5 : 1\"\n sodipodi:type=\"inkscape:persp3d\" />\n <linearGradient\n inkscape:collect=\"always\"\n xlink:href=\"#linearGradient3600\"\n id=\"linearGradient3606\"\n x1=\"-17.230652\"\n y1=\"4.6165885\"\n x2=\"-3.4143419\"\n y2=\"4.6165885\"\n gradientUnits=\"userSpaceOnUse\" />\n </defs>\n <sodipodi:namedview\n id=\"base\"\n pagecolor=\"#ffffff\"\n bordercolor=\"#666666\"\n borderopacity=\"1.0\"\n inkscape:pageopacity=\"0.0\"\n inkscape:pageshadow=\"2\"\n inkscape:zoom=\"31.678384\"\n inkscape:cx=\"9.633971\"\n inkscape:cy=\"9.3724875\"\n inkscape:document-units=\"px\"\n inkscape:current-layer=\"layer1\"\n showgrid=\"false\"\n inkscape:window-width=\"1690\"\n inkscape:window-height=\"1181\"\n inkscape:window-x=\"-5\"\n inkscape:window-y=\"-5\"\n inkscape:window-maximized=\"1\" />\n <metadata\n id=\"metadata4051\">\n <rdf:RDF>\n <cc:Work\n rdf:about=\"\">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n <dc:title></dc:title>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <g\n inkscape:label=\"Layer 1\"\n inkscape:groupmode=\"layer\"\n id=\"layer1\"\n transform=\"translate(-12.564828,-228.71506)\">\n <path\n sodipodi:type=\"arc\"\n style=\"fill:#fcfcfc;fill-opacity:1;fill-rule:nonzero\"\n id=\"path6042\"\n sodipodi:cx=\"-1.4836615\"\n sodipodi:cy=\"-1.6968651\"\n sodipodi:rx=\"6.976366\"\n sodipodi:ry=\"6.8500967\"\n d=\"m 5.4927045,-1.6968651 a 6.976366,6.8500967 0 1 1 -13.9527321,0 6.976366,6.8500967 0 1 1 13.9527321,0 z\"\n transform=\"matrix(1.2556561,0,0,1.2788018,25.334287,241.26263)\" />\n <path\n id=\"path6044\"\n d=\"m 30.4446,244.31397 c 0.310834,-0.28767 0.606444,-0.65004 0.656841,-0.80533 0.226308,-0.69733 -1.75153,-1.35182 -2.563323,-0.84824 -0.640438,0.39727 -1.154161,1.973 -0.807158,2.47583 0.257232,0.37275 0.420332,0.39322 1.137559,0.14288 0.460496,-0.16076 0.876334,-0.32601 0.924074,-0.36721 0.04729,-0.042 0.341159,-0.31027 0.65198,-0.59797 l 2.7e-5,4e-5 z m 0.597108,-2.74293 c 0.09612,-0.164 0.0099,-0.46244 -0.199577,-0.69068 -0.46117,-0.50252 -1.166755,-0.22586 -1.371622,0.53779 -0.138492,0.51626 -0.124003,0.53781 0.418457,0.62237 0.608375,0.0949 0.889192,-0.0195 1.152742,-0.46948 z m -3.686825,2.07878 c 0.168572,-0.62841 -0.06485,-0.93373 -0.745912,-0.97577 -0.770729,-0.0477 -1.241044,0.64384 -0.836604,1.22992 0.512291,0.74232 1.35136,0.60756 1.582532,-0.25415 l -1.6e-5,0 z m 1.462533,-2.12446 0.185272,-0.64054 -0.625699,-0.0677 c -0.706134,-0.0764 -0.924717,0.0207 -1.305369,0.57977 -0.335314,0.49243 -0.04392,0.93382 0.644496,0.97629 0.707662,0.0437 0.882331,-0.0906 1.101289,-0.84784 l 1.1e-5,-4e-5 z m -7.797022,1.15185 c 0.76937,-0.85185 0.741916,-1.28981 -0.106461,-1.69843 -0.998166,-0.48078 -1.914981,-0.37475 -2.454339,0.28389 -0.516439,0.63069 -0.583894,1.63687 -0.151704,2.26314 0.51397,0.74476 1.572512,0.41361 2.712495,-0.8486 z m -3.48099,-0.42697 c 0.0896,-0.69621 -0.04686,-0.87565 -0.696238,-0.91572 -1.139297,-0.0703 -1.566432,0.84984 -0.702808,1.51406 0.586816,0.4513 1.303444,0.14483 1.399073,-0.59834 l -2.7e-5,0 z m 3.354628,-2.52461 c 0.149115,-0.45951 -0.275478,-0.99883 -0.833864,-1.05921 -0.603977,-0.0653 -0.7421,0.0289 -0.89905,0.61367 -0.166828,0.62185 0.06374,0.9337 0.720441,0.97418 0.628634,0.0389 0.868921,-0.0867 1.012367,-0.52882 l 1.06e-4,1.8e-4 z m -2.408088,0.34458 c 0.112063,-0.75445 -0.0033,-0.89128 -0.721233,-0.85538 -0.828289,0.0413 -1.07332,0.23945 -1.137099,0.9192 -0.05268,0.56122 -0.02343,0.59189 0.653277,0.68515 0.878304,0.12109 1.095906,-0.0141 1.204881,-0.74921 l 1.74e-4,2.4e-4 z m 5.888163,-5.33851 c 0.142599,-0.43933 -0.245444,-0.96317 -1.034761,-1.39674 -0.659415,-0.36226 -1.526134,-0.27635 -1.956444,0.1939 -0.468183,0.51161 -0.852424,1.97658 -0.610417,2.32725 0.48829,0.70756 3.291025,-0.16736 3.601586,-1.12433 l 3.6e-5,-8e-5 z m 0.05327,-2.11052 c 0.567019,-0.52796 -0.337185,-1.89786 -1.117088,-1.69249 -0.480085,0.12648 -0.794832,1.02942 -0.505121,1.44923 0.309844,0.44897 1.249847,0.58994 1.622222,0.24325 l -1.3e-5,1e-5 z m -3.840095,1.12289 c 0.05032,-0.53627 0.0115,-0.59251 -0.526932,-0.76354 -0.319703,-0.10149 -0.703975,-0.10859 -0.853942,-0.0154 -0.412123,0.25566 -0.580704,0.98457 -0.316321,1.36768 0.511143,0.74066 1.608153,0.36021 1.697198,-0.58862 l -3e-6,-7e-5 z m 1.399399,-1.72835 c 0.13752,-0.4755 0.08353,-0.73271 -0.201357,-0.9592 -0.777497,-0.6182 -2.043348,0.0734 -1.830727,1.00011 0.08032,0.34992 1.408324,0.87902 1.720388,0.68544 0.06804,-0.0423 0.208269,-0.3691 0.311631,-0.72643 l 6.5e-5,8e-5 z\"\n style=\"fill:#000000\"\n sodipodi:nodetypes=\"cssssscccsssccsscccccsscccsssccsscccssscccssscccssscccsscccssscccssscc\" />\n </g>\n</svg>\n",
"modified": "20160508110047926"
},
"$:/plugins/wimmoermans/history/readme": {
"created": "20160505113313287",
"creator": "wjam",
"text": "!!history filter\nTom Tumb (Dutch: Klein Duimpje).used breadcrumbs because he didn't want to get lost in the woods. \n\nWhen reading or editing a large ~TiddlyWiki you sometimes get lost and revisit tiddlers over and over. This plugin ''automatically creates a list of all visited tiddlers'', and allows you to answer questions like \"Where did I read that?\", \"Did I update tiddler XXYY already?\", \"Which system tiddlers did I view/edit?\" \"Which tiddlers did I rename/delete?\". \n\n!!functionality \n\n*The ''plugin/filter'' generates the tiddlers which you visited since loading the ~TiddlyWiki. \n*Like ~OpenTab all* tiddlers from the story river are shown in the history. When you ''close a tiddler'' it is removed from the ~OpenTab but is ''still present in the the history''. \n*Tiddler titles which were opened using tiddlers like $:/DefaultTiddlers are not present in the history.\n*Like ~RecentTab, the history list includes the tiddlers you created or modified during this session. When you ''delete or rename'' a tiddler during your session the old tiddler title will be in ''//italics//''. \n\ncompare ''history[] and ''fullhistory[]\n\n| |''history[]''|fullhistory[]|\n| most recent visited tiddlers|''most recent visited appear first''|most recent appear last|\n| Draft titles|''drafts not included ''|all drafts ^^dangerous[1]^^|\n| visited multiple times|''no duplicates, only most recent title''|includes all duplicates|\n| usage|normal use|advanced use only|\n\n!!examples\n\nTo display all visited tiddlers so far use\n\n ``{{{[history[]]}}}`` \n\nYou can sort the list alphabetically, ''search'' the tiddlers and ''limit'' the number of results to 25. e.g.\n\n``{{{[history[]search{$:/temp/search}limit[25]]}}}``\n\nif you want to exclude system tiddlers from the list:\n\n``{{{[history[]!is[system]]}}}``\n\nIf you want modified but possibly not yet saved tiddlers (incl renamed, deleted but excluding Draft. \n\n``{{{[history[]haschanged[]]}}}``\n\n''fullhistory[]'' is only included for //advanced users//. To generate the same list as history[] you would have to write \n``{{{[fullhistory[]!prefix[Draft]reverse[]unique[]]}}}`` ^^[2]^^\n\n!!how to install \n\n''Drag'' the link $:/plugins/wimmoermans/history to your wiki, ''import'' the tiddler and ''save'' your wiki, then ''LOAD'' the newly saved wiki.\nOr ''open'' the history tiddler in this wiki and use the top right icon ''V'', ''export tiddler'', ''JSON file'' to save the tiddler to disk, then in your wiki in the sidebar use ''Tools'', ''import (paperclip)'' to import the JSON file you just saved, ''save'' your wiki, ''LOAD'' the saved wiki.\n\n# history filter <br>[[$:/plugins/wimmoermans/history/history.js]]\n\n#fullhistory filter <br>[[$:/plugins/wimmoermans/history/fhistory.js]]\n\n#History tab in the Sidebar.<br>[[$:/plugins/wimmoermans/history/HistoryTab]]<br><small>(to disable remove the ~$:/tags/SideBar tag)</small>\n# History2 tab for advanced seard tiddler <br>[[$:/plugins/wimmoermans/history/HistoryTab2]]<br><small>(to disable remove the ~$:/tags/AdvancedSearch tag)</small>\n#$:/plugins/wimmoermans/history/readme this tiddler\n# $:/plugins/wimmoermans/history/icon three cat paw prints (by Motovun ?)\n\n!!Google plus forum to discuss the history filters\nhttps://groups.google.com/forum/#!topic/tiddlywiki/u4lN-olqnPc\n\n\n!! ~TiddlyWiki version compatibility [3]\nhistory and fullhistory were tested on version 5.1.12 pre-release, 5.1.11, 5.1.9, 5.0.8-beta. For 5.0.8-beta the tab-example tiddlers require manually adding the field named 'caption' value 'History' and 'History2' to present the Tab captions.\n\n!!notes/warning\n[1] clicking on ''Draft'' titles in the history is ''dangerous'' especially when the tiddler is already open.\n\n[2] ''unique[]'' is a undocumented filter present in ~TiddlyWiki boot.js.\n\n[3] history scan the $:/HistoryList tiddler for \"title\"://single space//\"//tiddler title//\" and displays the //tiddler title// value. It correctly handles double quote and backslahs in tiddler titles.\n",
"title": "$:/plugins/wimmoermans/history/readme",
"tags": "historyplugin sh",
"modifier": "wjam",
"modified": "20160514063831746"
}
}
}
<$button tooltip="Open all" class="tc-btn-invisible">
<$list filter="[tag<currentTiddler>]">
<$action-sendmessage $message="tm-close-tiddler" $param=<<currentTiddler>>/>
</$list>
<svg width="22pt" height="22pt" class="tc-close-all-button tc-image-button" viewBox="0 0 128 128"><g fill-rule="evenodd"><path d="M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z"/></g></svg> Close all below
</$button>
<$button tooltip="Copy Tag to Clipboard" message="tm-copy-to-clipboard" param=<<currentTiddler>> class="tc-btn-invisible">
{{$:/core/images/copy-clipboard}} Copy tag to clipboard
</$button>
<$button tooltip="Open all" class="tc-btn-invisible">
<$list filter="[tag<currentTiddler>]">
<$action-navigate $to=<<currentTiddler>> $scroll="no"/>
</$list>
<svg width="22pt" height="22pt" class="tc-clone-button tc-image-button" viewBox="0 0 128 128"><g fill=blue fill-rule="evenodd"><path d="M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z"/><path d="M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z"/></g></svg> Open all below
</$button>
;It is possible to use the following transculusions
:`{{||$:/PSaT/tagging-here/pill}}` A Tag icon appears if there are any tiddlers tagging the current one
:`{{||$:/PSaT/tagging-here/TagTemplate}}` A Tag icon appears always
:`{{tiddlername||$:/PSaT/tagging-here/pill}}` A Tag icon appears if there are any tiddlers tagging //tiddlername//
:`{{tiddlername||$:/PSaT/tagging-here/TagTemplate}}` A Tag icon appears always for //tiddlername//
;Please note:
: The tiddler $:/PSaT/tagging-here/pill is already tagged $:/tags/ViewToolbar2
:and will be visible below the view toolbar if you have installed $:/PSaT/ViewToolbar2
<svg width="22pt" height="22pt" class="tc-image-new-here-button tc-image-button" viewBox="0 0 128 128"><g fill=green fill-rule="evenodd"><path d="M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z"/><path d="M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z"/></g></svg>
<div class="tc-menu-list-item">
<$link to={{!!title}}>
<$view field="title"/>
</$link>
</div>
<$list filter="[all[current]tagging[]limit[1]]" variable=nul>
{{||$:/PSaT/tagging-here/TagTemplate}}
</$list>
\define tag-pill-inner(tag,icon,colour:"#ffffff",fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)
<$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$""">
<$element-tag$ $element-attributes$ class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>>
$actions$ {{$:/PSaT/tagging-here/images/tag}}
</$element-tag$>
</$vars>
\end
\whitespace trim
<span class="tc-tag-list-item">
<$set name="transclusion" value=<<currentTiddler>>>
<$macrocall $name="tag-pill-body" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">> dragFilter='[all[current]tagging[]]' tag='span'"""/>
<$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down">
<$set name="tv-show-missing-links" value="yes">
<$transclude tiddler="$:/PSaT/tagging-here/ListItemTemplate"/>
</$set>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]" variable="listItem">
<$transclude tiddler=<<listItem>>/>
</$list>
<hr>
<$macrocall $name="list-tagged-draggable" tag=<<currentTiddler>>/>
</$reveal>
</$set>
</span>
;Provides an additional location below the current View Toolbar to add buttons or other content
:Simply tag a tiddler with <<tag $:/tags/ViewToolbar2>>
<div style="font-size: 130%; float: right;">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar2]]" variable=item>
<$transclude tiddler=<<item>>/>
</$list>
</div>
www.youtube.com: richlink/youtube
soundcloud.com: richlink/soundcloud
en.wikipedia.org: richlink/wikipedia
tiddlywiki.com: richlink/docs
twitter.com: richlink/tweet
github.com: richlink/github
jsfiddle.net: richlink/jsfiddle
disq.us: richlink/disqus
pdf: richlink/iframe
txt: richlink/txt
jpg: richlink/img
JPG: richlink/img
png: richlink/img
mp3: richlink/audio
ogg: richlink/audio
wav: richlink/audio
flac: richlink/audio
mp4: richlink/video
ogv: richlink/video
webm: richlink/video
<audio src=<<link>> controls preload="auto" class="richlink-audio"/>
<style>
.richlink-audio {width:100%;}
</style>
\define rl-disqus(id, height:"300")
<iframe src="https://embed.disqus.com/$id$" width="100%" height="$height$" seamless="seamless" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
\end
<$set name=id filter="[<link>split:after[http://disq.us/]]">
<$macrocall $name=rl-disqus id=<<id>> height=<<1>>/>
</$set>
\define btn(label, link) [[$label$|$link$]]
<$set name=label filter="[<link>split:after[#]search[%20]split[%20]] [<link>split:after[#]!search[%20]] ">
<div class="twd">
<$macrocall $name=btn label=<<label>> link=<<link>>/>
</div>
</$set>
<style>
.twd {
display:inline;
margin-right:5px;
border:1px solid lightgray;
border-radius:3px;
padding: 1px 0px 1px 5px;
background:lightyellow;
font-size:80%;
}
.twd a.tc-tiddlylink-external {
color:black;
text-decoration:none;
}
.twd a.tc-tiddlylink-external:hover {
color:blue;
text-decoration:underline;
}
.twd svg {width:1em; vertical-align:bottom; fill:gray; }
</style>
\define btn(label, link) [[$label$|$link$]]
\define issue-button(link)
<$list variable=label filter="[<link>split:after[TiddlyWiki5/]]">
<div class="gh-issue">
<$macrocall $name=btn label=<<label>> link=<<link>> />
{{$:/core/images/github}}
</div>
</$list>
\end
<$macrocall $name="issue-button" link="<<link>>" />
<style>
.gh-issue {
display:inline;
border:1px solid lightgray;
padding: 0px 0px 1px 5px;
border-radius:3px;
margin-right:5px;
}
.gh-issue a.tc-tiddlylink-external {
color:black;
text-decoration:none;
font-size:80%;
}
.gh-issue:hover a.tc-tiddlylink-external {
color:blue;
text-decoration:underline;
}
.gh-issue svg {
width:.9em;
vertical-align:-.65em;
}
</style>
\define rich-iframe(link, height:"250px")
<iframe class=rich-iframe src="$link$" frameborder="0" width=100% allowfullscreen/>
<style>.rich-iframe {height:$height$; }</style>
\end
<$macrocall $name=rich-iframe link=<<link>> height=<<1>> />
<div class="richlink-img">
<$image source=<<link>>/>
<span class="richlink-img-caption">
<<1>>
</span>
</div>
<style>
.richlink-img {
display:inline-block;
background: #fff;
margin: 0 0 27px 30px;
padding: 10px 10px 15px;
text-align: center;
font-family: "Marker Felt",sans-serif;
text-decoration: none;
color: #333;
font-size: 18px;
-webkit-box-shadow: 0 3px 6px rgba(0,0,0,.55);
-moz-box-shadow: 0 3px 6px rgba(0,0,0,.55);
-webkit-transform: rotate(-2deg);
-webkit-transition: -webkit-transform .15s linear;
-moz-transform: rotate(-2deg);
}
.richlink-img-caption {
display:block;
text-align:center;
}
</style>
\define jsfiddle(link, height:"300")
<iframe width="100%" height="$height$" src="$link$embedded/result,html,css,js/" allowfullscreen="allowfullscreen" frameborder="0"></iframe>
\end
<$macrocall $name=jsfiddle link=<<link>> height=<<1>>/>
\define soundcloud(link)
<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=$link$&color=ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false"></iframe>
\end
<$macrocall $name=soundcloud link=<<link>>/>
<$set name="xx" filter="[<link>split:last[/]]">
<$twitter type="tweet" tweetID=<<xx>>/>
</$set>
\define rl-txt(link, height:"300px")
<object data="$link$" type="text/plain" style="width:100%; height:$height$; " scrolling:yes>
<a href="$link$" target="_blank">$link$</a> (missing or not supported)
</object>
\end
<$macrocall $name=rl-txt link=<<link>> height=<<1>> />
<video src=<<link>> controls preload="auto" class="richlink-video">
<p>Your browser doesn't support HTML5 video.<br>Instead, go directly to <<link>></p>
</video>
<style>
.richlink-video {width:100%;}
</style>
<div class="wp">
<a href=<<link>>>{{$:/core/images/globe}} Wikipedia</a>
</div>
<style>
.wp { display:inline;}
.wp a { color:green; text-decoration:none;}
.wp svg { width:1em; vertical-align:bottom; fill:gray; }
</style>
\define rich-youtube(link)
<iframe class=rich-iframe src="$link$" frameborder="0" width=100% allowfullscreen/>
\end
<$set name=link
filter="[<link>search[watch]split:after[=]addprefix[https://www.youtube.com/embed/]]"
emptyValue=<<link>> >
<$macrocall $name=rich-youtube link=<<link>> />
</$set>
<style>.rich-iframe {height:calc(0.56 * {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}}); }
</style>
.scrollable { display:block; overflow:auto; }
An Hyperlinked Text Book for Engineers
$:/themes/tiddlywiki/vanilla/themetweaks
$:/core/ui/ControlPanel/Appearance
$:/core/ui/ControlPanel/Saving/TiddlySpot
$:/core/ui/SideBar/Recent
.tc-edit-texteditor, .tc-tiddler-preview-preview { max-height:80vh; overflow-y:auto; }
<script type="text/x-mathjax-config"> //<![CDATA[
MathJax.Hub.Config({
TeX: {extensions: ["AMSmath.js", "AMSsymbols.js"]},
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
showProcessingMessages : false,
messageStyle : "none" ,
showMathMenu: false ,
tex2jax: { processEnvironments: true,
inlineMath: [ ['$','$'], ["\(","\)"] ],
displayMath: [ ['$$','$$'], ["\[","\]"] ],
preview : "none",
processEscapes: true
},
"HTML-CSS": { linebreaks: { automatic:true, width: "latex-container"} }
});
// ]]>
</script> <script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js? config=TeX-AMS-MML_HTMLorMML">
</script>
<link rel="stylesheet" href="https://raw.github.com/Mathapedia/LaTeX2HTML5/master/css/latex2html5.css">
<script type="text/javascript" src="https://raw.github.com/Mathapedia/LaTeX2HTML5/master/latex2html5.min.js"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Arbutus+Slab" type="text/css">
:Tag used to place items tagged with <<tag $:/tags/ViewToolbar2>> on a second Toolbar below the view toolbar
:see $:/PSaT/ViewToolbar2
{
"tiddlers": {
"$:/info/browser": {
"title": "$:/info/browser",
"text": "yes"
},
"$:/info/node": {
"title": "$:/info/node",
"text": "no"
},
"$:/info/startup-timestamp": {
"title": "$:/info/startup-timestamp",
"text": "20201020114321975"
},
"$:/info/url/full": {
"title": "$:/info/url/full",
"text": "http://stephenteacher.tiddlyspot.com/"
},
"$:/info/url/host": {
"title": "$:/info/url/host",
"text": "stephenteacher.tiddlyspot.com"
},
"$:/info/url/hostname": {
"title": "$:/info/url/hostname",
"text": "stephenteacher.tiddlyspot.com"
},
"$:/info/url/protocol": {
"title": "$:/info/url/protocol",
"text": "http:"
},
"$:/info/url/port": {
"title": "$:/info/url/port",
"text": ""
},
"$:/info/url/pathname": {
"title": "$:/info/url/pathname",
"text": "/"
},
"$:/info/url/search": {
"title": "$:/info/url/search",
"text": ""
},
"$:/info/url/origin": {
"title": "$:/info/url/origin",
"text": "http://stephenteacher.tiddlyspot.com"
},
"$:/info/browser/screen/width": {
"title": "$:/info/browser/screen/width",
"text": "1920"
},
"$:/info/browser/screen/height": {
"title": "$:/info/browser/screen/height",
"text": "1080"
},
"$:/info/browser/language": {
"title": "$:/info/browser/language",
"text": "en-GB"
}
}
}
---
{{!!description}}
Constant: {{!!variablelatex}}
Value: {{!!value}} {{!!unitlatex}}
<$list filter="[title<currentTiddler>listed[vars]tag[Equation]] -[title<currentTiddler>] +[limit[1]]">
<h2>Used in Equations</h2>
</$list>
<$list filter="[title<currentTiddler>listed[vars]tag[Equation]] -[title<currentTiddler>]">
<$link><$transclude field="title"/></$link>
<$transclude field="equation"/>
</$list>
<br>
---
<br>
<center>
{{!!equation}}
</center>
<table>
<tr><th>Variable</th><th>Description</th><th>Unit</th></tr>
<$list filter="[list[!!vars]sort[title]]" >
<tr><th>
<$transclude field="variablelatex"/>
</th><th><$link><$transclude field="title"/></$link></th><th><$transclude field="unitlatex"/></th></tr>
</$list>
</table>
Upper Case: {{!!variablelatexbig}}
Lower Case: {{!!variablelatexsmall}}
{{!!description}}
<$list filter="[title<currentTiddler>listed[greek]tag[Equation]] -[title<currentTiddler>] +[limit[1]]"><br><br>
<h2>Used in Equations</h2><br>
</$list>
<$list filter="[title<currentTiddler>listed[greek]tag[Equation]] -[title<currentTiddler>]">
<$link><$transclude field="title"/></$link>
<$transclude field="equation"/><br><br>
</$list>
---
{{!!description}}
Symbol: {{!!variablelatex}}
<br><br>
Unit: {{!!unitlatex}} {{!!unitname}}
<$list filter="[title<currentTiddler>listed[vars]tag[Equation]] -[title<currentTiddler>] +[limit[1]]"><br><br>
<h2>Used in Equations</h2><br>
</$list>
<$list filter="[title<currentTiddler>listed[vars]tag[Equation]] -[title<currentTiddler>]">
<$link><$transclude field="title"/></$link>
<$transclude field="equation"/><br><br>
</$list>
{
"tiddlers": {
"$:/themes/jd/Mono/TopBarSegments/search": {
"created": "20190130163600391",
"creator": "jd",
"text": "\\define NewTidActions(searcharea)\n<$action-createtiddler $basetitle={{$searcharea$}} $savetitle=\"$:/temp/NewTidTitle\"/>\n<$action-sendmessage $message=\"tm-edit-tiddler\" $param={{$:/temp/NewTidTitle}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTidTitle\"/>\n<$action-setfield $tiddler=\"$searcharea$\" text=\"\"/>\n\\end\n\\define searchbar()\n<$list variable=\"stateCheck\" filter=\"[[$:/config/TopRightBar/$:/themes/jd/Mono/TopBarSegments/search]!text[hide]]\">\n<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$keyboard class=\"tc-search\" tag=\"div\" key=\"enter\" actions=<<NewTidActions \"$:/temp/advancedsearch\">>>\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\" default=\"\" placeholder=\"search, [enter] to create\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button tooltip=\"Create new tiddler with this title\" class=\"tc-btn-invisible\" actions=<<NewTidActions \"$:/temp/advancedsearch\">>>\n{{$:/core/images/new-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$list filter=\"[is[system]prefix[$:/state/searchtab]text[$:/core/ui/AdvancedSearch/Filter]limit[1]]\" variable=\"tabCheck\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]-$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear\"><$transclude/></$list></$list>\n</$reveal>\n</$keyboard>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<style>.tc-block-dropdown.tc-search-drop-down { display: flex; }</style>\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\" \"$:/state/searchtab\">>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n\n</$list>\n\n\\end\n\n<div class=\"mobile-only\">\n\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n\n<<searchbar>>\n\n</$list>\n\n</div>\n\n<div class=\"desktop-only\">\n\n<<searchbar>>\n\n</div>\n",
"title": "$:/themes/jd/Mono/TopBarSegments/search",
"tags": "$:/tags/TopRightBar",
"modifier": "jd",
"modified": "20190203083032524"
},
"$:/themes/jd/Mono/TopBarSegments/buttons": {
"created": "20190201105717721",
"creator": "jd",
"text": "<div class=\"tc-page-controls\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$list filter=\"[enlist{$:/themes/jd/Mono/Database!!list}] +[!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</$set>\n\n</div>\n",
"title": "$:/themes/jd/Mono/TopBarSegments/buttons",
"tags": "$:/tags/TopLeftBar",
"modifier": "jd",
"modified": "20190203014153431"
},
"$:/themes/jd/Mono/Stylesheet": {
"created": "20190130145325995",
"creator": "jd",
"text": "\\define bkrpnt() {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}\n\\define sidebar() {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}}\n\\define fontsize() {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}}\n\n\n\n/* MAIN */\n\n@media (min-width: <<bkrpnt>>) {\n.tc-sidebar-scrollable {\n position: fixed;\n top: {{$:/themes/jd/Mono/Database##header-position-desktop}};\n left: 0;\n bottom: 0;\n right: unset;\n width: <<sidebar>>;\n margin: 0;\n padding: 0 2em 2em 2em;\n}\n.tc-story-river {\n width: calc(100% - <<sidebar>>);\n padding: 0 2em 4em 2em;\n}\n<$list filter=\"[[$:/view]!text[zoomin]]\">\n.tc-story-river { top: 0.25em; }\n</$list>\n<$list filter=\"[[$:/view]text[zoomin]]\">\n.tc-story-river {\n top: calc({{$:/themes/jd/Mono/Database##header-position-desktop}} + 0.25em);\n}\n</$list>\n<$list filter=\"[[$:/state/sidebar]!text[no]]\" variable=\"stateCheck\">\n.tc-story-river {\n left: <<sidebar>>;\n right: 0;\n}\n</$list>\n<$list filter=\"[[$:/state/sidebar]text[no]]\" variable=\"stateCheck\">\n.tc-story-river {\n left: calc(<<sidebar>> / 2);\n right: calc(<<sidebar>> / 2);\n}\n</$list>\n.tc-tiddler-frame {\n margin: 0 0 2em 0;\n width: 100%;\n border-radius: 1px;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.15)\">>\n}\n.tc-storyview-zoomin-tiddler {\n width: calc(100% - 4em) !important;\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.tc-sidebar-scrollable { padding: 0 1em 2em 1em; }\n.tc-sidebar-header { padding: 0; }\n.tc-tiddler-frame { margin-bottom: 2px !important; }\n}\n\n<$list filter=\"[[$:/state/sidebar]!text[no]]\" variable=\"stateCheck\">\n@media (max-width: <<bkrpnt>>) {\n.tc-story-river { display: none; }\n}\n</$list>\n\n<$list filter=\"[[$:/state/sidebar]text[no]]\" variable=\"stateCheck\">\n@media (max-width: <<bkrpnt>>) {\n.tc-sidebar-scrollable { padding-top: 0; padding-bottom: 0; }\n}\n</$list>\n\n<$list filter=\"[[$:/themes/tiddlywiki/vanilla/options/stickytitles]text[yes]]\" variable=\"stateCheck\">\n@media (min-width: <<bkrpnt>>) {\n.tc-tiddler-title {\n top: calc({{$:/themes/jd/Mono/Database##header-position-desktop}} - .25em);\n}\n}\n\n.tc-titlebar {\n line-height: 0;\n}\n\n@media (max-width: <<bkrpnt>>) {\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n.tc-tiddler-edit-frame .tc-tiddler-title {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}};\n}\n.tc-tiddler-view-frame .tc-tiddler-title {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}};\n}\n</$list>\n<$list filter=\"[[$:/state/searchbar]!text[show]]\">\n.tc-tiddler-title {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-no-searchbar}};\n}\n</$list>\n}\n</$list>\n\n.tc-sidebar-scrollable .tc-tab-buttons,\n.tc-topbar .tc-page-controls button,\n.tc-topbar .tc-search button {\n padding: 0;\n}\n\n/* TOPBAR */\n\n<$list filter=\"[[$:/view]!text[zoomin]]\">\n<$list filter=\"[[$:/config/topbar/sticky]!text[no]]\">\n.tc-topbar { position: sticky; }\n@media (max-width: <<bkrpnt>>) { \n.tc-story-river { margin-top: -2.5em; }\n}\n</$list>\n<$list filter=\"[[$:/config/topbar/sticky]text[no]]\">\n.tc-topbar { position: fixed; }\n@media (min-width: <<bkrpnt>>) { \n.tc-topbar { height: 56px; }\n.tc-story-river { margin-top: 56px; }\n}\n<$list filter=\"[[$:/state/searchbar]!text[hide]]\">\n@media (max-width: <<bkrpnt>>) { \n.tc-topbar { height: 94px; }\n.tc-story-river { margin-top: calc(48px + 1em); }\n}\n</$list>\n<$list filter=\"[[$:/state/searchbar]text[hide]]\">\n@media (max-width: <<bkrpnt>>) { \n.tc-topbar { height: 48px; }\n.tc-story-river { margin-top: 1em; }\n}\n</$list>\n</$list>\n</$list>\n\n<$list filter=\"[[$:/view]text[zoomin]]\">\n.tc-topbar { position: fixed; }\n</$list>\n\n.tc-topbar {\n top: 0;\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 0.25em 1em;\n background: <<colour page-background>>;\n z-index: 900;\n}\n\n@media (min-width: <<bkrpnt>>) {\n.tc-topbar {\n padding: 1em 2em;\n max-height: {{$:/themes/jd/Mono/Database##header-position-desktop}};\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.tc-topbar > * {\n width: 100%;\n}\n.tc-topbar .tc-topbar-left {\n padding: 0.75em 0;\n}\n.tc-topbar .tc-topbar-right .tc-search {\n margin-bottom: 0.5em;\n}\n.tc-topbar-right {\n font-size: 1.25em !important;\n}\n.tc-topbar .tc-page-controls {\n justify-content: space-between;\n width: 100%;\n}\n}\n\n.tc-topbar .tc-page-controls,\n.tc-topbar .tc-search {\n display: flex;\n align-items: center;\n}\n\n/* TOPBAR SEARCH */\n\n.tc-topbar .tc-search {\n border: 1px solid <<colour table-border>>;\n background: <<colour page-background>>;\n border-radius: 0;\n padding: 0.25em;\n}\n.tc-topbar .tc-search input {\n border: none;\n background: transparent;\n width: 100%;\n}\n.tc-topbar .tc-search .tc-reveal {\n display: flex;\n}\n\n/* controls */\n\n.tc-topbar .tc-page-controls {\n margin: 0;\n}\n.tc-topbar .tc-page-controls button > span,\n.tc-topbar .tc-page-controls button {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* DROPDOWNS */\n\n.tc-drop-down,\n.tc-block-dropdown {\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.25)\">>\n border-radius: 1px;\n}\n\n@media (max-width: <<bkrpnt>>) {\n\n.tc-search .tc-drop-down,\n.tc-search .tc-block-dropdown,\n.tc-page-controls .tc-drop-down,\n.tc-page-controls .tc-block-dropdown {\n position:fixed;\n left:1em;\n min-width: calc(100% - 2em);\n max-width: calc(100% - 2em);\n max-height: calc(100% - 10em);\n overflow: auto;\n}\n\n.tc-drop-down,\n.tc-block-dropdown {\n max-height: 22em;\n overflow: auto;\n font-size: calc(<<fontsize>>*1.2) !important;\n font-weight: normal;\n line-height: 1.2;\n}\n}\n\n/* TOPBAR SEARCH DROPDOWN */\n\n.tc-block-dropdown.tc-search-drop-down {\n padding: 0.5em;\n}\n\n.tc-block-dropdown.tc-search-drop-down .tc-tab-buttons {\n margin-bottom: -3px;\n padding-top: 0;\n}\n\n.tc-block-dropdown.tc-search-drop-down .tc-search-results { width: 100%; }\n\n.tc-block-dropdown.tc-search-drop-down .tc-search { display: none; }\n\n@media (min-width: <<bkrpnt>>) {\n.tc-block-dropdown.tc-search-drop-down {\n margin: 0 0 0 -24em;\n width: calc(100% + 24em);\n max-height: 42em;\n overflow: auto;\n}\n.tc-topbar-right .tc-search .tc-block-dropdown,\n.tc-topbar-right .tc-search .tc-drop-down {\n position: absolute;\n right: 0;\n}\n.tc-topbar-right .tc-search .tc-drop-down {\n padding: 1em;\n min-width: 10em;\n max-width: 10em;\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.tc-block-dropdown.tc-search-drop-down {\n margin: 0;\n width: 100%;\n overflow: auto;\n}\n}\n\n/* TOPBAR SEARCH DROPDOWN FLEX */\n\n/* .tc-block-dropdown.tc-search-drop-down { display: flex; } on searchbar template under reveal */\n\n.tc-block-dropdown.tc-search-drop-down > p {\n display: flex;\n margin: 0;\n width: 100%;\n}\n\n.tc-block-dropdown.tc-search-drop-down > p >.tc-tab-set {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.tc-block-dropdown.tc-search-drop-down > p >.tc-tab-set > .tc-tab-content {\n display: flex;\n flex: 1 1 auto;\n overflow: auto;\n margin-top: 0;\n}\n\n\n<$reveal type=\"match\" state=\"$:/state/styled-frames\" text=\"yes\" default=\"yes\">\n\n/* VIEW & EDIT FRAME */\n\n.tc-subtitle,\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor,\n.tc-tiddler-view-frame .tc-titlebar h2.tc-title {\n font-family: monospace;\n}\n\n/* VIEW FRAME */\n\n.tc-tiddler-view-frame .tc-title {\n font-weight: bold;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-title {\n font-size: 1.5em;\n margin: 0 -1em;\n padding: 0.25em 1em;\n}\n\n.tc-tiddler-view-frame .tc-titlebar {\n font-size: 1em;\n}\n\n.tc-tiddler-view-frame .tc-titlebar h2.tc-title {\n font-size: 0.75em;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-controls {\n font-size: 1.5em;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-controls,\n.tc-tiddler-view-frame .tc-tiddler-controls > span > button, \n.tc-tiddler-view-frame .tc-tiddler-controls > span > span > button, \n.tc-tiddler-view-frame .tc-tiddler-controls > span > span > span > button {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.tc-tiddler-view-frame .tc-tiddler-title-icon svg {\n max-height: 0.65em;\n}\n\n/* EDIT FRAME */\n\n.tc-tiddler-edit-frame .tc-tiddler-edit-title {\n color: transparent;\n line-height: 0;\n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor {\n font-size: 1.2em; \n}\n\n.tc-tiddler-edit-frame .tc-message-box { margin: 0; }\n\n.tc-tiddler-edit-frame iframe.tc-edit-texteditor { margin-top: 0 !important; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar { background: <<colour tiddler-editor-border>>; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible { background: transparent; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible {\n transition: 200ms fill;\n fill: <<colour foreground>>;\n}\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible:hover {\n background: transparent;\n fill: <<colour primary>>;\n}\n\ninput::placeholder {\n font-size: 0.9em; \n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor, \n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame .tc-edit-field-add-name input.tc-edit-texteditor, \n.tc-tiddler-edit-frame .tc-edit-field-add-value input.tc-edit-texteditor, \n.tc-tiddler-edit-frame input.tc-edit-typeeditor.tc-popup-handle, \n.tc-tiddler-edit-frame input.tc-edit-texteditor.tc-popup-handle {\n border: 1px solid <<colour background>>; \n border-bottom: 1px solid <<colour tiddler-editor-border>>;\n <<box-shadow \"none\">>\n} \n\n.tc-tiddler-edit-frame textarea { \n border: 1px solid <<colour tiddler-editor-border>>;\n <<box-shadow \"none\">>\n} \n\n.tc-tiddler-edit-frame textarea,\n.tc-tiddler-edit-frame iframe.tc-edit-texteditor {\n font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n border: 1px solid <<colour background>>; \n <<box-shadow \"none\">>\n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor {\n font-weight: bold;\n}\n\n.tc-tiddler-edit-frame .tc-type-selector {\n padding-bottom: 10px;\n border-bottom: 1px solid <<colour tiddler-editor-border>>;\n}\n\n</$reveal>\n\n\n/* TIMELINE */\n\n.jd-timeline-wrapper {\n position: relative;\n}\n@media (max-width: <<bkrpnt>>) {\n.jd-timeline-wrapper {\n padding: 0 1em;\n width: 100%;\n}\n}\n .jd-paperview-wrapper {\n display: flex;\n flex-wrap: wrap;\n margin: 0.25em 0;\n}\n.jd-paperview {\n position:relative;\n width: 31%;\n margin: 1%;\n overflow:hidden;\n border: 0.5px solid {{$:/themes/jd/Mono/Database##grid-item-border}};\n border-radius: 1px;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n text-align: left;\n}\n@media (min-width: <<bkrpnt>>) {\n.jd-paperview { height: 26em; }\n}\n@media (max-width: <<bkrpnt>>) {\n.jd-paperview { height: 12em; }\n}\n.jd-paperview,\n.jd-paperview-end {\n background: {{$:/themes/jd/Mono/Database##grid-item-background}} !important;\n}\n.jd-paperview-end {\n position: absolute;\n bottom: 0;\n left:0;\n width: 100%;\n height: 5px;\n}\n.jd-paperview-internal {\n transform: scale(0.7);\n position: absolute;\n width: 110%;\n height: 100%;\n top: -5%;\n left: -5%;\n pointer-events: none;\n}\n.jd-paperview-wrapper .tc-menu-list-subitem { width: 100%; }\n\n@media (min-width: <<bkrpnt>>) {\n.jd-paperview-end {\n box-shadow: 0 0 10px 10px {{$:/themes/jd/Mono/Database##grid-item-background}};\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n.jd-paperview-end {\n box-shadow: 0 0 5px 5px {{$:/themes/jd/Mono/Database##grid-item-background}};\n}\n\n}\n.jd-paperview-date {\n padding: 0.1em 0;\n}\n.jd-paperview-date {\n position: sticky;\n z-index: 1;\n background: {{$:/themes/jd/Mono/Database##header-background}};\n box-shadow: 0 0 2px 2px {{$:/themes/jd/Mono/Database##header-background}};\n}\n\n@media (min-width: <<bkrpnt>>) {\n.jd-paperview-date {\n top: {{$:/themes/jd/Mono/Database##header-position-desktop}};\n}\n}\n\n@media (max-width: <<bkrpnt>>) {\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n.jd-paperview-date {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-yes-searchbar}};\n}\n</$list>\n<$list filter=\"[[$:/state/searchbar]!text[show]]\">\n.jd-paperview-date {\n top: {{$:/themes/jd/Mono/Database##header-position-mobile-no-searchbar}};\n}\n</$list>\n}\n\n\n/* MISC */\n\nhr {\n border: none;\n border-top: 1px solid <<colour table-border>>;\n height: 1px;\n}\n\n.tc-sidebar-scrollable .tc-tab-buttons,\n.tc-tiddler-frame .tc-tab-buttons {\n margin-bottom: -3px;\n}\n\n.tc-story-river .tc-tab-buttons.tc-vertical button {\n border-top: 1px solid <<colour tab-border>>;\n border-left: 1px solid <<colour tab-border>>;\n border-bottom: 1px solid <<colour tab-border>>;\n border-right: 1px solid transparent;\n}\n\n.tc-story-river .tc-tab-buttons.tc-vertical .tc-tab-selected {\n border-top: 1px solid <<colour tab-border-selected>>;\n border-left: 1px solid <<colour tab-border-selected>>;\n border-bottom: 1px solid <<colour tab-border-selected>>;\n border-right: 1px solid transparent;\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n border-top: none;\n height: 1px;\n background-image: linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -o-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -moz-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -webkit-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n background-image: -ms-linear-gradient(left, <<colour sidebar-tab-divider>> 20%, transparent 100%);\n}\n\n/* SIDEBAR MORE TAB BUTTONS */\n\n.tc-more-sidebar .tc-tab-buttons.tc-vertical {\n margin-top: 1em;\n}\n\n.tc-more-sidebar .tc-tab-buttons.tc-vertical > button {\n margin-bottom: -1px;\n border-top: 1px solid <<colour sidebar-tab-border>>;\n border-right: 1px solid transparent;\n border-bottom: 1px solid <<colour sidebar-tab-border>>;\n border-left: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-more-sidebar .tc-tab-buttons.tc-vertical > button.tc-tab-selected {\n border-top: 1px solid <<colour sidebar-tab-border-selected>>;\n border-right: 1px solid transparent;\n border-bottom: 1px solid <<colour sidebar-tab-border-selected>>;\n border-left: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-more-sidebar .tc-tab-content.tc-vertical {\n margin-left: 1px;\n}\n\nul, li {\n white-space: nowrap; \n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tc-menu-list-item {\n padding-left: 5px;\n text-indent: -5px;\n white-space: normal !important;\n word-wrap: break-word !important;\n -webkit-word-break: break-all !important;\n -moz-word-break: break-all !important;\n -ms-word-break: break-all !important;\n -o-word-break: break-all !important;\n word-break: break-all !important;\n}\n\nbutton, input { outline: none; }\n\nbutton, input:not([type]) {\n border-radius: 2px;\n}\n\ninput:not([type]) {\n border: 1px solid <<colour tiddler-editor-border>>;\n padding: 2px 4px;\n margin: 2px;\n}\n\nbutton {\n border: 1px solid <<colour button-border>>;\n padding: 6px 16px;\n margin: 2px;\n}\n\n@media (max-width: <<bkrpnt>>) {\n.desktop-only {\n display: none !important; pointer-events: none;\n}\n}\n\n@media (min-width: <<bkrpnt>>) {\n.mobile-only {\n display: none !important; pointer-events: none;\n}\n}\n\n.tc-topbar.tc-topbar-left,\n.tc-topbar.tc-topbar-right {\n display: none; pointer-events: none;\n}\n\n.tc-dropzone > p,\n.tc-topbar p,\n.tc-sidebar-lists-template > p,\n.tc-topbar .tc-sidebar-lists > p { margin: 0; }\n\n@media (min-width: <<bkrpnt>>) {\ndiv::-webkit-scrollbar { background: rgba(0, 0, 0, 0.12); }\ndiv::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.12); }\n}\n\n.tc-notification {\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.45)\">>\n border-radius: 1px;\n}",
"title": "$:/themes/jd/Mono/Stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "jd",
"modified": "20190205153021408"
},
"$:/themes/jd/Mono/Palette/SpartanNight": {
"created": "20180624055725870",
"creator": "jd",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherent\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: white\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: <<colour sidebar-tab-border-selected>>\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: <<colour tab-border-selected>>\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)",
"type": "application/x-tiddler-dictionary",
"title": "$:/themes/jd/Mono/Palette/SpartanNight",
"tags": "$:/tags/Palette",
"revision": "16-bb276562b7c93c8ace69907892d92eed",
"name": "Spartan Night",
"modifier": "jd",
"modified": "20190202100758570",
"description": "Spartan night colors",
"caption": "Spartan Night"
},
"$:/themes/jd/Mono/Palette/SpartanDay": {
"created": "20180624055639361",
"creator": "jd",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: rgba(0, 0, 0, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: <<colour sidebar-tab-border-selected>>\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: <<colour tab-border-selected>>\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)",
"type": "application/x-tiddler-dictionary",
"title": "$:/themes/jd/Mono/Palette/SpartanDay",
"tags": "$:/tags/Palette",
"revision": "16-1f6eabb9816382603cfa899327890536",
"name": "Spartan Day",
"modifier": "jd",
"modified": "20190202100822086",
"description": "Spartan day colors",
"caption": "Spartan Day"
},
"$:/themes/jd/Mono/PageTemplate/topbar": {
"text": "<div class=\"tc-topbar tc-adjust-top-of-scroll\">\n\n<div class=\"tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</div>\n\n<div class=\"tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</div>\n\n</div>\n",
"title": "$:/themes/jd/Mono/PageTemplate/topbar",
"tags": "$:/tags/PageTemplate",
"modifier": "jd",
"modified": "20190201113453598",
"list-before": "",
"creator": "jd",
"created": "20190130160503644"
},
"$:/themes/jd/Mono/Config": {
"created": "20190202083644385",
"creator": "jd",
"text": "<$checkbox tiddler=\"$:/config/TopRightBar/$:/themes/jd/Mono/TopBarSegments/search\" field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\" actions=\"\"\"\n<$action-setfield $tiddler=\"$:/state/searchbar\" text=\"show\"/>\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"$:/themes/jd/Mono/Buttons/searchbar\"/>\n<$action-setfield $tiddler=\"$:/themes/jd/Mono/Database\" $index=\"header-position-desktop\" $value=\"calc(56px + .25em)\"/>\n<$action-setfield $tiddler=\"$:/themes/jd/Mono/Database\" $index=\"header-position-mobile-yes-searchbar\" $value=\"calc(4px + 3em + 6px + {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}} + .25em)\"/>\n\"\"\" uncheckactions=\"\"\"\n<$action-setfield $tiddler=\"$:/config/TopLeftBar/Button/$:/themes/jd/Mono/Buttons/searchbar\" text=\"hide\"/>\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"-$:/themes/jd/Mono/Buttons/searchbar\"/>\n<$action-setfield $tiddler=\"$:/themes/jd/Mono/Database\" $index=\"header-position-mobile-yes-searchbar\" $value=\"calc(2px + 2.25em)\"/>\n\"\"\"> Use searchbar and button (the toggle button only shows up on mobile)</$checkbox>\n\n<$checkbox tiddler=\"$:/themes/jd/Mono/Database\" index=\"button-fontscroller\" checked=\"show\" unchecked=\"hide\" actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"$:/themes/jd/Mono/Buttons/font-scroller\"/>\"\"\" uncheckactions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"-$:/themes/jd/Mono/Buttons/font-scroller\"/>\n\"\"\"> Use font scroller button </$checkbox>\n\n<$checkbox tiddler=\"$:/SplashScreen\" field=\"text\" checked={{$:/themes/jd/Mono/SplashScreen!!text}} actions=\"\"\"\n<$action-setfield $tiddler=\"$:/SplashScreen\" tags=\"$:/tags/RawMarkupWikified/TopBody\"/>\"\"\"> Use splashscreen</$checkbox>\n\n<$checkbox tiddler=\"$:/config/EmptyStoryMessage\" field=\"text\" checked=\"\"\"{{$:/themes/jd/Mono/EmptyStoryMessage}}\"\"\"> Use timeline grid when story river is empty (grid preview of 10 recent dates for modified tiddlers)</$checkbox>\n\n<$checkbox tiddler=\"$:/state/styled-frames\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> Style tiddler frames</$checkbox>\n\n<$checkbox tiddler=\"$:/config/topbar/sticky\" field=\"text\" checked=\"no\" unchecked=\"yes\" default=\"yes\"> Tick this checkbox if using ''Internet Explorer'', or if the topbar position is not working properly (position: sticky; incompatibility)</$checkbox>\n\nKeep updated on `MonoTheme` here: ''[[http://j.d.mono.tiddlyspot.com/]]''\n\n<<tabs \"$:/themes/jd/Mono/Config/SidebarSegments $:/themes/jd/Mono/Config/TopbarButtons $:/themes/jd/Mono/Config/PaletteSwitcher $:/themes/jd/Mono/Config/VanillaTweaks $:/themes/jd/Mono/Config/DatabaseValues\" \"$:/themes/jd/Mono/Config/TopbarButtons\" class:\"tc-vertical\">>",
"title": "$:/themes/jd/Mono/Config",
"tags": "$:/tags/ControlPanel/Appearance",
"modifier": "jd",
"modified": "20190205153009029",
"caption": "Mono Tweaks"
},
"$:/themes/jd/Mono/Buttons/switch-palette": {
"created": "20180718101345840",
"creator": "jd",
"text": "<$list filter=\"[[$:/palette]!text{$:/themes/jd/Mono/Database##night-palette}]\">\n<$button set=\"$:/palette\" setTo={{$:/themes/jd/Mono/Database##night-palette}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{ $:/core/images/tip}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text=\"night\"/>\n</span>\n</$list>\n</$button>\n</$list>\n<$list filter=\"[[$:/palette]text{$:/themes/jd/Mono/Database##night-palette}]\">\n<$button set=\"$:/palette\" setTo={{$:/themes/jd/Mono/Database##day-palette}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{ $:/core/images/tip}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text=\"day\"/>\n</span>\n</$list>\n</$button>\n</$list>\n",
"type": "text/vnd.tiddlywiki",
"title": "$:/themes/jd/Mono/Buttons/switch-palette",
"tags": "$:/tags/PageControls",
"revision": "6-0bdaa9022f44b4d8d5b1a71f193803af",
"modifier": "jd",
"modified": "20190202134636973",
"description": "Toggle palette",
"caption": "{{$:/core/images/tip}} palette"
},
"$:/themes/jd/Mono/Buttons/searchbar": {
"created": "20190130164005014",
"creator": "jd",
"text": "<$button class={{{ [<tv-config-toolbar-class>addsuffix[ mobile-only]] }}} tooltip=\"searchbar\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n<$list filter=\"[[$:/state/searchbar]!text[show]]\">\n<$action-setfield $tiddler=\"$:/state/searchbar\" text=\"show\"/>\n</$list>\n<$list filter=\"[[$:/state/searchbar]text[show]]\">\n<$action-setfield $tiddler=\"$:/state/searchbar\" text=\"hide\"/>\n</$list>\n</$button>",
"title": "$:/themes/jd/Mono/Buttons/searchbar",
"tags": "$:/tags/PageControls",
"modifier": "jd",
"modified": "20190202153859733",
"description": "Mono searchbar toggler",
"caption": "{{$:/core/images/advanced-search-button}} mono searchbar"
},
"$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/page-controls": {
"created": "20190201102601467",
"creator": "jd",
"text": "hide",
"title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/page-controls",
"modifier": "jd",
"modified": "20190202133339913"
},
"$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/search": {
"created": "20190201102714829",
"creator": "jd",
"text": "hide",
"title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/search",
"modifier": "jd",
"modified": "20190202133211221"
},
"$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-subtitle": {
"text": "hide",
"title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-subtitle",
"modifier": "jd",
"modified": "20190201102704659",
"creator": "jd",
"created": "20190201102652423"
},
"$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-title": {
"text": "hide",
"title": "$:/config/SideBarSegments/Visibility/$:/core/ui/SideBarSegments/site-title",
"modifier": "jd",
"modified": "20190202160543142",
"creator": "jd",
"created": "20190201102745176"
},
"$:/core/ui/TopBar/menu": {
"created": "20190201145933072",
"creator": "jd",
"text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n",
"title": "$:/core/ui/TopBar/menu",
"modifier": "jd",
"modified": "20190203083157565",
"caption": "{{$:/core/images/chevron-right}} sidebar",
"description": "Toggle sidebar"
},
"$:/themes/jd/Mono/EmptyStoryMessage": {
"created": "20190202111910887",
"creator": "jd",
"text": "\\whitespace trim\n<div class=\"jd-timeline-wrapper\">\n<$list filter=\"[!is[system]!has[draft.of]!sort[modified]has[modified]limit[10]eachday[modified]]\">\n<div class=\"jd-paperview-date\">\n<$view field=\"modified\" format=\"date\" template=\"DDth MMM YYYY\"/>\n</div>\n<div class=\"jd-paperview-wrapper\">\n<$list filter=\"[sameday:modified{!!modified}!is[system]!has[draft.of]!sort[modified]]\">\n<$button to={{!!title}} class=\"jd-paperview\">\n<div class=\"jd-paperview-internal\">\n<b><$view field=\"title\"/></b>\n<$transclude mode=\"block\"/>\n</div>\n<div class=\"jd-paperview-end\">\n</div>\n</$button>\n</$list>\n</div>\n</$list>\n</div>\n",
"title": "$:/themes/jd/Mono/EmptyStoryMessage",
"tags": "",
"modifier": "jd",
"modified": "20190203153408764"
},
"$:/themes/jd/Mono/Config/TopbarButtons": {
"created": "20190202123433451",
"creator": "jd",
"text": "\\define config-title()\n$:/config/TopLeftBar/Button/$(currentTiddler)$\n\\end\n\n!!! ''Remove from ~TopLeftBar''\n//Click to remove from ~TopLeftBar, rearrange by dragging//\n\n<$list filter=\"[enlist{$:/themes/jd/Mono/Database!!list}]\">\n<$droppable actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\"\"\">\n<div class=\"tc-droppable-placeholder\"> </div>\n<$draggable tiddler=<<currentTiddler>>>\n<$button class=\"tc-btn-invisible\" actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $subfilter=\"-[<currentTiddler>]\"/>\n\"\"\">\n<span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span> \n</$button>\n</$draggable>\n</$droppable>\n</$list>\n\n!!! ''Add to ~TopLeftBar''\n//Click to add to ~TopLeftBar//\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]] $:/core/ui/TopBar/menu $:/themes/jd/Mono/Buttons/searchbar -[enlist{$:/themes/jd/Mono/Database!!list}]\">\n<$button class=\"tc-btn-invisible\" style=\"width: 100%; text-align: left;\" actions=\"\"\"\n<$action-listops $tiddler=\"$:/themes/jd/Mono/Database\" $subfilter=<<currentTiddler>>/>\n\"\"\">\n<span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span> \n</$button>\n</$list>\n",
"title": "$:/themes/jd/Mono/Config/TopbarButtons",
"tags": "",
"modifier": "jd",
"modified": "20190203014157409",
"caption": "Topbar buttons"
},
"$:/themes/jd/Mono/Database": {
"created": "20190202114537700",
"creator": "jd",
"text": "{\n \"grid-sticky-header-background\": \"<<colour page-background>>\",\n \"grid-item-background\": \"<<colour background>>\",\n \"grid-item-border\": \"<<colour tiddler-border>>\",\n \"header-background\": \"<<colour page-background>>\",\n \"header-position-mobile-no-searchbar\": \"calc(2px + 2.25em)\",\n \"header-position-mobile-yes-searchbar\": \"calc(4px + 3em + 6px + {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}} + .25em)\",\n \"header-position-desktop\": \"calc(56px + .25em)\",\n \"day-palette\": \"$:/themes/jd/Mono/Palette/SpartanDay\",\n \"night-palette\": \"$:/themes/jd/Mono/Palette/SpartanNight\",\n \"button-fontscroller\": \"hide\"\n}",
"type": "application/json",
"title": "$:/themes/jd/Mono/Database",
"tags": "",
"modifier": "jd",
"modified": "20190205153057281",
"list": "$:/core/ui/Buttons/new-tiddler $:/core/ui/Buttons/control-panel $:/core/ui/Buttons/save-wiki $:/themes/jd/Mono/Buttons/switch-palette $:/core/ui/TopBar/menu $:/themes/jd/Mono/Buttons/searchbar"
},
"$:/themes/jd/Mono/Config/SidebarSegments": {
"created": "20190202123345136",
"creator": "jd",
"text": "\\define config-title()\n$:/config/SideBarSegments/Visibility/$(currentTiddler)$\n\\end\n\n!!! ''Sidebar segments''\n//Uncheck to remove from ~SideBar, rearrange by dragging//\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]]\">\n<$droppable actions=\"\"\"\n<$action-listops $tiddler=\"$:/tags/SideBarSegment\" $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\"\"\">\n<div class=\"tc-droppable-placeholder\"> </div>\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"> <$text text=<<currentTiddler>>/>\n</$checkbox><br>\n</$draggable>\n</$droppable>\n</$list>",
"title": "$:/themes/jd/Mono/Config/SidebarSegments",
"modifier": "jd",
"modified": "20190202135551740",
"tags": "",
"caption": "Sidebar segments"
},
"$:/themes/jd/Mono/Config/DatabaseValues": {
"created": "20190202123554778",
"creator": "jd",
"text": "!!! ''Advanced''\n\n<$list filter=\"[[$:/themes/jd/Mono/Database]indexes[]search[position]]\" variable=\"index\">\n\n<<index>>:\n\n<$edit-text tiddler=\"$:/themes/jd/Mono/Database\" index=<<index>> tag=\"input\"/>\n\n</$list>",
"title": "$:/themes/jd/Mono/Config/DatabaseValues",
"modifier": "jd",
"modified": "20190203084020856",
"tags": "",
"caption": "Advanced"
},
"$:/themes/jd/Mono/Config/PaletteSwitcher": {
"created": "20190202135356197",
"creator": "jd",
"text": "!!! ''Palette switcher''\n\n<$list filter=\"day-palette night-palette\" variable=\"index\" >\n\n<<index>>:\n\n<$edit-text tiddler=\"$:/themes/jd/Mono/Database\" index=<<index>> tag=\"input\"/>\n\n</$list>",
"title": "$:/themes/jd/Mono/Config/PaletteSwitcher",
"modifier": "jd",
"modified": "20190202135417323",
"tags": "",
"caption": "Palette switcher"
},
"$:/themes/jd/Mono/SplashScreen": {
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\rules only filteredtranscludeinline transcludeinline macrocallinline\n<div class=\"tc-remove-when-wiki-loaded\">\n<style scoped>\n\n.tc-splash-text {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n font-size: 16px;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n\tmargin: 20px auto 0;\n\twidth: 200px;\n\ttext-align: center;\n\tcolor: <<colour foreground>>;\n\tfill: <<colour foreground>>;\n}\n\nhtml body.tc-body {\n background: <<colour page-background>>;\n}\n.line-wrapper {\n width: 100%;\n height: 80vh;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.line {\n width: 50px;\n height: 1px;\n background: <<colour muted-foreground>>;\n -webkit-animation: line 2s infinite; \n -moz-animation: line 2s infinite; \n -o-animation: line 2s infinite; \n animation: line 2s infinite; \n}\n@-webkit-keyframes line {\n 0% { width: 10px; }\n 50% { width: 200px; }\n 100% { width: 10px; }\n}\n@keyframes line {\n 0% { width: 10px; }\n 50% { width: 200px; }\n 100% { width: 10px; }\n}\n.linetwo {\n width: 50px;\n height: 1px;\n background: <<colour muted-foreground>>;\n -webkit-animation: linetwo 2s infinite; \n -moz-animation: linetwo 2s infinite; \n -o-animation: linetwo 2s infinite; \n animation: linetwo 2s infinite; \n margin: 5px 0;\n}\n@-webkit-keyframes linetwo {\n 0% { width: 5px; }\n 70% { width: 180px; }\n 100% { width: 5px; }\n}\n@keyframes linetwo {\n 0% { width: 5px; }\n 70% { width: 180px; }\n 100% { width: 5px; }\n}\n.linethree {\n width: 50px;\n height: 1px;\n background: <<colour muted-foreground>>;\n -webkit-animation: linethree 2s infinite; \n -moz-animation: linethree 2s infinite; \n -o-animation: linethree 2s infinite; \n animation: linethree 2s infinite; \n margin: linethree 0;\n}\n@-webkit-keyframes linethree {\n 0% { width: 0; }\n 80% { width: 160px; }\n 100% { width: 0; }\n}\n@keyframes linethree {\n 0% { width: 0; }\n 80% { width: 160px; }\n 100% { width: 0; }\n}\n</style>\n\n<div class=\"line-wrapper\">\n<div class=\"tc-splash-text\">{{$:/SiteTitle}}</div>\n<div class=\"line\"></div>\n<div class=\"linetwo\"></div>\n<div class=\"linethree\"></div>\n</div>\n\n</div>",
"type": "text/vnd.tiddlywiki",
"title": "$:/themes/jd/Mono/SplashScreen",
"modifier": "jd",
"modified": "20190202152051851",
"creator": "jd",
"created": "20180927082601825"
},
"$:/themes/jd/Mono/Buttons/font-scroller": {
"created": "20180930054903341",
"creator": "jd",
"text": "<$wikify name=\"fontUp\" text=\"\"\"\n<$list filter=\"[{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}previous[$:/themes/jd/Mono/Buttons/font-scroller]]\" emptyMessage=\"40px\"/>\n\"\"\">\n<$wikify name=\"fontDown\" text=\"\"\"\n<$list filter=\"[{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}next[$:/themes/jd/Mono/Buttons/font-scroller]]\" emptyMessage=\"10px\"/>\n\"\"\">\n<$button class=\"tc-btn-invisible\" tooltip=\"Decrease font size\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" text=<<fontDown>>/>\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" text=\"1.25\"/>\n\n\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/chevron-down}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=\"font down\"/></span>\n</$list>\n\n</$button>\n<$button class=\"tc-btn-invisible\" tooltip=\"Increase font size\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" text=<<fontUp>>/>\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" text=\"1.25\"/>\n\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/chevron-up}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text=\"font up\"/></span>\n</$list>\n\n</$button>\n</$wikify>\n</$wikify>",
"title": "$:/themes/jd/Mono/Buttons/font-scroller",
"tags": "$:/tags/PageControls",
"modifier": "jd",
"modified": "20190203035107351",
"list": "40px 34px 30px 24px 20px 18px 17px 15px 14px 13px 12px 10px",
"caption": "{{$:/core/images/chevron-up}} font scroller",
"description": "Font scroller"
},
"$:/themes/jd/Mono/Config/VanillaTweaks": {
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<style> .vanillatweaks table { width: 100%; } .vanillatweaks td:first-child { width: 60%; } .vanillatweaks td input { width: 100%; }</style>\n\n<div class=\"vanillatweaks\">\n\nInherited tweaks from ''Vanilla'' theme.\n\n!!! ''<<lingo Options>>''\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n\n!!! ''<<lingo Settings>>''\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/><<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> |\n\n!!! ''<<lingo Metrics>>''\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n\n</div>",
"title": "$:/themes/jd/Mono/Config/VanillaTweaks",
"modifier": "jd",
"modified": "20190203084506755",
"creator": "jd",
"created": "20190203083516565",
"caption": "Vanilla tweaks"
}
}
}
/* FOR STORIES PLUGIN */
/* https://giffmex.org/stroll/empty.html#%24%3A%2Fplugins%2Fsq%2FStories */
/* this stylesheet will apply with the existence of the plugin */
<$list filter="[[$:/plugins/sq/Stories]is[tiddler]]" variable="chk">
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-story-river {
float: unset !important;
transition: width 250ms, padding 250ms, left 250ms, right 250ms;
<$reveal state="$:/config/_sq/Stories/story2" type="nomatch" text="no" default="no">
<$list filter="[list[$:/_sq/Stories/Story2StoryList]limit[1]]">
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes">
left: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} !important;
width: calc(50% - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} / 2) !important;
padding-left: 1em !important;
padding-right: .5em !important;
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no" default="yes">
left: 0 !important;
width: 50% !important;
padding-left: 3em !important;
padding-right: .5em !important;
</$reveal>
</$list>
</$reveal>
}
<$reveal state="$:/config/_sq/Stories/story2" type="nomatch" text="no" default="no">
.tc-story-river.tc-storytwo-river {
height: 0 !important;
width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
.sq-story-rivertwo-scrollable {
<$list filter="[[$:/view]!text[zoomin]]">
top: 0.25em;
</$list>
<$list filter="[[$:/view]text[zoomin]]">
top: 0.5em;
</$list>
}
<$list filter="[[$:/StoryList]field:list[]]">
.tc-story-river {
height: 0 !important;
width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
}
</$list>
.sq-story-rivertwo-scrollable {
padding-top: 0;
margin-top: 56px;
transition: width 250ms, padding 250ms, left 250ms, right 250ms;
<$list filter="[[$:/StoryList]field:list[]]">
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes">
width: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}}) !important;
left: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} !important;
right: 0 !important;
padding-left: 2em;
padding-right: 2em;
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no" default="yes">
width: 100%;
left: 0 !important;
right: 0 !important;
padding-left: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} / 2);
padding-right: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} / 2);
</$reveal>
</$list>
<$list filter="[list[$:/StoryList]limit[1]]">
left: unset !important;
right: 0 !important;
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes">
width: calc(50% - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} / 2) !important;
padding-right: 1em;
padding-left: 0.5em;
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no" default="yes">
width: 50% !important;
padding-right: 3em;
padding-left: 0.5em;
</$reveal>
</$list>
}
</$reveal>
.tc-tiddler-frame {
width: 100% !important;
}
}
</$list>
{
"tiddlers": {
"$:/themes/jd/Whitespace/template/sidebar": {
"text": "\\define wsconfig(name) $:/config/Whitespace/$name$\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\\define config-title-sidebar()\n$:/config/SideBar/Visibility/$(currentTiddler)$\n\\end\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/tags/SideBar\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=\"$:/tags/SideBar\"/>\n</$fieldmangler>\n\\end\n\\define drop-actions-PageControls-buttons()\n<$action-listops $tiddler=\"$:/tags/PageControls\" $subfilter=\"+[insertbefore:listItem<actionTiddler>]\"/>\n\\end\n\\define sidebar-title()\n<$list filter=\"[all[shadows+tiddlers]!has[draft.of]is[current]has[caption]]\">{{!!caption}}</$list>\n<$list filter=\"[all[shadows+tiddlers]!has[draft.of]is[current]!has[caption]]\">{{!!title}}</$list>\n\\end\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$action-setfield $tiddler=<<wsconfig search>> text=\"no\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\\define NewTidActions()\n<$action-setfield $tiddler=<<wsconfig search>> text=\"no\"/>\n<$action-createtiddler $basetitle={{$:/temp/search}} $savetitle=\"$:/temp/NewTidTitle\"/>\n<$action-sendmessage $message=\"tm-edit-tiddler\" $param={{$:/temp/NewTidTitle}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTidTitle\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n\\end\n\\define ws-page-controls()\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$droppable actions=<<drop-actions-PageControls-buttons>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<$list filter=\"[<config-title>!text[hide]]\" variable=\"checker\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$draggable tiddler=<<listItem>> tag=\"span\"><$transclude tiddler=<<listItem>>/></$draggable>\n</$set>\n</$list>\n</$droppable>\n</$list>\n\\end\n\n<div class=\"vertical-controls\">\n<<ws-page-controls>>\n</div>\n\n<$scrollable class='jd-sidebar'>\n<div class=\"jd-header\">\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip=\"Unfix sidebar\" class=\"tc-btn-invisible\">{{$:/core/images/menu-button}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip=\"Fix sidebar\" class=\"tc-btn-invisible\">{{$:/core/images/menu-button}}</$button>\n</$reveal>\n<span class=\"header-buttons\">\n<<ws-page-controls>>\n</span>\n</div>\n<$list filter=\"[[$:/config/Whitespace/show-sitetitle]!text[no]]\" variable=\"checker\">\n<div class=\"jd-sitetitle-wrapper\">\n<$list filter=\"[[$:/SiteTitle]!text[]]\" variable=\"checker\">\n<div class=\"jd-sitetitle\"><$transclude tiddler=\"$:/SiteTitle\"/></div>\n</$list>\n<$list filter=\"[[$:/SiteSubtitle]!text[]]\" variable=\"checker\">\n<div class=\"jd-sitesubtitle\"><$transclude tiddler=\"$:/SiteSubtitle\"/></div>\n</$list>\n</div>\n</$list>\n<div class=\"jd-sidebar-column\">\n<div class=\"jd-search-wrapper\">\n<div class=\"jd-search-header\">\n<$keyboard class=\"jd-searchbar-wrapper\" tag=\"div\" key=\"ctrl+space\" actions=<<NewTidActions>>>\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" placeholder=\"Search / create\" class=\"jd-searchbar\"/>\n</$keyboard>\n<div class=\"jd-searchbar-buttons\">\n<$list filter=\"[[$:/temp/search]!text[]]\">\n<$button tooltip=\"Create new tiddler with this title\" class=\"tc-btn-invisible\" actions=<<NewTidActions>>>\n{{$:/core/images/new-button}}\n</$button>\n<$button tooltip=\"Clear searchbar\" class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=<<wsconfig search>> text=\"no\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=\"\"/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$list>\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n</div>\n</div>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<div class=\"jd-search-results\">\n<$scrollable fallthrough=\"no\" class=\"results\">\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$scrollable>\n</div>\n</$reveal>\n</div>\n</div>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" variable=\"currentTiddler\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div class=\"jd-sidebar-column\">\n<div class=\"jd-sidebar-column-header\">\n<$list variable=\"checker\" filter=\"[<config-title-sidebar>!text[hide]]\" emptyMessage=\"\"\"\n<$button set=<<config-title-sidebar>> setTo=\"show\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\" tag=\"text\">\n<<sidebar-title>>\n</$button>\n\"\"\">\n<$button set=<<config-title-sidebar>> setTo=\"hide\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\" tag=\"text\">\n<<sidebar-title>>\n</$button>\n</$list>\n<div class=\"jd-sidebar-column-header-buttons\">\n<$button tooltip=\"Open in story river\" to=<<currentTiddler>> dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\">{{$:/core/images/open-window}}</$button>\n<$button tooltip=\"Edit this tiddler\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-edit-tiddler\"/>{{$:/core/images/edit-button}}</$button>\n<$button tooltip=\"Remove from sidebar\" dragTiddler=<<currentTiddler>> class=\"tc-btn-invisible\">\n<$fieldmangler tiddler=<<currentTiddler>>>\n<$action-sendmessage $message=\"tm-remove-tag\" $param=\"$:/tags/SideBar\"/>\n</$fieldmangler>{{$:/core/images/close-button}}</$button>\n</div>\n</div>\n<$list variable=\"checker\" filter=\"[<config-title-sidebar>!text[hide]]\">\n<div class=\"jd-sidebar-column-header-border\"></div>\n<div class=\"jd-sidebar-column-body\">\n\n<$transclude/>\n\n</div>\n</$list>\n</div>\n</$droppable>\n</$list>\n<div style=\"height:32px;\">\n</div>\n</$scrollable>",
"title": "$:/themes/jd/Whitespace/template/sidebar",
"tags": "$:/tags/PageTemplate",
"modifier": "jd",
"modified": "20200727013547023",
"creator": "JD",
"created": "20171201152819844"
},
"$:/themes/jd/Whitespace/readme": {
"text": "!!! Compatibility checked with ''TW 5.1.17'' & ''TW 5.1.22'' only!\n\nThis theme uses an overhauled sidebar, which can be accessed via a hamburger button at the topright or topleft of the screen. I turned this into a theme just to make it easier for me to move it around my TW5's. \n\n''The hamburger button:''\n\n* When the sidebar is minimized, hovering on the hamburger button will expand the sidebar. The sidebar will minimize when it loses mouse focus. Clicking on the hamburger button will make the sidebar \"sticky\" until it is clicked again.\n\n* Below the hamburger button (when sidebar is minimized) are the usual Page Control buttons. \n\n''Changes to the sidebar:''\n\n# Minimize-able via the hamburger button\n# Movable to the left or the right of the screen\n# Sidebar tabs are turned into draggable, removable, and minimize-able \"card\"-things\n\n''Changes to the sidebar tabs:''\n\n# Draggable = click on the card title + drag above or below other \"cards\" in the sidebar\n# Removable = hover on card title + click the right-most button that appears\n# Minimize-able = click on the card title (expand by clicking again)\n* The card title is the \"caption\" of the tiddler. Otherwise, it's the tiddler title\n\n''~PageControls:''\n\n* ~PageControls appear beside the hamburger button on hover (when sidebar is expanded), or below it when sidebar is \"minimized\"\n\n<hr>\n\n!!! Compatibiliy with ''Stories'' Plugin\n\nhttps://giffmex.org/stroll/empty.html#%24%3A%2Fplugins%2Fsq%2FStories\n\nFor compatibility with the great 2-story plugin above, please also import this to your wiki:\n\n<<<\n''~$:/themes/jd/Whitespace/Stylesheet/StoriesPluginCompatibility''\n[[get it here|http://j.d.whitespace.tiddlyspot.com/#Compatibility%20with%20''Stories''%20Plugin]]\n<<<\n\n<hr>\n\n//Note:// \n\nThis theme is best used with [[Very Simple Mobile Layout (plugin)|http://j.d.tiddlyspot.com/#Very%20Simple%20Mobile%20Layout%20(plugin)]].\n\n<a target=\"blank\" href=\"http://j.d.whitespace.tiddlyspot.com\">Project Homepage on Tiddlyspot</a>\n\n<hr>\n\n```\n'20/07/27 : fixed the story river scrolling issue (finally!) just by using a <$scrollable/> widget\n```\n\n<hr>\n\n//MIT License://\n\nCopyright 2020 jologsdialogue@gmail.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"title": "$:/themes/jd/Whitespace/readme",
"modifier": "jd",
"modified": "20200727014016503",
"creator": "JD",
"created": "20180203113849420"
},
"$:/themes/jd/Whitespace/config": {
"text": "\\define wsconfig(name) $:/config/Whitespace/$name$\n\\define config-base() $:/config/SideBar/Visibility/\n\\define config-title-sidebar()\n$(config-base)$$(currentTiddler)$\n\\end\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/tags/SideBar\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<style>\n.tc-control-panel table input[type=\"radio\"] { width: auto; }\n.ws-select-button {\n display: inline-flex;\n width: 1em;\n height: 1em;\n border-radius: 50%;\n border: 1px solid <<colour primary>>;\n}\n.ws-disabled-btn {\n background: <<colour muted-background>>;\n}\n.ws-enabled-btn {\n background: <<colour primary>>;\n}\n</style>\n\n<table width=\"99%\">\n<tr>\n<td>\nSidebar width:\n</td>\n<td>\n<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" tag=\"input\" placeholder=\"350px\" default=\"\"/>\n</td>\n</tr>\n<tr>\n<td>\nTiddler width:\n</td>\n<td>\n<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" tag=\"input\" placeholder=\"100%\" default=\"\"/>\n</td>\n</tr>\n<tr>\n<td>\nSidebar top buttons area height:\n</td>\n<td>\n<$edit-text tiddler=\"$:/w/config/jd-sidebar-top-buttons-height\" tag=\"input\" placeholder=\"42px\" default=\"\"/>\n</td>\n</tr>\n<tr>\n<td>\nSidebar top padding:\n</td>\n<td>\n<$edit-text tiddler=\"$:/w/config/jd-sidebar-top-padding\" tag=\"input\" placeholder=\"39px\" default=\"\"/>\n</td>\n</tr>\n<tr>\n<td>\nLimit sidebar card height:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig SidebarHeight>> field=\"text\" checked=\"limit\" unchecked=\"full\" default=\"limit\"/>\n<$list filter=\"[[$:/config/Whitespace/SidebarHeight]text[limit]]\"><$edit-text tiddler=<<wsconfig SidebarHeight>> field=\"height\" tag=\"input\" placeholder=\"300px\"/></$list>\n</td>\n</tr>\n<tr>\n<td>\nVisible scrollbars:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig scrollbar-style>> field=\"text\" checked=\"visible\" unchecked=\"invisible\" default=\"visible\"/>\n</td>\n</tr>\n<tr>\n<td>\nShow Sitetitle and Subtitle:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig show-sitetitle>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"/>\n</td>\n</tr>\n<tr>\n<td>\nShow buttons on hover:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig Spacious>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"/>\n</td>\n</tr>\n<tr>\n<td>\nTheme the tiddler edit mode:\n</td>\n<td>\n<$checkbox tiddler=<<wsconfig ThemeEditFrame>> field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"/>\n</td>\n</tr>\n<tr>\n<td>\nSidebar position:\n</td>\n<td>\n<$radio tiddler=<<wsconfig \"sidebar\">> value=\"left\"> left</$radio><br>\n<$radio tiddler=<<wsconfig \"sidebar\">> value=\"right\"> right</$radio>\n</td>\n</tr>\n</table>",
"title": "$:/themes/jd/Whitespace/config",
"tags": "$:/tags/ControlPanel/Appearance",
"modifier": "jd",
"modified": "20200727063111886",
"creator": "JD",
"created": "20171203134043686",
"caption": "Whitespace tweaks"
},
"$:/themes/jd/Whitespace/Stylesheet": {
"text": "\\define wsconfig(name) $:/config/Whitespace/$name$\n\\define ws-sidebar-op() <$list filter=\"[[$:/config/Whitespace/sidebar]text[right]]\" emptyMessage=\"right\">left</$list>\n\\define ws-sidebar-width() <$list filter=\"[[$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth]!text[]get[text]]\" emptyMessage=\"350px\"/>\n\\define ws-tiddler-width() <$list filter=\"[[$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth]!text[]get[text]]\" emptyMessage=\"100%\"/>\n\\define ws-sidebarbreakpoint() <$list filter=\"[[$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint]!text[]get[text]]\" emptyMessage=\"960px\"/>\n\n<$wikify name=\"ws-sidebar-po\" text=\"\"\"<$list filter=\"[[$:/config/Whitespace/sidebar]get[text]]\" emptyMessage=\"left\"/>\"\"\">\n\n@media (min-width: <<ws-sidebarbreakpoint>>) { \n\n<$reveal state=<<wsconfig ThemeEditFrame>> type=\"match\" text=\"yes\" default=\"yes\">\n\n\n/** NO BOX SHADOW ON INPUTS **/\n\n.tc-tiddler-edit-frame .tc-edit-field-add input.tc-edit-texteditor, \n.tc-tiddler-edit-frame text, \n.tc-tiddler-edit-frame textarea, \n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame textarea.tc-edit-texteditor {\n -moz-box-shadow: none !important;\n -ms-box-shadow: none !important;\n -o-box-shadow: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n}\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor,\n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame text, \n.tc-tiddler-edit-frame textarea, \n.tc-tiddler-edit-frame textarea.tc-edit-texteditor { border: none !important; }\n\n\n/** EDIT TIDDLER **/\n\n.tc-tiddler-edit-frame input.tc-titlebar.tc-edit-texteditor {\n -moz-box-shadow: none !important;\n -ms-box-shadow: none !important;\n -o-box-shadow: none !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n padding: .25em .5em !important;\n font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}}; \n font-weight: normal;\n}\n\n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame .tc-editor-toolbar,\n.tc-tiddler-edit-frame .tc-type-selector,\n.tc-tiddler-edit-frame .tc-edit-field-add {\n background-color: <<colour tiddler-editor-background>>;\n padding: 8px 4px;\n}\n\n.tc-tiddler-edit-frame input.tc-edit-texteditor,\n.tc-tiddler-edit-frame .tc-edit-tags, \n.tc-tiddler-edit-frame .tc-editor-toolbar,\n.tc-tiddler-edit-frame .tc-type-selector,\n.tc-tiddler-edit-frame .tc-edit-field-add {\n margin: 0 0 4px 0 !important;\n}\n\n.tc-tiddler-edit-frame iframe.tc-edit-texteditor,\n.tc-tiddler-edit-frame table.tc-edit-fields { margin: 0 !important; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar { background: <<colour tiddler-editor-border>>; margin-bottom: 0 !important; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible { background: transparent; }\n\n.tc-tiddler-edit-frame .tc-editor-toolbar .tc-btn-invisible:hover {\n background: transparent;\n fill: <<colour primary>>;\n}\n\n</$reveal>\n\n\n.borderless { border: none !important; }\n\ntextarea.large-textarea { \n min-height: 100px;\n width: 100%;\n max-width: 100%;\n border: 1px solid <<colour table-border>> !important;\n}\n\ninput.scene-textarea { \n border: 1px solid <<colour table-border>> !important;\n}\n\n.tc-tiddler-frame {\n width: <<ws-tiddler-width>> !important;\n border-radius: {{!!box-radius}};\n margin-left: auto;\n margin-right: auto;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n}\n\n.tc-storyview-zoomin-tiddler {\n position: relative !important;\n width: calc(<<ws-tiddler-width>> - 84px) !important;\n}\n\n\n/** CARD BUTTONS **/\n\n.jd-sidebar-column-header > .tc-btn-invisible {\n color: <<colour foreground>>;\n margin-top: -3px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n.tc-tiddler-view-frame .tc-tiddler-controls svg {\n opacity: 0; \n <<transition \"opacity 150ms ease-in-out\">>\n}\n\n.tc-tiddler-view-frame .tc-tiddler-controls:hover svg { opacity: 1; }\n</$reveal>\n\n/** FONT SIZES **/\n\n.jd-buttons .tc-btn-invisible { font-size: 18px; }\n.jd-sidebar:hover .jd-header .tc-btn-invisible, \n.jd-sidebar .header-buttons .tc-btn-invisible { font-size: 16px; }\n.jd-header .tc-btn-invisible,\n.jd-sidebar .jd-header .tc-btn-invisible,\n.vertical-controls .tc-btn-invisible { font-size: 20px; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar .jd-header .tc-btn-invisible { font-size: 16px; }\n</$reveal>\n\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n\n/** AUTOHIDE VERTICAL BUTTONS **/\n\n.vertical-controls {\n opacity: 0;\n <<transition \"opacity 150ms ease-in-out\">>\n}\n\n.vertical-controls:hover {\n opacity: 1;\n}\n\n</$reveal>\n\n\n/** STORY RIVER **/\n\n.tc-story-river { transition: left 250ms, right 250ms; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.tc-story-river { padding: 42px 2em !important; }\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"yes\">\n.tc-story-river { padding: 42px 10% !important; }\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.tc-story-river {\n <<ws-sidebar-po>>: <<ws-sidebar-width>> !important;\n width: calc(100% - <<ws-sidebar-width>>) !important;\n}\n.jd-sidebar { opacity: 1; }\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"yes\">\n\n.tc-story-river { width: 100% !important; }\n\n</$reveal>\n\n.tc-tiddler-body {\n margin-top: 10px;\n padding-right: 10px;\n padding-bottom: 20px;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n\n/** VERTICAL CONTROLS **/\n\n.jd-header {\n width: 50px;\n height: 50px;\n position: fixed;\n top: 0;\n overflow: hidden;\n <<ws-sidebar-po>>: 0;\n padding: 15px;\n z-index: 700;\n}\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n\n.jd-header .header-buttons {\n opacity: 0;\n -webkit-transition: opacity {{$:/config/AnimationDuration}}ms;\n transition: opacity {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-header:hover .header-buttons { opacity: 1; }\n\n</$reveal>\n\n.jd-header .header-buttons .tc-image-button {\n width: 0;\n height: 0;\n}\n\n.jd-sidebar:hover .header-buttons .tc-image-button {\n width: 1em;\n height: 1em;\n margin: 0 0 0 10px;\n}\n\n.jd-header .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n -webkit-transition: fill {{$:/config/AnimationDuration}}ms, font-size {{$:/config/AnimationDuration}}ms;\n transition: fill {{$:/config/AnimationDuration}}ms, font-size {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-sidebar:hover .jd-header {\n<$list filter=\"[<ws-sidebar-po>prefix[right]]\" emptyMessage=\"\"\"\n width: calc(<<ws-sidebar-width>> - 1.5em);\n\"\"\">\n width: <<ws-sidebar-width>>;\n</$list>\n height: <$list filter=\"[[$:/w/config/jd-sidebar-top-buttons-height]is[tiddler]] +[get[text]]\" emptyMessage=\"39px\"/>;\n background: <<colour page-background>>;\n padding: 10px 20px;\n -webkit-transition: width {{$:/config/AnimationDuration}}ms;\n transition: width {{$:/config/AnimationDuration}}ms;\n}\n\n<$list filter=\"[<ws-sidebar-po>prefix[left]]\">\n.jd-sidebar:hover .jd-header {\n box-shadow: -5px 0 5px 0 <<colour page-background>>;\n}\n</$list>\n\n<$list filter=\"[<ws-sidebar-po>!prefix[right]]\">\n.jd-sidebar:hover .jd-header {\n box-shadow: 5px 0 5px 0 <<colour page-background>>;\n margin-right: calc(1.5em - 1px);\n}\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-header {\n margin-right: calc(1.5em - 1px);\n}\n</$reveal>\n</$list>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar .jd-header {\n<$list filter=\"[<ws-sidebar-po>prefix[right]]\" emptyMessage=\"\"\"\n width: calc(<<ws-sidebar-width>> - 1.5em);\n\"\"\">\n width: <<ws-sidebar-width>>;\n</$list>\n height: <$list filter=\"[[$:/w/config/jd-sidebar-top-buttons-height]is[tiddler]] +[get[text]]\" emptyMessage=\"39px\"/>;\n background: <<colour page-background>>;\n padding: 10px 20px;\n}\n.jd-sidebar .header-buttons .tc-image-button {\n width: 1em;\n height: 1em;\n margin: 0 0 0 10px;\n}\n</$reveal>\n\n.vertical-controls {\n background: <<colour page-background>>;\n position: fixed;\n top: 50px;\n <<ws-sidebar-po>>: 0;\n width: 50px;\n height: calc(100% - 50px);\n padding: 5px 15px;\n z-index: 600;\n}\n\n.vertical-controls button {\n margin-bottom: 15px;\n outline: none;\n}\n\n.vertical-controls .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.jd-header .tc-droppable.tc-dragover > .tc-droppable-placeholder { display: inline; }\n\n\n/** STYLED SIDEBAR **/\n\n.jd-sitetitle-wrapper { text-align: center; }\n\n.jd-sitetitle { font-size: 2em; padding: 0.2em 0; }\n\n.jd-sitesubtitle { padding-bottom: 2em; }\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n\n.jd-sitetitle-wrapper { opacity: 0; }\n\n.jd-sidebar:hover .jd-sitetitle-wrapper { opacity: 1; }\n\n</$reveal>\n\n<$reveal state=\"$:/SiteSubtitle\" type=\"match\" text=\"\">\n\n.jd-sitetitle { padding-bottom: 1em; }\n\n</$reveal>\n\n.jd-sidebar p {\n margin: 5px 0;\n}\n\n.jd-sidebar {\n background: <<colour page-background>>;\n height: 50px;\n display: inline-block;\n position: fixed;\n top: 0;\n <<ws-sidebar-po>>: 0;\n justify-content: center;\n z-index: 800;\n -webkit-transition: width {{$:/config/AnimationDuration}}ms, height {{$:/config/AnimationDuration}}ms;\n transition: width {{$:/config/AnimationDuration}}ms, height {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-sidebar:hover {\n width: <<ws-sidebar-width>>;\n border-<<ws-sidebar-op>>: 1px solid<<colour page-background>>;\n padding: <$list filter=\"[[$:/w/config/jd-sidebar-top-padding]is[tiddler]] +[get[text]]\" emptyMessage=\"42px\"/> 20px 0 20px;\n height: 100%;\n overflow-y: auto !important;\n}\n\n<$list filter=\"[<ws-sidebar-po>prefix[left]]\">\n.jd-sidebar:hover {\n <<box-shadow \"6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$list>\n<$list filter=\"[<ws-sidebar-po>prefix[right]]\">\n.jd-sidebar:hover {\n <<box-shadow \"-6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$list>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar {\n width: <<ws-sidebar-width>>;\n padding: <$list filter=\"[[$:/w/config/jd-sidebar-top-padding]is[tiddler]] +[get[text]]\" emptyMessage=\"42px\"/> 20px 0 20px;\n border-<<ws-sidebar-op>>: 1px solid<<colour page-background>>;\n height: 100%;\n overflow-y: auto;\n}\n.jd-sidebar-column { opacity: 1; }\n<$list filter=\"[<ws-sidebar-po>prefix[left]]\">\n.jd-sidebar {\n <<box-shadow \"6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$list>\n<$list filter=\"[<ws-sidebar-po>prefix[right]]\">\n.jd-sidebar {\n <<box-shadow \"-6px 0 20px 0 rgba(0, 0, 0, 0.1)\">>\n}\n</$list>\n</$reveal>\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\" default=\"yes\">\n.jd-sidebar {\n width: 50px;\n overflow: hidden !important;\n}\n.jd-sidebar-column {\n opacity: 0;\n}\n</$reveal>\n\n.jd-sidebar-column {\n display: block;\n background: <<colour background>>;\n padding: 10px;\n margin-bottom: 10px;\n border: 1px solid <<colour tiddler-border>>;\n border-radius: {{!!box-radius}};\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n overflow: hidden;\n -webkit-transition: opacity {{$:/config/AnimationDuration}}ms;\n transition: opacity {{$:/config/AnimationDuration}}ms;\n}\n\n.jd-sidebar-column-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 2px 0;\n overflow: hidden;\n}\n\n.jd-sidebar-column-header-border {\n height: 10px;\n width: 100%;\n border-top: 1px solid <<colour table-border>>;\n margin-top: 8px;\n}\n\n.jd-sidebar-column-header .jd-sidebar-column-header-buttons {\n display: flex;\n align-items: flex-end;\n}\n\n.jd-sidebar-column-header .jd-sidebar-column-header-buttons button {\n margin-left: 6px;\n}\n\n<$reveal state=<<wsconfig Spacious>> type=\"match\" text=\"yes\" default=\"yes\">\n.jd-sidebar-column-header .jd-sidebar-column-header-buttons {\n opacity: 0;\n <<transition \"opacity 150ms ease-in-out\">>\n}\n.jd-sidebar-column-header:hover .jd-sidebar-column-header-buttons { opacity: 1; }\n</$reveal>\n\n<$reveal type=\"match\" state=<<wsconfig SidebarHeight>> text=\"limit\" default=\"limit\">\n.jd-sidebar-column-body {\n max-height: <$list filter=\"[[$:/config/Whitespace/SidebarHeight]!height[]]\" emptyMessage=\"300px\">{{$:/config/Whitespace/SidebarHeight!!height}}</$list>;\n overflow-y: auto;\n overflow-x: hidden;\n}\n</$reveal>\n\n.jd-sidebar:hover .jd-sidebar-column {\n opacity: 1;\n}\n\n.tc-droppable {\n padding: 0;\n margin: 0;\n}\n\n.tc-sidebar-scrollable,\n.jd-config,\n.tc-topbar,\n.tc-bottombar { \n width: 0; \n height: 0; \n margin: 0; \n padding: 0; \n display: none; \n}\n\n\n/** POPUPS AND DROPDOWNS **/\n\n.jd-sidebar .tc-drop-down,\n.tc-tiddler-frame .tc-drop-down,\n.tc-tiddler-frame .tc-block-dropdown {\n overflow: auto;\n <<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.09)\">>\n}\n\n.jd-sidebar .tc-drop-down {\n position: fixed;\n <<ws-sidebar-po>>: 20px;\n top: 50px;\n min-width: calc(<<ws-sidebar-width>> - 40px) !important;\n max-width: calc(<<ws-sidebar-width>> - 40px) !important;\n max-height: 360px !important;\n}\n\n.tc-tiddler-frame .tc-drop-down,\n.tc-tiddler-frame .tc-block-dropdown {\n min-width: 230px !important;\n max-height: 230px !important;\n}\n\n.tc-menu-list-item {\n -webkit-word-break: break-all !important;\n -moz-word-break: break-all !important;\n -ms-word-break: break-all !important;\n -o-word-break: break-all !important;\n word-break: break-all !important;\n}\n\n.tc-edit-type-dropdown { overflow: auto; }\n\n\n/** BUTTONS **/\n\n.jd-sidebar-column .tc-btn-invisible,\n.jd-edit-title-controls .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.vertical-controls .tc-btn-invisible:hover,\n.jd-edit-title-controls .tc-btn-invisible:hover,\n.jd-sidebar .tc-btn-invisible:hover,\n.jd-sidebar-column .tc-btn-invisible:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n\n/** NOTIFICATION **/\n\n<$list filter=\"[<ws-sidebar-po>prefix[right]]\">\n.tc-notification { left: 14px; width: initial; }\n</$list>\n\n\n/** SCROLLBARS **/\n\n<$reveal state=<<wsconfig scrollbar-style>> type=\"match\" text=\"visible\" default=\"visible\">\n.tc-tiddler-frame .tc-drop-down::-webkit-scrollbar,\n.tc-tiddler-frame .tc-block-dropdown::-webkit-scrollbar,\ndiv::-webkit-scrollbar {\n background: transparent;\n width: 6px;\n}\n\n.tc-tiddler-frame .tc-drop-down::-webkit-scrollbar-thumb,\n.tc-tiddler-frame .tc-block-dropdown::-webkit-scrollbar-thumb,\ndiv::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.3); \n -webkit-border-radius: {{!!box-radius}};\n border-radius: {{!!box-radius}};\n}\n\n.jd-sidebar::-webkit-scrollbar-thumb {\n background: <<colour primary>>; \n}\n</$reveal>\n<$reveal state=<<wsconfig scrollbar-style>> type=\"match\" text=\"invisible\" default=\"visible\">\n.tc-tiddler-frame .tc-drop-down::-webkit-scrollbar,\n.tc-tiddler-frame .tc-block-dropdown::-webkit-scrollbar,\n.jd-sidebar::-webkit-scrollbar,\ndiv::-webkit-scrollbar {\n background: transparent;\n width: 0;\n}\n</$reveal>\n\n\n/** SIDEBAR SEARCH **/\n\n.jd-search-wrapper {\n width: 100%;\n display: inline-block;\n}\n\n.jd-search-header {\n background: <<colour background>>;\n display: flex;\n justify-content: space-between;\n}\n\n.jd-searchbar-wrapper { width: 100%; }\n\n.jd-searchbar-buttons {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n width: 120px;\n}\n\n.jd-searchbar {\n width: 100%;\n outline: none !important;\n border: none !important;\n background: transparent !important;\n}\n\n.jd-search-results {\n margin-top: 10px;\n padding-right: 15px;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n<$reveal type=\"match\" state=<<wsconfig SidebarHeight>> text=\"limit\" default=\"limit\">\n.jd-search-results { max-height: <$list filter=\"[[$:/config/Whitespace/SidebarHeight]!height[]]\" emptyMessage=\"300px\">{{$:/config/Whitespace/SidebarHeight!!height}}</$list>; }\n</$reveal>\n\n.jd-searchbar-buttons button {\n outline: none;\n margin-left: 10px;\n}\n\n.jd-searchbar-buttons .tc-btn-invisible {\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.jd-searchbar-buttons .tc-btn-invisible:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n color: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.jd-search-results .tc-menu-list-item {\n white-space: normal;\n word-wrap: break-word;\n padding-left: 5px;\n text-indent: -5px;\n}\n\n\n/** SIDEBAR CONTROLS**/\n\n.jd-buttons { \n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n}\n\n.jd-buttons > .tc-reveal {\n min-width: 0 !important;\n width: 20% !important;\n text-align: center;\n}\n\n.jd-buttons > .tc-btn-invisible {\n margin: 5px 0;\n outline: none;\n fill: <<colour sidebar-controls-foreground>>;\n <<transition \"fill 150ms ease-in-out\">>\n}\n\n.jd-buttons > .tc-btn-invisible:hover {\n fill: <<colour sidebar-controls-foreground-hover>>;\n}\n\nbutton, button:hover { outline: none; }\n\ninput, input:focus { outline: none !important; }\n\n}\n\n@media (max-width: <<ws-sidebarbreakpoint>>) { \n\n.jd-sidebar, .vertical-controls { display: none; }\n.tc-titlebar text, input.tc-titlebar.tc-edit-texteditor { font-size: 18px; }\n\n}\n\n</$wikify>",
"title": "$:/themes/jd/Whitespace/Stylesheet",
"tags": "$:/tags/Stylesheet",
"modifier": "jd",
"modified": "20200727071748669",
"creator": "JD",
"created": "20171127170053658",
"box-radius": "1px"
}
}
}
/* FOR STORIES PLUGIN */
/* https://giffmex.org/stroll/empty.html#%24%3A%2Fplugins%2Fsq%2FStories */
/* this stylesheet will apply with the existence of the plugin */
<$list filter="[[$:/plugins/sq/Stories]is[tiddler]]" variable="chk">
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-story-river {
transition: width 250ms, padding 250ms;
<$reveal state="$:/config/_sq/Stories/story2" type="nomatch" text="no" default="no">
<$list filter="[list[$:/_sq/Stories/Story2StoryList]limit[1]]">
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes">
width: calc(50% - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} / 2) !important;
padding: 42px .5em 42px 1em !important;
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no" default="yes">
width: 50% !important;
padding: 42px .5em 42px 50px !important;
</$reveal>
</$list>
</$reveal>
}
<$reveal state="$:/config/_sq/Stories/story2" type="nomatch" text="no" default="no">
.tc-story-river.tc-storytwo-river {
height: 0 !important;
width: 0 !important;
padding: 0 !important;
margin: 0 !important;
}
.sq-story-rivertwo-scrollable {
top: 0;
width: 100%;
transition: width 250ms, padding 250ms, right 250ms;
<$list filter="[[$:/StoryList]field:list[]]">
left: 0 !important;
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes">
padding-top: 42px;
padding-bottom: 42px;
<$list filter="[[$:/themes/jd/Whitespace/config]sidebar-position[left]]">
padding-left: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} + 2em);
padding-right: 2em;
</$list>
<$list filter="[[$:/themes/jd/Whitespace/config]!sidebar-position[left]]">
padding-left: 2em;
padding-right: calc({{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} + 2em);
</$list>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no" default="yes">
padding: 42px 10%;
</$reveal>
</$list>
<$list filter="[list[$:/StoryList]limit[1]]">
left: unset !important;
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes">
width: calc(50% - {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}} / 2) !important;
padding-top: calc(42px + 1em);
padding-right: 1em;
padding-bottom: 42px;
padding-left: 0.5em;
<$list filter="[[$:/themes/jd/Whitespace/config]sidebar-position[left]]">
right: 0 !important;
</$list>
<$list filter="[[$:/themes/jd/Whitespace/config]!sidebar-position[left]]">
right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
</$list>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no" default="yes">
width: calc(49% + .5em) !important;
padding-top: calc(42px + 1em);
padding-right: 50px;
padding-bottom: 42px;
padding-left: 0.5em;
<$list filter="[[$:/themes/jd/Whitespace/config]sidebar-position[left]]">
right: 0 !important;
</$list>
<$list filter="[[$:/themes/jd/Whitespace/config]!sidebar-position[left]]">
right: 0;
</$list>
</$reveal>
</$list>
}
</$reveal>
.tc-tiddler-frame {
width: 100% !important;
}
}
</$list>
{
"tiddlers": {
"$:/themes/tiddlywiki/readonly/styles.tid": {
"title": "$:/themes/tiddlywiki/readonly/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define button-selector(title)\nbutton.$title$, .tc-drop-down button.$title$, div.$title$\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fclone>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fdelete>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fedit>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-here>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-journal-here>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fimport>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fmanager>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-image>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-journal>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-tiddler>> {\n\tdisplay: none;\n}"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/seamless/base": {
"title": "$:/themes/tiddlywiki/seamless/base",
"tags": "[[$:/tags/Stylesheet]]",
"list-after": "$:/themes/tiddlywiki/vanilla/base",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nRules copied from Snow White\n*/\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected svg {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal-displayed {\n\t<<filter \"blur(4px)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n/*\nSeamless modifications\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t/* Drop the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-frame {\n\t\tpadding: 0;\n\t}\n\n\t/* Move the sidebar up so that the title lines up */\n\tbody.tc-body .tc-sidebar-scrollable {\n\t\tpadding: 43px 0 28px 42px;\n\t}\n\n\t/* Stop the tiddler info panel from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-info {\n\t\tmargin: 0;\n\t}\n\n\t/* Stop message boxes from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-message-box {\n\t\tmargin: 21px 0 21px 0;\n\t}\n\n}\n\n/* Use the tiddler background colour for the page background */\nhtml body.tc-body {\n\tbackground-color: <<colour background>>;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour background>>;\n}\n\n/* Adjust the colour of the page controls */\nbody.tc-body .tc-page-controls svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n/* Adjust the colour of the sidebar selected tabs */\nbody.tc-body .tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour background>>;\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/starlight/arvo.woff": {
"title": "$:/themes/tiddlywiki/starlight/arvo.woff",
"text": "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",
"type": "application/font-woff"
},
"$:/themes/tiddlywiki/starlight/ltbg.jpg": {
"title": "$:/themes/tiddlywiki/starlight/ltbg.jpg",
"text": "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PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KPHBsaXN0IHZlcnNpb249IjEuMCI+CjxkaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnN1YlRpY2tldC5wYXBlcl9pbmZvX3RpY2tldDwva2V5PgoJPGRpY3Q+CgkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPkxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVRpb2dhUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+Nzc0PC9yZWFsPgoJCQkJCQk8cmVhbD41OTQ8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+bmEtbGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPlVTIExldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPtAAAAAAAQAEgCTgABAAEASAJOAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAAAAAAAAAAAAABVAAAAVQAAAAJAFAAaQBjAHQAdQByAGUAIAAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAFUAAABVAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABVAAAAABSZ2h0bG9uZwAAAVQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAVQAAAAAUmdodGxvbmcAAAFUAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAA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Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iIHhhcDpDcmVhdGVEYXRlPSIyMDEwLTA4LTMwVDIzOjQ5OjE0LTA1OjAwIiB4YXA6TW9kaWZ5RGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOk1ldGFkYXRhRGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0iaU1hYyIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgeGFwTU06SW5zdGFuY2VJRD0idXVpZDpFQjAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgeGFwTU06RG9jdW1lbnRJRD0idXVpZDpFQTAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDkwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwOTAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs3RUY4RDFBOTcwMjlCOUNFOTAwNkUzRDcxRjgwNDdFNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjM0MCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0MCIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtGRTM2RkQ0MzU0NEI0ODUyODY3OEVERkZGOTk0MkMwRiI+IDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IPJElDQ19QUk9GSUxFAAEBAAAPFGFwcGwCAAAAbW50clJHQiBYWVogB9oAAQAEAA8AMwADYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsWM2pk1LRLUWykThyCK1QdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAAA8bW1vZAAADsgAAAAoY3BydAAADvAAAAAkWFlaIAAAAAAAAHeaAABAmQAAAxlYWVogAAAAAAAAWO0AAKuMAAAXrVhZWiAAAAAAAAAmTgAAE/UAALheWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAUUCyAQ5BZsHIQi8ClsL+w2ZDzsQ6hKXFEYWAhe5GVYa4xxxHfkfdSDyImcj0iU1JpAn5ikyKnkrvi0BLkEvgTC9MfkzNTRrNaE21DgHOTg6ZjuTPLw95D8MQDNBV0J5Q5pEuEXWRvJIDEklSjpL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",
"type": "image/jpeg"
},
"$:/themes/tiddlywiki/starlight/styles.tid": {
"title": "$:/themes/tiddlywiki/starlight/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nPlaceholder for a more thorough refinement of Snow White\n*/\n\n@font-face {\n font-family: \"Arvo\";\n font-style: normal;\n font-weight: 400;\n src: local(\"Arvo\"), url(<<datauri \"$:/themes/tiddlywiki/starlight/arvo.woff\">>) format(\"woff\");\n}\n\nhtml body, .tc-sidebar-scrollable-backdrop {\n\tfont-family: \"Arvo\", \"Times\";\n background: url(<<datauri \"$:/themes/tiddlywiki/starlight/ltbg.jpg\">>);\n}\n\n.tc-page-controls svg {\n <<filter \"drop-shadow(1px 1px 2px rgba(255,255,255,0.9))\">>\n}\n"
},
"$:/themes/tiddlywiki/starlight/themetweaks": {
"title": "$:/themes/tiddlywiki/starlight/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "Star Tweaks",
"text": "Demo of a control panel tab dynamically loaded with a theme.\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/tight/base": {
"title": "$:/themes/tiddlywiki/tight/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml body.tc-body {\n\t\tfont-size: 13px;\n\t\tline-height: 16px;\n\t}\n\n\thtml body.tc-body h1,\n\thtml body.tc-body h2,\n\thtml body.tc-body h3,\n\thtml body.tc-body h4,\n\thtml body.tc-body p {\n\t\tmargin-top: 0.3em;\n\t\tmargin-bottom: 0.3em;\n\t}\n\n\thtml body.tc-body code {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body section.tc-story-river {\n\t\tpadding: 0px;\n\t}\n\n\thtml body.tc-body div.tc-tiddler-frame {\n\t\tpadding: 12px;\n\t}\n\n\thtml body.tc-body div.tc-sidebar-scrollable {\n\t\tpadding: 12px 0 12px 12px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-subtitle {\n\t\tfont-size: 0.7em;\n\t\tfont-weight: 700;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-subtitle .tc-tiddlylink {\n\t\tmargin-right: .3em;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tags-wrapper {\n\t\tmargin: 0;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame button.tc-tag-label,\n\thtml body.tc-body .tc-tiddler-frame span.tc-tag-label {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h1 {\n\t\tfont-size: 1.5em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h2 {\n\t\tfont-size: 1.3em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h3 {\n\t\tfont-size: 1.2em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h4 {\n\t\tfont-size: 1.1em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-improvement-banner {\n\t\tmargin-right: -15px;\n\t\tmargin-left: -10px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-info {\n\t margin: 0 -13px 0 -13px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-fold-banner {\n\t width: 13px;\n\t margin-left: -15px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-unfold-banner {\n\t margin-left: -13px;\n\t margin-top: -4px;\n\t}\n\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n background-color: transparent;\n}\n\n\"\"\">>\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n vertical-align: middle;\n}\n\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n\t-webkit-appearance:none;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n::selection {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour page-background>>;\n}\n\n::-moz-selection {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour page-background>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n.tc-drop-down a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n \tcursor: pointer;\n\tcolor: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\n.tc-block-tags-dropdown > .tc-btn-invisible:hover {\n\tbackground-color: <<colour primary>>;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n.tc-tag-button-selected,\n.tc-list-item-selected a.tc-tiddlylink {\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour tiddler-background>>;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: auto;\n}\n\n.tc-type-selector-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name-wrapper input.tc-edit-texteditor {\n\twidth: auto;\n}\n\n.tc-edit-field-add-name-wrapper {\n\tdisplay: inline-block;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 35%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a.tc-tiddlylink:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n font-size: 0.8em;\n margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n padding: 2px 7px;\n font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n margin: 0;\n padding: 0;\n border: none;\n background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n\nselect {\n color: <<colour select-tag-foreground>>;\n background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
}
}
}
"Calibri", "Architects Daughter", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"
div.tc-tagged-Welcome {
background-color: black;
}
{.viewer .title { display: none; }}
.tc-titlebar h2 { font-family: Cabin Sketch; }
<link href="https://fonts.googleapis.com/css?family=Permanent+Marker|Amatic+SC|Annie+Use+Your+Telescope|Architects+Daughter|Cabin+Sketch|Dancing+Script|Fredericka+the+Great|Gloria+Hallelujah|Handlee|Love+Ya+Like+A+Sister|Nixie+One|Reenie+Beanie|Rock+Salt|Short+Stack|Special+Elite|Tangerine|Gochi Hand|Gamja Flower|The+Girl+Next+Door|Zeyada" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Alegreya&family=Alegreya+Sans&family=Merriweather&family=Merriweather+Sans&family=Nunito&family=Nunito+Sans&family=Quattrocento&family=Quattrocento+Sans&family=Roboto&family=Roboto+Mono&family=Roboto+Slab&display=swap" rel="stylesheet">
A number of software programs for the BBC micro (<<richlink "https://en.wikipedia.org/wiki/BBC_Micro" >>) have been developed for use in primary schools, but due to the unfamiliarity of the QWERTY keyboard layout and the small size of keys in relation to children's dexterity, the application and acceptance of this software has been limited. A keyboard converter, using larger keys with clearly defined functions, was designed to overcome the problems caused by a compact, complicated keyboard.
A prototype of the converter was produced to test children's reactions. As a result of the success of the initial trials a further ten prototypes are to be produced for deeper and wider evaluation, with the aim of marketing the software and appropriately designed hardware for use in both the school and, eventually, the home environment.
The current objective is to design a fully marketable version of the keyboard converting system.
[[Would you like to know more?|2. Scope of the specification]]
#Select the point you are taking [[moments|Moments]] around. (Let's call this point ''BOB'') <br>[[Would you like to know more?|Magic Moments Step 1]]
#Sort out the [[UDLs|Uniformly Distributed Load]]<br>[[Would you like to know more?|Magic Moments Step 2]]
#Identify the Clock Wise [[Moments]] (''CWM'') and the Anti Clock Wise [[Moments]] (''ACWM'')<br>[[Would you like to know more?|Magic Moments Step 3]]
#Take the CWM (multiply the [[force|Force]] by the distance from BOB for each CWM and add them together).<br>[[Would you like to know more?|Magic Moments Step 4]]
#Repeat step 4 For ACWM (multiply the [[force|Force]] by the distance from BOB for each ACWM and add them together.<br>[[Would you like to know more?|Magic Moments Step 5]]
#CWM=ACWM
#Rearrange to find unknown<br>[[Would you like to know more?|Magic Moments Steps 6 & 7]]
#To find remaining reaction force add all the ↑forces and add all the ↓forces (but NOT the ↑to the ↓).
#↑=↓
#Rearrange to find reaction<br>[[Would you like to know more?|Magic Moments Steps 8-10]]
#Go [[here|https://youtu.be/ZZ_hWTuSYSk]], sit back and enjoy.
A printable word doc version can be found [[here|https://www.dropbox.com/s/4oa3fe8pf39nh6j/10%20Steps%20to%20magic%20moments.docx?dl=0]]<br>
10.1 The general maintenance of the keyboard converter should be minimised.
10.2 There should be no need for repairs or replacement of parts, but adult users should be able to replace buttons, if necessary, with minimal instruction.
11.1 The product life need not exceed that of the BBC micro.
12.1 The product must meet all the safety standards for use of equipment within schools, particularly with respect to toxicity and fire resistance.
12.2 The design of any mechanisms must not allow fingers (especially those of children) to be admitted or trapped. This is particularly important for electrical apparatus.
12.3 Sharp corners and edges should be avoided.
13.1 Testing of the product will be carried out by building a prototype and observing its performance in the classroom environment.
14.1 The packaging must help sell the product and therefore be of interest to both teachers and children.
14.2 The packaging should be designed to appeal primarily to teachers rather than children.
14.3 For mail order, the packaging needs to give good protection, as well as meeting weight and size restrictions.
15.1 The target retail price for the complete converter kit including the minimum software is£99.95 It is considered psychologically important from a marketing point of view not to exceed £100.
16.1 Engineering drawings need to be available so that manufacture of the tooling can begin three months after the project starts in October.
16.2 The product must reach the market in the late spring or early summer when most educational orders are placed.
$$\displaystyle 1 = \frac{a^n}{a^n} = a^{n-n} = a^0$$
<iframe width="560" height="315" src="https://www.youtube.com/embed/22UKITFZyQ0" frameborder="0" allowfullscreen></iframe>
The software programs developed require the use of specific key combinations on the BBC model B microcomputer. It is hoped that the design of the hardware will also be adaptable for use with the BBC Master series. The following areas are to be considered in this specification:
2.1 The overall key pad adaptor - the converter body to which individual key pads for the various games are fixed in order to act on the appropriate BBC keys.
2.2 The design of the individual key pad layouts.
2.3 The design of the key mechanisms.
2.4 The overall product image.
[[Would you like to know more?|3. Relevant Authorities to be Consulted]]
<<list-links "[tag[]]">>
<$tidgraph start="2010 BTEC" startat=1 maxdepth=1 />
<$tidgraph start="2010 Examples Unit 1 B" />
<$tidgraph start="2010 Examples Unit 1 C" />
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="4" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="2010 Examples Unit 1 D" maxdepth=<<depth>> />
</$set>
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="4" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
$$\displaystyle a^{-m}=\frac{1}{a^m}$$
So let's have a look with some simple numbers.
$$2^{-1}=\frac{1}{2^1}=\frac{1}{2}$$
$$6^{-4}=\frac{1}{6^4}$$
$$2^{-7}=\frac{1}{2^7}$$
3.1 The Local Education Authority advisor for computing should be consulted concerning the trials and use of this product in schools.
[[Would you like to know more?|4. Performance]]
$$a^m \times a^n=a^{m+n}$$
So let's have a look at some simple numbers.
$$3^2 \times 3^3$$
$$=(3 \times 3)(3\times 3\times 3)$$
$$=3\times 3\times 3\times 3\times 3$$
$$=3^5$$
Or....
$$3^2 \times 3^3=3^{2+3}=3^5$$
The software programs developed require the use of specific key
combinations. Each game requires a different keyboard configuration; the
specific BBC micro keys referenced by the software could be altered, but
this would be a major task and there would have to be very obvious
benefits to make it worthwhile
4.1 The money game, a basic mathematical game simulating the use of coins to pay for an ice cream, requires seven keys for different coin denominations: 1 p - ''*'', 2 p - ''L,'' 5 p - ''J'', 10 p ''G'', 20 p - ''D'', 50 p ''A'' and £1 ''CAPS LOCK''. Control/enter key - ''RETURN''
4.2 The snap game requires 2 large keys (Q and P).
4.3 The colour recognition /memory game requires four different coloured keys (5, 8, V and M), which the child has to press in a specific sequence. Additional software is being developed which will require the same four keys to be used in a directional mode (as cursor keys)
4.4 The music keyboard program allows the BBC micro to be used as a musical instrument with 16 white keys and 11 black keys (the third and second rows of the keyboard respectively). The whole key pad should be movable, to provide compatibility with other music software.
4.5 The keyboard layouts for sections 4.1-4.4 should be easily interchangeable.
4.6 The converter system should protect the BBC micro's keyboard from both damage and incorrect use as well as ensuring the correct location of the key pads.
4.7 The key action should not be able to exert a [[force|Force]] of more than $$30 N$$ on the BBC micro's keyboard.
4.8 The system must be able to cope with the school environment and all the associated use and abuse.
[[Would you liken to know more?|5. Ergonomics]]
$$a^m \div a^n=a^{m-n}$$
So let's have a look with some simple numbers.
$$3^5 \div 3^2=3^{5-2}=3^3$$
$$2^6 \div 2^5=a^{6-5}=2^1=2$$
$$4^4 \div 4^6=4^{4-6}=4^{-2}$$
5.1 The main aim of the system is to make the BBC keyboard easy to use by the 4-7 year-old age range.
5.2 The key pad layouts should be compatible with anthropometric data with the 4-7 year-old age range, that is, the span width and reach of the hands.
5.3. The key mechanisms should be compatible with the strength and dexterity of 4-7 year-olds. The force required to activate the keys should not be greater than 20 N.
5.4 The design of the keyboard converting system should allow for adult use.
5.5 Any instructions for use must bear in mind the ability of 4-7 year- olds to read and understand instructions and, recognise symbols.
[[Would you like to know more?|6. Aesthetics, Appearance and Finish]]
$$(a^m)^n=a^{mn}$$
So let's have a look with some simple numbers.
$$(3^2)^4=3^{2 \times 4}=3^{16}$$
$$(2^4)^2=2^{4 \times 2}=2^8$$
$$(5^5)^5=5^{5 \times 5}=5^{25}$$
6.1 The shapes, key sizes, colour, texture and overall image should be designed for the intended age range of users (4-7 years).
6.2 Teachers will ultimately decide whether or not the converting system should be bought and whether or not the children should use it, so the product must also appeal to teachers and appear suitable for its function.
6.3 The system should be aesthetically compatible with the BBC micro, this must be taken into account when selecting the colour, materials, textures and surface finishes.
6.4 The system must fit into both the school and home environments, hopefully being marketed for home use as well as school use.
6.5 Wooden keys would be preferred for the music keyboard, and the design of the converter body should be sympathetic to this requirement.
[[Would you like to know more? |7. Materials]]
$$a^{m/n}=\sqrt[n]{a^m}=(\sqrt[n]a)^m$$
So let's have a look with some simple numbers.
$$2^{3/4}=\sqrt[4]{2^3}=(\sqrt[4]2)^3$$
$$3^{3/5}=\sqrt[5]{3^3}=(\sqrt[5]3)^3$$
$$25^{1/2}=\sqrt[2]{25^1}=(\sqrt[2]25)^1=\sqrt25$$
7.1 Any materials used should be nontoxic, due to the contact with small children and school safety requirements
7.2 The materials selected must be durable i.e. have sufficient hardness and impact strength, resistance to abrasion and wear, good dimensional stability and resistance to corrosion and chemicals.
7.3 The materials should be easy to clean
7.4 The materials must have no adverse effects on the BBC micro system such as causing static or interference problems.
[[Would you liken to know more?|8. Quantity Scale of Production]]
8.1 The required production volume is 4000 to 10000 units, manufactured in batches of 100 to 1000 units.
!!Setup
#Draw the beam to scale with [[forces|Force]] etc.
#Find the reaction forces and [[UDL's|Uniformly Distributed Load]]. See [[10+1 steps to magic moments |10 + 1 Steps to Magic Moments]]. You should now know all the forces acting on your beam.
#Underneath the beam, leaving a suitable amount of space, draw two lines the same length and parallel to the beam. These will be the axis for your S.F and B.M diagrams.
#Draw ''faint'' construction lines down from where the forces act on your beam. This will help with drawing the S.F and B.M diagrams.
!!Shear Force (S.F.) Diagrams
#‘Walk’ along the beam from the left side. On your S.F axis Draw ↑&↓lines where you encounter forces.
#*If the first force is ↑& $$20 mm$$ from the left of the beam then draw a line ↑,at a suitable scale for the force, then continue along at the height just reached and move up or down at the next force.
#Continue until you reach the other end of the beam. You should find your self back at the axis.
!!Bending Moment (B.M.) Diagrams
#Start from the left of the beam and at each force take moments about it.
#*Take moments about one side (to the left OR the right) of each point.
#Plot the value on your B.M. axis.
#Join the dots.
#*Remember: Happy beams are positive, sad beams are negative :( (Not CW and ACW).
[[Would you like to know more?|S.F & B.M Presentation]]
9.1 Appropriate manufacturing processes should be selected for the scale of production.
9.2 The manufacturing processes selected should take account of the complexities of the design and the accuracy with which the component parts are to be assembled.
9.3 The manufacture of the overall product is intended to be contracted out to a manufacturer with the appropriate facilities.
9.4. The client would prefer the music keyboard to be manufactured from wood by CNC (computer numerically controlled) machining.
Use the slider to expand the tree
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="10" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="Table of Contents" maxdepth=<<depth>> />
</$set>
[[Part One|An introduction to Activity Based Costing]]
The following is taken from bluefinsolutions.com which is now no longer trading or able to be accessed on the web.
!!Table 1: Contribution by Customer
|| !Customer A | !Customer B | !Total|
|Revenue | £ 9,500.00 | £ 12,000.00 | £ 21,500.00 |
|Cost of Sales<<HelpButton h2>>| £ 6,000.00 | £ 7,000.00 | £ 13,000.00 |
|Contribution<<HelpButton h1>> | £ 3,500.00 | £ 5,000.00 | £ 8,500.00 |
Here, I’m going to run through a simple example to illustrate how an accurate understanding of activities is important to fully and fairly understand profitability by customer.
For simplicity’s sake, the example deals with a business that has just two customers. They know their cost of sales for each customer, and the revenue of course. So that gives them an accurate figure for the contribution.
They also have a known amount of overhead costs – £6,500 – that need to be allocated to the two customers to get a complete view of customer profitability. Without any better method, suppose they choose to allocate it in the same proportion that the Cost-of-Sales is already divided.
!!Table 2: Apportioned Overheads<<HelpButton h4>>
|| !Customer A | !Customer B | !Total|
|Revenue | £ 9,500.00 | £ 12,000.00 | £ 21,500.00 |
|Cost of Sales | £ 6,000.00 | £ 7,000.00 | £ 13,000.00 |
|Contribution | £ 3,500.00 | £ 5,000.00 | £ 8,500.00 |
|Overheads<<HelpButton h3>> | £ 3,000.00 | £ 3,500.00 | £ 6,500.00 |
|Profit/ Loss | £ 500.00 | £ 1,500.00 | £ 2,000.00 |
This suggests that Customer B is more profitable than Customer A.
The problem is that we allocated the overheads in a pretty arbitrary way, and gave no consideration to what’s causing those overhead costs.
We should be thinking about what would make one customer more costly to deal with than another. And it would be because the way we interact with them, and they interact with us, causes us to do different amounts of work. If it takes half as many sales calls to get Customer A’s business as it does to get Customer B’s, then we ought to reflect that, and we ought to assign proportionately more of the cost of making those calls to Customer B. Similarly, if Customer B places an order with us weekly and Customer A places their orders monthly, then Customer B ought to be taking the lion’s share of the cost of processing orders.
So let’s suppose that the activities that we carry out in order to serve our customers are as follows:
*Make sales calls
*Process orders
*Pick and pack
*Ship
*Make credit control calls<<HelpButton h5>>
First, we need to evaluate the cost of each Activity. In order to do that, we have to reintroduce our first ABC principle - Activities consume resources.
So let’s think about our resources. In this example, we’re going to make it really simple and assume that the only resources that we have are staff and buildings. Let’s suppose that we’ve paid £2,500 in terms of staff costs, and £4,000 in terms of building costs. Because, according to our principle above, activities consume resources, we can apportion our resources to our activities, and we’re going to do this by using measures called “resource drivers”, which are measures of the resource that we want to apportion.
We pick a resource driver according to data that is available or measurable in our organisation. In this example, we’re going to apportion staff costs using the resource driver “FTE<<HelpButton h6>>”, and building costs using the resource driver “Floor Area”.
Let’s summarise this in Table 3.
!!Table 3: Resource Drivers and Costs<<HelpButton h7>>
| !Resource | !Resource Driver | !Resource Cost |
|Staff | FTE | £ 2500 |
|Building | Floor Area | £ 4000 |
We’ll deal with staff costs and building costs separately: staff costs first.
We’re using FTE to allocate the £2,500 cost of staff to activities, so we need to collect the number of FTEs dedicated to each activity. We won’t go into how we extract this data, we’ll just assume that it’s available in the organisation somewhere, or we can undertake a survey or other exercise to get it. Either way, the FTE data is shown in the second column of Table 4. The £2,500 is then allocated to the same activities in the same proportion, giving the results in the third column of Table 4.
!!Table 4: Allocation of Staff Costs Based on FTE<<HelpButton h8>>
| !Activity | !FTE | !Activity Cost |
|Make Sales Calls | 2 |£ 500.00 |
|Process Orders | 1 |£ 250.00 |
|Pick and Pack | 2 |£ 500.00 |
|Ship | 3 |£ 750.00 |
|Bill Chasing | 2 |£ 500.00 |
|Total| 10 |£ 2,500.00 |
So we now know what each activity costs in terms of the staff resource, and we can do something similar for the building costs. Building costs have to be allocated to activities too, but in this case we’re using a different resource driver – floor area.
Table 5 shows the allocation of £4,000 of building costs to the same activities, but this time in different proportions, the proportions being determined by the floor area dedicated to each activity. (The “Pick and Pack” activity gets a larger share of the building costs than it did of the staff costs, for example.)
!!Table 5: Allocation of Building Costs Based on Area<<HelpButton h9>>
|!Activity | !Floor Area (m^^2^^) | !Activity Cost |
|Make Sales Calls | 8 |£ 400.00 |
|Process Orders | 9.4 |£ 470.00 |
|Pick and Pack | 14 |£ 700.00 |
|Ship | 33 |£ 1,650.00 |
|Bill Chasing | 15.6 |£ 780.00 |
|Total | 80 |£ 4,000.00 |
Finally, we can summarise the activity costs from Table 4 and the activity cost from Table 5 to give us a total activity costs for each activity, as shown below in Table 6.
!!Table 6: Total Activity Cost by Activity
|!Activity | !Total Activity Cost |
|Make Sales Calls |£ 900.00 |
|Process Orders |£ 720.00 |
|Pick and Pack |£ 1200.00 |
|Ship |£ 2,400.00 |
|Bill Chasing |£ 1280.00 |
|Total |£ 6,500.00 |
Now that we know the cost of each activity, we can calculate the cost of each product, customer or channel, based on the second principle of activity-based costing - Customers, products and channels consume activities.
If you remember, we have two customers, named “Customer A” and “Customer B”. We need to decide the basis on which we’re going to split these activity costs between the customers. Let’s say that we’ll split “Make Sales Calls” according to the number of sales calls, and “Make Credit Control Calls” based on the number of credit control calls. The other three activities we will split according to the number of orders. These measures that we use to split activities to cost objects are known as “Activity Drivers”.
In Table 7, we reproduce the activity costs from Table 6, and for each activity we also show the name of driver that we’re going to use to allocate the activity’s costs, and the values of that driver for each customer.
!!Table 7: Activity Cost and Activity Driver Volumes<<HelpButton h10>>
| !Activity | !Total Activity Cost | !Activity Driver | !Customer A | !Customer B | !Total|
|Make Sales Calls |£ 900.00 | No. of sales calls | 18 | 12 | 30 |
|Process Orders |£ 720.00 | No. of orders | 10 | 50 | 60 |
|Pick and Pack |£ 1,200.00 | No. of orders | 10 | 50 | 60 |
|Ship |£ 2,400.00 | No. of orders | 10 | 50 | 60 |
|Bill Chasing |£ 1,280.00 | No. of Bill Chases | 0 | 12 | 12 |
In Table 8, we can see how each activity’s costs are allocated to customers, based on the activity drivers from Table 7. The costs allocated to Customer B are significantly more than those allocated to Customer A, because Customer B is placing a significantly larger numbers of orders, and because all our credit control checks are to Customer B.
!!Table 8: Activity Costs by Customer<<HelpButton h11>>
| !Activity | !Customer A | !Customer B | !Total |
|Make Sales Calls |£ 540.00 |£ 360.00 |£ 900.00 |
|Process Orders |£ 120.00 |£ 600.00 |£ 720.00 |
|Pick and Pack |£ 200.00 |£ 1,000.00 |£ 1,200.00 |
|Ship |£ 400.00 |£ 2,000.00 |£ 2,400.00 |
|Bill Chasing |£ 0.00 |£ 1,280.00 |£ 1,280.00 |
|Total |£ 1,260.00 |£ 5,240.00 |£ 6,500.00 |
So finally we can calculate the profitability of each customer by combining the total activity costs by customer from Table 8 with the contribution costs from Table 1. This is shown below in Table 9.
!!Table 9: Profit and Loss by Customer<<HelpButton h12>>
|| !Customer A | !Customer B | !Total |
|Revenue |£ 9,500.00 |£ 12,000.00 |£ 21,500.00 |
|Cost of Sales |£ 6,000.00 |£ 7,000.00 |£ 13,000.00|
|Contribution |£ 3,500.00 |£ 5,000.00 |£ 8,500.00|
|Cost to Serve | £1,260.00 |£ 5,240.00 |£ 6,500.00|
|Profit/ Loss |£2,240.00 |-£ 240.00 |£ 2,000.00 |
Contrary to what Table 2 told us, Table 9 is showing not only that Customer B is less profitable for us, but that it’s actually loss-making. The difference is that Table 9 has applied an activity-based approach, whereas in Table2 we apportioned the overheads in the same proportion as the cost of sales.
It’s easy to make the assumption that our “best” customers are the ones that we sell most to, like “Customer B” in the examples above. But this can be very misleading if we don’t take into account what we have to do to serve our customers, and if we don’t have a sensible way to quantify the cost of what we have to do.
Besides customer and product profitability, the activity-based approach to costing generates results that are useful in many other areas of management. In subsequent blogs in this series, I’ll discuss some of the use cases, as well as using SAP’s Profitability and Cost Management software to bring the theory into reality.
More explanation available here:
{{Unit 4 Assessment 2 Lesson 2}}
This wiki is a non linear, work in progress, textbook for students on the BTEC Diploma and Extended Diploma in Engineering at level 3.
It started life mainly concerned with the following units from the 2010 BTEC Extended Diploma Specification:
*[[Unit 5 Mechanical Principles]]
*[[Unit 11 Further Mechanical Principles]]
*[[Unit 14 Principles and Applications of Thermodynamics]]
Which have now largely been replaced by
*[[Unit 1 :Engineering Principles|New BTEC Unit 1 Spec]]
from the [[2016 Specification|https://qualifications.pearson.com/en/qualifications/btec-nationals/engineering-2016.html]].
This wiki has been created by [[Stephen Wilson|Ste.W]].
If you want to use this for your course feel free but drop me a line to let me know, I'm just curious to know who's using this resource. I also welcome any feedback, suggestions or contributions.<br>
!!Acknowledgements
This Wiki is running on tiddlywiki and you can download your own to get started with at [[http://tiddlywiki.com]] (It's amazing!)
And also to the great people over at [[google groups|https://groups.google.com/forum/#!forum/TiddlyWiki]] who have helped massively with code and filters and stuff.
Many thanks to my predecessor Colin Patrick whose notes have often been the foundation from which tiddlers have been built.
Douglas Adams, the [[obvious inspiration|Hitchhikers Quote]] for my [[default|WELCOME]] tiddler.
Go, buy and read the books, or listen to the radio play [[here|https://www.amazon.co.uk/Hitchhikers-Guide-Galaxy-Douglas-Adams/dp/0330508539/ref=sr_1_2?ie=UTF8&qid=1462878914&sr=8-2&keywords=hitchhikers+guide+to+the+galaxy]] (other outlets are available) or go play the 80s text adventure hosted on the Beeb [[here|https://downloads.bbc.co.uk/interactive/embed/container.html?url=//downloads.bbc.co.uk/interactive/h2g2/main.js&height=577px&width=944px&path=//downloads.bbc.co.uk/radio/games/h2g2/]].
Robert A. Heinlein, or at least the film adaptation of his book [[Starship Troopers|https://www.amazon.co.uk/s/ref=nb_sb_ss_c_0_8?url=search-alias%3Daps&field-keywords=starship+troopers&sprefix=Starship%2Caps%2C211]] is the source for the 'Would you like to know more?'.
!!Other Sources
*Basic Engineering Thermodynamics in SI Units by Rayner Joel.
*Applied Mechanics by Titherington and Rimmer.
*Advanced Design and Technology by Eddie Norman, Joyce Riley, Syd Urry and Mike Whittaker.
*http://www.freestudy.co.uk/
*http://www.roymechx.co.uk/
<br>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons Licence" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/InteractiveResource" property="dct:title" rel="dct:type">05/2015 Engineering BTEC Tiddlywiki</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://stephenteacher.tiddlyspot.com/#Ste.W" property="cc:attributionName" rel="cc:attributionURL">Stephen Wilson</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
This is simply the sum of the [[gauge pressure|Gauge Pressure]] and the [[atmospheric pressure|Atmospheric Pressure]].
$$\text{Absolute Pressure} = \text{Gauge pressure} + \text{atmospheric pressure}$$.
Absolute zero is the coldest you can get. At this temperature there is no energy left to take from the atoms in the solid.
(This is true unless we are looking at [[bleeding edge physics|http://www.livescience.com/25959-atoms-colder-than-absolute-zero.html]] in which case the world gets even stranger.)
Absolute zero is $$-273.15^{\circ}C$$ though the value of $$-273$$ is usually used. It is the starting point for the [[Kelvin]] scale of temperature measurement.
Acceleration is the [[rate of change|Rate of Change]] of [[velocity|Velocity]].<br> The quicker your velocity changes the higher your acceleration.
If your car goes from 0-60 in 2 seconds it's velocity changes much more rapidly than my old Skoda <<richlink "https://en.wikipedia.org/wiki/Škoda_Favorit">> which went from 0-60 eventually. <br>
The first car has better acceleration.
{{||$:/template : equation}}
{{||$:/template : variable}}
Everything falls at the same [[speed|Speed]].
More specifically everything falls at the same speed without air resistance.
To put it more scientifically: In a vacuum everything falls at the same speed.
On earth this speed is $$9.81m/s^2$$ and is the rate at which things [[accelerate|Acceleration]] when falling.
Symbol: $$\ce{C2H2}$$
A hydrocarbon gas of formula $$\ce{C2H2}$$, formed by reacting calcium dicarbide $$(\ce{CaC2})$$ with water.
$$\ce{CaC2 + 2H2O → C2H2 + Ca(OH)2}$$
Its IUPAC systematic name is ethyne.
Its main use is in forming a very hot flame when burnt in oxygen. This is the basis of oxy-acetylene (fusion) welding.
\define notesTiddler() $(currentTiddler)$: Notes
\define notesTags() [[$(currentTiddler)$]] Notes
<$button class="tc-btn-invisible" popup=<<qualify "$:/temp/notesTiddler">> tooltip="Add notes"><$action-setfield $tiddler=<<notesTiddler>> tags=<<notesTags>>/>{{new_notes_icon.svg}}</$button>
<$reveal state=<<qualify "$:/temp/notesTiddler">> type="popup" text="" position="above" default="" class="tc-popup-keep tc-block-dropdown">
<div class="container_notes">
<div class="close_note">
<$button class="tc-btn-invisible">
<$action-deletetiddler $tiddler=<<qualify "$:/temp/notesTiddler">> />
X</$button>
</div>
<div class="heading_note" >
<$view tiddler=<<notesTiddler>> field="title" />
</div>
<div style="clear: both;" ></div>
</div>
<div class="container_notes">
<div>
<$edit-text class="notes" tiddler=<<notesTiddler>> default="" tag="textarea" />
</div>
</div>
</$reveal>
A change, usually in a gas, that does not involve the transfer of heat.
For example the expansion of a gas in a car engine cylinder after ignition. Because it happens so quickly the amount of heat that could be transferred to the cylinder walls is said to be zero.
Adiabatic process only happen to [[ideal gasses|Ideal Gas]]
This is of course makes it a lie.
The assumption is made to help us simplify thinking about the process.
In the [[polytropic process|Polytropic Equation]] the power '$$n$$' is replcaed by $$\gamma$$ for an adiabatic change and is called the ''Adiabatic Index''.
Values can be found [[here|Properties of Gasses: Thermodynamic]]
$$\gamma$$ can be found by:
{{||$:/template : equation}}
The following tiddlers are taken from Advanced Design and Technology by Eddie Norman, Syd Urry, Joyce Riley and Mike Whittaker
All tiddlers taken from the book are tagged ''Advanced Design and Technology'' or ''ADT''
<<list-links "[tag[Advanced Design and Technology]]">>
<<list-links "[tag[ADT]]">>
{{||$:/template : greek}}
Readily machined, preferably using carbide tooling. Lathe cutting may be done dry, unless heavy cuts are made in which case oil lubricants may be used. Cutting tools should have large rake angles (top and side), similar to tooling for the cutting or machining of high speed steels. Readily welded by commercial techniques such as electric resistance, inert arc, gas welding with inert-gas shielded arc preferred. Filler metal of Aluminum 1100 alloy should be used. If welding AL 1100 to a higher alloyed aluminum alloy, such as 6063 or 5052 then the filler rod should be Aluminum 4043 alloy
The ''ampere ''or ''amp'' for short is unit of [[current|Current]]
The following is taken from bluefinsolutions.com which is now no longer trading or able to be accessed on the web.
An introduction to Activity Based Costing
In this blog post series I’ll be talking about a technique that you can use to evaluate the profitability of your organisation’s products and customers. The technique is designed to reflect the true cause-and-effect of how cost is incurred. For instance, a customer that causes you to do twice as much activity ought to be allocated twice the cost.
For this to work, you’ll need to understand the activities that your business carries out, and for this reason the technique is known as activity-based costing.
First principles
At the risk of insulting your intelligence:
Businesses provide products to customers, and
Businesses are measured on their profitability.
Starting from those first principles, it’s clear that a well-run company has to be able to understand and measure the profitability of its products, customers and channels. With this information, it can understand which products, customers and channels are most beneficial to the business, and which are holding it back. It can then take action. The goal is either to ditch the unprofitable, or – even better – to do something to make them profitable.
*A quick bit of terminology: I’m going to use the term “cost object” which basically means something to which cost is assigned. In the context of this post, it will refer to refer to something that the business produces or supplies. And really it’s just a quick, generic way of referring to a product, customer or channel*
Cost, revenue and profitability
So let’s think about calculating profitability for a given cost object. Well, the revenue side of the equation should be very easy. One way of getting the revenue by cost object is to simply pull it off the sales orders, or whatever the equivalent is in the business. If you can’t accurately get your revenue by product, customer and channel, you probably have deeper problems that you should address first.
So assuming that you can source the revenue data, it’s time to look at the trickier side of the equation: costs. You probably know (I hope) your resource costs, but you probably don’t know them by cost object.
The cost allocation problem
The difficulty comes in allocating the costs of the business’ resources to its outputs, and doing it fairly. It’s usually pretty easy to attribute direct costs, such raw materials, directly to the appropriate cost objects, but with overheads it’s harder. It’s not harder to do it per se, but it is harder to do it fairly.
Accurate allocation of non-attributable costs has become more important as the make-up of the overall cost base has changed. Nowadays organisations spend a larger proportion of their money of functions such as IT, Sales, Marketing, and all the other support costs. Some of these functions increase the efficiency of the rest of the business; others, such as good customer service, provide a competitive edge. Furthermore, plenty of the activities that the business performs are there to turn the business’s inputs into more valuable outputs. So it’s important, in order to understand the cost of the business’ outputs, that these costs are fairly apportioned to those outputs, and increasingly so as the proportion of indirect costs increases.
Even when the proportion of indirect costs is relatively low compared to the direct costs, the method for allocating indirect costs to outputs can make a material difference. In businesses where margins are tight, an inaccurate allocation of indirect costs, even if it’s a relatively small fraction of the total costs, can result in a product or customer being incorrectly rated as profitable or unprofitable.
Cause and effect
When a customer interacts with a business, they cause it to run up costs, and the way in which they interact with the business changes the level of those costs. For example, a customer that pays its invoices promptly incurs less cost than one that needs to be constantly chased up. A customer that orders one item a week is more expensive to serve that one that orders 52 items once a year, even though their annual order is for the same volume and value.
Or, consider products: if two products are sold, and one of these products is the subject of 90% of the calls to the customer service desk, it makes sense to allocate 90% of the cost of customer service activities to the difficult product.
This is about cause-and-effect. Its customers and products that cause a business to carry out the activities that they do, and it’s these activities that cause them to use resources (such as employees, our internal services, building costs, power, and so on and so on).
Activity-Based Costing in two bullets
This leads us to two important principles, which are the backbone of activity based costing (ABC).
Activities consume resources
Customers, products and channels consume activities.
In activity-based costing, rather than allocate directly from resources to outputs, a two-stage allocation process is performed. In the first stage we the resource costs are allocated to activities, and in the second the activity costs are allocated to outputs. This reflects the principles that its activities that consume resources, and its customers, products and channels that consume activities.
This shows that, if a business wants to properly cost products and customers, it needs to:
Understand the stuff it does
Quantify the cost of what it does
Understand how its products and customers makes it do stuff.
Reaping the benefits of Activity-Based Costing
A lot of useful information comes out of the activity-based approach. Initially, you can start to understand the true profitability of the customers that you serve, the products that you create, and the channels that you use. You can then start to use that information to do things like set pricing, to negotiate with customers and to make build-or-buy decisions; you can look at the activity costs to identify and quantify work that doesn’t add value; you can look at internal service departments to set prices for shared services like IT; you can carry out benchmarking and identify best practice within the organisation.
In subsequent blog posts in this series, I’ll work through an example to illustrate these principles, and see how an activity-based approach gives us a very different view of profitability. I’ll then have a look at some of the application areas that the approach can help with, and finally SAP’s Profitability and Cost Management software, discussing the advantages of using a specialist software solution to implement ABC.
Costing
Traditional Costing Vs. Activity-Based Costing
Companies need accounting systems to track the costs of their operations. Two of the most commonly used systems are traditional costing and activity-based costing. One of these is easy to use and inexpensive to implement, while the other costs more to use but gives you greater accuracy.
Traditional Costing
Traditional costing adds an average overhead rate to the direct costs of manufacturing products. The overhead rate gets applied on the basis of a cost driver, such as number of labor hours required to make a product.
Pros and Cons of Traditional Costing
Traditional costing is best used when the overhead of a company is low compared to the direct costs of production. It gives reasonably accurate cost figures when the production volume is large, and changes in overhead costs do not create a substantial difference when calculating the costs of production. Traditional costing methods are inexpensive to implement.
Companies usually use traditional costing for external reports, because it is simpler and easier for outsiders to understand. However, it does not give managers an accurate picture of product costs because the application of overhead burden rates is arbitrary and applied equally to the cost of all products. Overhead costs are not allocated to the products that actually consume the overhead activities.
The traditional costing method is best used for manufacturers that only make a few different products.
Activity-Based Costing
Activity-based costing identifies all of the specific overhead operations related to the manufacture of each product. Not all products require the support of all overhead costs, so it is not reasonable to apply the same overhead costs to all products.
Accountants created the ABC method to solve the problems of inaccuracy that result from the traditional costing approach. Managers needed more accurate costing methods to determine which profits were actually profitable and which were not.
A fundamental difference between traditional costing and ABC costing is that ABC methods expand the number of indirect cost pools that can be allocated to specific products. The traditional method takes one pool of a company's total overhead costs to allocate universally to all products.
Pros and Cons of Activity-Based Costing
Activity-based costing is the most accurate, but it is also the most difficult and costly to implement. It is more suited to businesses with high overhead costs that manufacture products, rather than companies that offer services. Companies that manufacture a large number of different products prefer an activity-based system because it gives more accurate costs of each product. With activity-based allocation of overhead costs, it is easier to identify areas where expenses are being wasted on unprofitable products.
Deciding between traditional or activity-based costing is not easy. Your choice should depend on the purpose of the reporting and who will see the information. Managers need accurate product costs and prefer to use an activity-based accounting system. Even though this system is more costly, it provides better information that will enable managers to make more profitable decisions in the long-term. For external reporting, companies still use the traditional costing system, but it is becoming obsolete as outsiders demand more accurate information about businesses.
[[Part 2|A Worked Example for Activity Based Costing]]
1. Sketch the [[vector|Vectors]] and label it up.
2. Draw the other two sides of the triangle.
[[Would you like to know more?|Analytical Resolution of Forces Step 1 & 2]]
3. Use [[sine|Trig Cheat Sheet]] to find the vertical.
4. Use [[cosine|Trig Cheat Sheet]] to find the horizontal.
[[Would you like to know more?|Analytical Resolution of Forces Step 3 & 4]]
If the [[vector|Vectors]] is 4kN @ $$30^\circ$$ ACW up from the horizontal.
[img[http://steacher.droppages.com/diagrams/Analitic_Vectors_2.svg]]
[[Would you like to know more?|Analytical Resolution of Forces Step 3 & 4]]
[img[http://steacher.droppages.com/diagrams/Analitic_Vectors_2.svg]]
@@.no-border
| 3. Use sine to find the [[vertical|Vertical Component]].<br><br>$$\sin\theta=\frac{\text{opp}}{\text{hyp}}$$<br><br>$$\sin30=\frac{\text{opp}}{\text{hyp}}$$<br><br>$$\sin30=\frac{y}{4\times 10^3}$$<br><br>$$0.5=\frac{y}{4\times 10^3}$$<br><br>$$y=0.5\times {4\times 10^3}$$<br><br>$$y=2\times 10^3N$$<br><br>or $$2kN$$ | 4. Use cosine to find the [[horizontal|Horizontal Component]].<br><br>$$\cos\theta=\frac{\text{adj}}{\text{hyp}}$$<br><br>$$\cos30=\frac{\text{adj}}{\text{hyp}}$$<br><br>$$\cos30=\frac{y}{4\times 10^3}$$<br><br>$$0.866=\frac{y}{4\times 10^3}$$<br><br>$$y=0.866\times {4\times 10^3}$$<br><br>$$y=3.464\times 10^3N$$<br><br>or $$3.464kN$$ |
@@
[[Horizontal|Horizontal Component]] and [[vertical|Vertical Component]] components of a force can be combined back into a single vector called the [[resultant|Resultant]].
<center>
[img[http://steacher.droppages.com/diagrams/Resultant_1.svg]]</center><br>
!!Step 1
Arrange the vectors so they are head to tail. This is just a sketch to help you work through the problem and doesn't have to be drawn to scale. Remember we are solving this using [[trig|Trigonometry]].
<center>
[img[http://steacher.droppages.com/diagrams/Resultant_2.svg]]</center><br>
(The 7N could have moved to the end of the 5N)
!!Step 2
Apply Trig. Remember a vector has a [[magnitude|Magnitude]] and a direction.
This means we need to find the ''angle'' and the ''size''.
The angle we want is the one at the start of the vector (opposite end to the arrow head).
!!Step 3
We know the adjacent and opposite sides son use Tangent to find the angle.
$$\displaystyle \tan \theta =\frac{opp}{adj}$$
$$\displaystyle \tan \theta =\frac{5}{7}$$
$$\displaystyle \tan \theta =0.714$$
$$\theta=\tan^{-1}0.714$$
$$\theta=45.58^\circ$$
!!Step 4
We can use Pythagoras to find the hypotenuse.
$$c^2=a^2+b^2$$
$$c^2=7^2+5^2$$
$$c^2=49+25$$
$$c^2=74$$
$$c=\sqrt{74}$$
$$c=8.6N$$
If there are more than two vectors these need to be resolved into vertical and horizontal components and then added together to give to total horizontal and vertical before the resultant can be found.
Use [[Maths|Trigonometry]]
This is using trigonometry and calculations in order to determine the [[vectors|Vectors]], usually [[forces|Force]], in a system.
[[Vectors]] may be [[resolved|Resolve]] or the [[resultant|Resultant]] found using these methods.
Not to be confused with [[angels|https://youtu.be/luwAMFcc2f8]].
Angles are a measure of a distance around the centre point of a circle.
Angles are measured in..
|!Name|Symbol|No. In a circle|
|[[Degrees|http://www.mathsisfun.com/geometry/degrees.html]]|°|360|
|[[Radians|http://www.mathsisfun.com/geometry/radians.html]]|Rad|$$2\pi$$ (6.28...)|
|[[Gradian|https://en.m.wikipedia.org/wiki/Gradian]]|gon|400|
The [[SUVAT]] equations are the four equations commonly used in calculations involving bodies moving in a straight line. For Angular Motion the equations are essentially the same but the letters are changed.
Where:<br>
$$\theta=$$[[Angular Displacement]]<br>
$$u=$$[[Initial Angular Velocity|Angular Velocity]]<br>
$$v=$$[[Final Angular Velocity|Angular Velocity]]<br>
$$a=$$[[Angular Acceleration]]<br>
$$t=$$[[Time]]<br>
[[Would you like to know more?|Angular 'SUVAT' Equations]]
The four equations commonly used for the movement of rotating bodies are:<br><br>
[[First Angular 'SUVAT' Equation]]
<center>
<div class="katex-display">
$$\displaystyle \omega_2=\omega_1+\alpha t$$
</div>
</center>
[[Second Angular 'SUVAT' Equation]]
<center>
<div class="katex-display">
$$\displaystyle \theta= \frac{(\omega_2+\omega_1)t}{2}$$
</div>
</center>
[[Third Angular 'SUVAT' Equation]]
<center>
<div class="katex-display">
$$\theta=\omega_1 t+\frac{1}{2}\alpha t^2$$<br>
</div>
</center>
[[Fourth Angular 'SUVAT' Equation]]
<center>
<div class="katex-display">
$$\omega_2^2=\omega_1^2+2\alpha \theta$$
</div>
</center>
Where:<br>
$$\theta =$$[[Displacement]]<br>
$$\omega_1=$$[[initial velocity|Velocity]]<br>
$$\omega_2=$$[[final velocity|Velocity]]<br>
$$\alpha=$$[[acceleration|Acceleration]]<br>
$$t=$$[[time|Time]]<br>
This is a change in the [[velocity|Angular Velocity]] something spins at.
In more technical terms it is the [[rate of change|Rate of Change]] of [[angular velocity|Angular Velocity]]
It is represented by the Greek lower case letter [[Alpha]] $$\alpha$$
{{||$:/template : equation}}
{{||$:/template : variable}}
The distance something spinning travels around a circle.
This can be partially round or multiple times round a circle.
{{||$:/template : variable}}
The number of times something spins per second
{{||$:/template : equation}}
{{||$:/template : variable}}
!Angular Velocity
$$\omega =2 \pi n$$
Where:
n=revolutions per second
If revs given in rpm:
$$\displaystyle n=\frac{\text{rpm}}{60}$$
For constant rotation:
$$\displaystyle \omega =\frac{\theta}{t}$$
Where:<br>
$$\theta =$$ Angular Displacement in $$\text{rads}$$<br>
!Linear Velocity
$$\displaystyle v=r \omega$$
$$\displaystyle v=\frac{r \theta}{t}$$
!SUVAT for angular motion
$$\omega_2=\omega_1+\alpha t$$
$$\displaystyle \theta=\frac{(\omega_1+\omega_2)}{2} \times t$$
$$\theta=\omega_1 t+\frac{1}{2} \alpha t^2$$
$$\omega_2^2=\omega_1^2+2 \alpha \theta$$
Where:<br>
$$\theta =$$ Angular Displacement in $$\text{rads}$$<br>
$$\omega_1=$$ Initial Angular Velocity in $$\text{rads}/s$$<br>
$$\omega_2=$$ Final Angular Velocity in $$\text{rads}/s$$<br>
$$\alpha=$$ Angular acceleration in $$\text{rads}/s^2$$<br>
$$t=$$ time in $$s$$
!Centripetal....
!!Acceleration
$$=\displaystyle \frac{v^2}{r}$$
$$=\omega^2 r$$
!!Force
$$=m \omega^ 2r$$
!Torque
$$T=Fr$$
!!Work
$$W=Fr \theta$$
$$W=T \theta$$
!!Power
$$P=T \omega$$<br>
Where:<br>
$$\theta =$$ Angular Displacement in $$rads$$<br>
$$v=$$ Linear velocity in $$m/s$$<br>
$$\omega=$$ Angular Velocity in $$\text{rads}/s$$<br>
$$r=$$ Radius in $$m$$<br>
$$m=$$ Mass in $$kg$$<br>
$$T=$$ Torque in $$Nm$$<br>
$$F=$$ Force (tangential to the shaft) in $$N$$<br>
$$W=$$ Work in $$J$$<br>
$$P=$$ Power in $$W$$
!Friction Torque & Bearing Friction
$$F=\mu m g$$
$$T_f=\mu m gr$$
$$T=T_f+I \alpha$$
Where:<br>
$$m=$$ Mass in $$kg$$<br>
$$\mu=$$ Coefficient of friction<br>
$$g=$$ Acceleration due to gravity in $$m/s$$<br>
$$T_f=$$ Frictional torque in $$Nm$$<br>
$$I=$$ Moment of inertia in $$kg\space m^2$$<br>
!Power Transmitted (Break Power)
Torque on Shaft
$$T=(W-S)r$$
$$P=(W-S)r \omega$$
Where:
$$T=$$ Torque in $$Nm$$<br>
$$W=$$ Dead weight in $$N$$<br>
$$S=$$ Spring balance reading in $$N$$<br>
$$\omega=$$ Angular Velocity in $$\text{rads}/s$$<br>
$$r=$$ Radius of shaft in $$m$$
!Linear to Angular....
!!Acceleration
$$a=\alpha r$$
!!Distance
$$\displaystyle \theta=\frac{s}{r}$$
!Accelerating Torque
$$T=mk^2 \alpha$$
$$I=mk^2$$
!Rotational KE
$$KE=\frac{1}{2}I \omega^2$$
Where:
$$a=$$ Linear acceleration in $$m/s^2$$<br>
$$\alpha =$$ Angular acceleration in $$\text{rads}/s^2$$<br>
$$\theta=$$Angular displacement in $$\text{rads}$$<br>
$$s=$$Linear distance moved in $$m$$<br>
$$r=$$radius in $$m$$<br>
$$T=$$ Torque in $$Nm$$<br>
$$I=$$ Moment of inertia in $$kg\space m^2$$<br>
$$k=$$ Radius of gyration in $$m$$<br>
The speed at which something spins at. The faster it spins the higher the angular velocity.
In [[dynamic|Dynamics/ Kinematics]]/ [[kinematic|Dynamics/ Kinematics]] problems it is represented by a letter $$\omega_1$$ for [[initial angular velocity|Initial Angular Velocity]] and by $$\omega_2$$ for [[final angular velocity|Final Angular Velocity]].
For a ''constant rotation'' speed:
{{||$:/template : equation}}
{{||$:/template : variable}}
The amount of space something takes up in two dimensions e.g. a piece of paper or a football pitch or the surface of a sphere.
{{||$:/template : variable}}
```
$$\dfrac {\pi d^2}{4}$$
```
<iframe src="http://docs.google.com/gview?url=http://www.mathcentre.ac.uk/resources/uploaded/mc-ty-apgp-2009-1.pdf&embedded=true" style="width:100%; height:500px;" frameborder="0"></iframe>
<span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.mathcentre.ac.uk/resources/uploaded/mc-ty-apgp-2009-1.pdf" style=" color:#818181; font-size:13px;" target="_blank">{{!!title}}</a> by <a href="http://www.mathcentre.ac.uk/" style=" color:#818181; font-size:13px;" target="_blank">Mathcenter</a></span>
A [[sequence|Sequence]] where the difference is the same between each term.
e.g.
$$1, 2, 3, 4, 5, 6, 7, 8...$$
$$2, 4, 6, 8, 10, 12, 14...$$
The dots mean these go on forever...
<$graph color='["black","yellow"]' minX="0" minY="0">
2*x
[ [1,2],[2,4],[3,6],[4,8],[5,10],[6,12] ]
</$graph>
$$5, 10, 15, 20, 25, 30, 35, 40$$
This however is the full sequence. In this case we aren't interested in the rest of the numbers that could be in this sequence.
[[Would you like to know more?|Arithmetic Progression Cheat Sheet]]
!!Number of terms between first an $$n_{th}$$ term:
$$l=a+(n-1)d$$
Where:
$$l$$ = last term.
$$a$$ = first term.
$$n$$ = number of terms inbetween.
!!To find any term (the $$n_{th}$$):
$$n_{th}=a+d(n-1)$$
Where:
$$n$$ = number of term (i.e. 5th term or 68th term)
$$a$$ = first term.
$$d$$ = difference between terms.
!!To sum the series for the first $$n$$ terms:
$$S_n=\frac{1}{2}n(2a+(n-1)d$$
Where:
$$n$$ = number of term (i.e. 5th term or 68th term)
$$a$$ = first term.
$$d$$ = difference between terms.
!!To sum the series when the last term is known:
$$S_n=\frac{1}{2}n(a+l)$$
Where:
$$n$$ = number of term (i.e. 5th term or 68th term)
$$a$$ = first term.
$$l$$ = last term.
[[Would you like to know more?|Arithmetic and Geometric Progression]]
|!Advise|Requires you to help somebody reach a decision through a mixture of facts, opinions, commands and options.|
|!Account for|Give reasons for|
|!Analyse|Look closely at the detail; give reasons why or how something is done and the effect of this - use P.E.E/ P.E.A paragraphs which help you to back up your points with evidence and explain your thoughts.|
|!Argue|Put forward a point of view in a structured and reasoned way - usually one sided but takes account of other points of view. Support or reject a position by presenting reasons and evidence (using references) for each solution|
|!Calculate|Work out.../Marks are usually awarded for both the process and outcome.|
|!Combine|Put together...|
|!Comment on...|Explain why something is significant. This requires you to analyse and evaluate in a balanced way. Give your opinions or point of view, with reasons.|
|!Compare|Looking closely at two or more things which have something in common in order to see how they are the same and how they are different. This is looking for an analytical response-P.E.A paragraphs could be used.|
|!Complete|Finish in full.|
|!Consider|Discuss from all angles/ analyse.|
|!Contrast|Often used with 'compare'; look at the differences of two or more things.|
|!Describe...|A detailed account. More simply- Write down... Tell the examiner in your own words what/ how/ or why something happens; must use words precisely (in scientific subjects this means using scientific terms).|
|!Describe in detail|Will often be linked to more marks and therefore you will be required to go into more depth in your answer and develop your key points using precise, clear language.|
|!Describe the differences...|Structure around key points which you compare across the two things up for discussion-don't describe all the features of one thing and then all the features of the other-link ideas together.|
|!Develop|Go beyond and expand something; take it forward; add detail; improve upon a basic idea.|
|!Discuss|Also known as 'examine' and 'consider' - give the main reasons 'for and 'against' and come to a conclusion.|
|!Draw|Similar to 'sketch' or 'illustrate'. Obvious I know, but people can panic in an exam and do completely the wrong thing...don't let this be you!|
|!Ensure|Make sure/make certain.|
|!Estimate|Guess/ calculate approximately/ give a rough idea with evidence.|
|!Evaluate|Make a judgement about how good or bad/ successful or unsuccessful something is, usually against a specific criteria. This is an opinion based response but it may require you to provide evidence for your points and clear explanations as to why you think the way you do. In Maths it means - work out/ calculate!|
|!Examine|Look closely at something and discuss in a balanced and detached way in order to come to a decision/ conclusion.|
|!Explain|Give reasons for how or why something happens; you need to give examples. They are questions which normally carry a lot of marks and they require you to treat the subject analytically - often using a P.E.A paragraph will help in certain subjects.|
|!Explore|Investigate/ Look deeply at...-often this will require you to look at reasons.|
|!Give|These tend to be short, factual answers and normally they will specify how many.|
|!Give reasons|Say why or how something might happen.|
|!How|Explain something|
|!How far/successfully...|Requires you to ''explain'', ''evaluate'' and ''make a judgement ''about the effectiveness of something-depending on the subject, use evidence and P.E.A paragraphs.|
|!Identify|Pick out/ select/ find/ highlight|
|!Illustrate|Give examples that make your point clear (diagrams/ figures/ drawings)/show how...I demonstrate/ make clear.|
|!Interpret|Explain the meaning in your own words. How do you 'see', 'read' or 'understand something?|
|!Justify|Give a reason to support an argument/ give an explanation for something/ defend a point of view.|
|!List|Can require single words or phrases-sometimes the order will be important. Questions with this word in do not require any reasoning or explanation remember -simply select the information required and write it- don't waste time on anything else.|
|!Modify|Change/ adapt a drawing or sketch (more often than not).|
|!Name|Again, simply name but be very specific- no general terms.|
|!Outline|Give only the most important details/ give a brief overview/ brief explanation-often carries fewer marks.|
|!Persuade|Aim to change your reader's mind about something using biased points and persuasive devices.|
|!Predict|Say what you think or expect will happen -the second part of this question may require you to explain this and justify your ideas.|
|!Present|Show your ideas/ demonstrate your ideas (remember to look how you are meant to be presenting/ drawing/ writing)|
|!Produce|Create/ make/ construct/ bring to life/ bring into being.|
|!Take into account|To consider or to think of|
|!Show the method|Demonstrate/ illustrate/ explain a way of doing something or a process.|
|!Show how...|Explain how...|
|!Sketch|Draw/ draft/ outline using a pencil. In Maths you need to use ruler and a pencil.|
|!State|Write, briefly, the main point. Formally set out a position|
|!Study|Look in detail at a picture, passage or drawing in order to access information necessary to answer the question.|
|!Suggest|Offer ideas/put forward ideas/propose something.|
|!Summarise|Select the main points from a broad area. Draw your key ideas and points together/l review key points in one paragraph.|
|!Use...|This often means they are directing you to a specific passage, rule or drawing - check carefully|
|!What is meant by..|You are being asked for a definition of the word.|
|!What are the disadvantages and advantages..|A simple form of discussion.|
|!What do you need to consider...|You are being asked to highlight key information appropriate to a process in your response.|
|!|What questions usually carry fewer marks|
|!Why|Involves you discussing and explaining a process, outcome or point of view using evidence to back up your ideas. Will involve a balanced approach usually.|
|!Work out..|Asks you to solve something-marks are usually awarded for you showing the process behind your thinking as well as the answer you come up with.|
|!Write down|Could mean 'Describe' or require you to select relevant information.|
|!Write about how|This is more detailed and requires you to explain a process/ how something happens.|
( Named after the French "ATmosphere EXplosible" ).
From July 1, 2003 the two European directives became fully active: - Directive 1999/92/EC (ATEX 137); - Directive 94/9/EC (ATEX 95). These directives effect company's with an explosion hazard (gas, vapour, mist or dust explosion) and manufacturers of equipment intended to be used in explosive atmospheres.
[[ATEX 100A (95)|ATEX Directive 94/9/EC (ATEX 95)]]
[[ATEX 137|Directive 1999/92/EC (ATEX 137) ]]
The directive 94/9/EC gives the requirements of equipment and protective systems intended for use in potentially explosive atmospheres. Its objective is to eliminate or at least minimize the risk resulting from the use of these products. The level of protection depends on the fore mentioned area classification. Manufacturers are under the obligation to design equipment and protective systems from a point of view of integrated explosion safety. This means preventing the formation of explosive atmospheres as well as sources of ignition and, should an explosion nevertheless occur, to halt it immediately and/or limit its effects. To meet the requirements of the directive 94/9/EC it's necessary to conduct a risk assessment and comply with relevant harmonized standards. Phases of this risk assessment are: determination of the intended use (equipment characteristics, product properties, process)
*hazard identification (explosive atmospheres, ignition sources)
*risk estimation (severity of the possible harm and the probability of occurrence)
*risk evaluation (intolerable or acceptable)
*risk reduction option analyses (change of design, use of protective systems, user information)
This is the pressure we are under right now from the weight of approximately 100km of air above our heads ($$\frac{3}{4}$$ of which is in the first 11km)
This pressure will vary with altitude, and the weather. The weather forecast talks of highs and lows. These are areas where the air pressure is either "higher" than normal or "lower" than normal.
Normal atmospheric pressure is taken at sea level as 1.013[[Bar]].
Frequently the weather forecast will use millibars ($$mbar$$).
Atoms are the what [[elements|Elements]] are made of and were once thought to be the smallest part of matter.
They don’t weigh much and so the ''molecular mass'' (when more than one atom is stuck together), or ''relative atomic mass'' is used.
This is the mass of the atom or molecule relative to one atom of hydrogen so hydrogen has a relative molecular mass of 1 and oxygen 16 meaning oxygen is 16 times heavier than hydrogen. These values can be found from the [[periodic table|Periodic Table]].
Many atoms don’t like being alone and so pair up to form a basic molecule, for example oxygen is found in an oxygen pair. This is written as $$\ce{O2}$$ and will have a relative atomic mass of $$32 (16 \times 2)$$.
<<<
Just like a dozen is 12 things, a [[mole|Moles]] is simply Avogadro's number of things. In chemistry, those "things" are atoms or molecules. In theory, you could have a mole of baseballs or anything else, but given that a mole of baseballs would cover the Earth to a height of several hundred miles, you'd be hard-pressed to find good practical use for a mole of anything bigger than a molecule.
Source [[here|https://science.howstuffworks.com/avogadros-number.htm]]
<<<
{{||$:/template : constant}}
!!The stress in each material (Method Two)
---
This method starts off the same way as the [[previous one|Axial Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]]
From the [[question|Axial Stress in a Parallel Compound Bar Question 1]]:
$$E_\text{steel} = 206 GN/m^2=206 \times 10^9 N/m^2$$
$$E_ \text{brass} = 103 GN/m^2=103 \times 10^9 N/m^2$$
<center>
$$\sigma_\text{steel}=\dfrac{\sigma_\text{brass} 206 \times 10^9}{103 \times 10^9}$$
$$\sigma_\text{steel}=2 \times \sigma_\text{brass}$$
</center>
Lets grab the areas from the [[other method|Axial Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]]:
$$A_\text{steel}=5.026 \times 10^{-3}m^2$$
$$A_\text{brass}=2.827 \times 10^{-3}m^2$$
Now we use:
<center>
$$(\sigma_\text{steel} \times A_\text{steel})+(\sigma_\text{brass} \times A_\text{brass})=F_\text{total}$$ ([[Would you like to know more?|Where does Compound Axial Stress Formula Come From?]])
</center>
and substitute $$2 \times \sigma_\text{brass}$$ into the equation instead of $$\sigma_\text{steel}$$
<center>
$$(2 \times \sigma_\text{brass} \times 5.026 \times 10^{-3})+(\sigma_\text{brass} \times 2.827 \times 10^{-3})=30 \times 10^3$$
$$(10.052 \times 10^{-3}+2.827 \times 10^{-3}) \times \sigma_\text{brass}=30 \times 10^3$$<<HelpButton h1>>
$$12.9 \times 10^{-3} \times \sigma_\text{brass}=30 \times 10^3$$
$$\sigma_\text{brass}=\dfrac{30 \times 10^3}{12.9 \times 10^{-3}}$$
$$\sigma_\text{brass}=2.33 \times 10^6 MN/m^2$$
</center>
Now we can use our value for brass stress in $$\sigma_\text{steel}=2 \times \sigma_\text{brass}$$ to find the value of the steel stress:
<center>
$$\sigma_\text{steel}=2 \times \sigma_\text{brass}$$
$$\sigma_\text{steel}=2 \times 2.33 \times 10^6$$
$$\sigma_\text{steel}=4.66 \times 10^6 MN/m^2$$
</center>
[[Would you like to know more?|Axial Stress in a Parallel Compound Bar Question Example 2 Solution (Part 2)]]
An example question calculating the change in length and then the stress caused by a change in temperature as well as the stress caused by the clamping of the bar. From this the total axial stress in the bar could be found.
<<tabs tabsList:"[[Axial Stress Example Question 1]] [[Axial Stress Example Question 1 Solution (Part 1)]] [[Axial Stress Example Question 1 Solution (Part 2)]] [[Axial Stress Example Question 1 Solution (Part 3)]] " class:"tc-vertical">>
A straight length of steel, $$5m$$ long and $$20mm$$ diameter forms part of a structure in which it is firmly held at both ends, preventing any expansion or contraction. It supports a compressive load of $$100kN$$ during which time its temperature increases from $$40 ^\circ C$$ to $$110 ^\circ C$$.
Determine
#The potential dimensional change due to the temperature rise.
#The stress exerted due to the prevented expansion.
#The stress exerted due to the compressive load.
[[Would you like to know more?|Axial Stress Example Question 1 Solution (Part 1)]]
!!The potential dimensional change due to the temperature rise.
---
The first step is to find the [[change in length caused by the change in temperature|Coefficient of Linear Expansion]].
A quick [[google search|https://www.engineeringtoolbox.com/linear-expansion-coefficients-d_95.html]] or indeed look in this [[here wiki|Values of Coefficient of Linear Expansion]] will give us the values of the coefficient of linear expansion, there is a range for steel so for this example we will use $$12 \times 10^{-6}$$
The equation for the coefficient of linear expansion is $$\Delta l=\alpha \times l \times \Delta t $$
From the question:
$$l=5m$$
$$\Delta t=110-40=70^\circ C$$
<center>
$$\Delta l=12 \times 10^{-6} \times 5 \times 70$$
$$\Delta l=0.004m$$
</center>
[[Would you like to know more?|Axial Stress Example Question 1 Solution (Part 2)]]
!!The stress exerted due to the prevented expansion.
---
From our three equations of [[stress]] and [[strain]] we can rearange and substitute to give $$\sigma=\frac{E \times \Delta l}{l}$$
A quick [[google search|https://www.engineeringtoolbox.com/young-modulus-d_417.html]] or indeed look in this [[here wiki|Young's Modulus Data]] will give us the values of [[Young's Modulus]] for steel which is $$200GPa=200 \times 10^9 Pa$$
From the [[question|Axial Stress Example Question 1]]:
$$l=5m$$
From the [[previous section|Axial Stress Example Question 1 Solution (Part 1)]]:
$$\Delta l=0.004m$$
<center>
$$\sigma=\dfrac{E \times \Delta l}{l}$$
$$\sigma=\dfrac{200 \times 10^9 \times 0.004}{5}$$
$$\sigma=160MN/m^2$$
</center>
[[Would you like to know more?|Axial Stress Example Question 1 Solution (Part 3)]]
!!The stress exerted due to the compressive load.
---
From the [[question|Axial Stress Example Question 1]]:
Compressive Load = $$100kN = 100 \times 10^3 N$$
Diameter = $$20mm = 20 \times 10^{-3}m$$
The equation for [[stress]] is $$\sigma=\frac{F}{A}$$
To find the area:
Area of a circle$$=\frac {\pi d^2}{4}$$
<center>
@@.no-border
| $$m$$ || $$mm$$ |
|$$\text{Area}=\dfrac{\pi \times (20 \times 10^{-3})^2}{4}$$| or |$$\text{Area}=\dfrac{\pi \times 20^2}{4}$$|
|$$\text{Area}=3.141 \times 10^{-4}m^2$$| or |$$\text{Area}=314.16mm^2$$|
|We can now calculate the stress|<|<|
||$$\sigma=\dfrac{F}{A}$$||
|$$\sigma=\dfrac{100 \times 10^3}{3.141 \times 10^{-4}}$$| or |$$\sigma=\dfrac{100 \times 10^{3}}{314.16}$$|
|$$\sigma=318.37 MN/m^2$$| or |$$\sigma=318.37N/mm^2$$|
||$$\sigma=318.37MN/m^2$$|
@@
A solid bar of steel $$80 mm$$ diameter is placed inside a brass tube $$80 mm$$ inside diameter, $$10 mm$$ thick, and both are $$1m$$ in length. The two materials are rigidly joined together.
Determine, if a tensile load of 30kN is applied:
#The stress in each material.
#The loads carried by each member.
#The extension of the bar .
Modulus of elasticity for steel $$= 206 GN/m^2$$
Modulus of elasticity for brass $$= 103 GN/m^2$$
[[Would you like to know more?|Axial Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]]
!!The stress in each material. (Method One)
---
There are two methods for solving these type of problems. One is found below.
We can also step through the solution and this method can be found [[here|Axial Stress in a Parallel Compound Bar Question Example 1 Solution Second Method (Part 1)]]
We can use:
$$\sigma_\text{steel}=\dfrac{\sigma_\text{brass} E_\text{steel}}{E_\text{brass}}$$ and $$\sigma_\text{brass}=\dfrac{F \times E_\text{brass}}{A_\text{steel} \times E_\text{steel}+A_\text{brass} \times E_\text{brass}} $$
([[Would you like to know more?|Where does Compound Axial Stress Formula Come From?]])
From the [[question|Axial Stress in a Parallel Compound Bar Question 1]]:
$$F=30kN=30 \times 10^3$$
$$E_\text{steel} = 206 GN/m^2=206 \times 10^9 N/m^2$$
$$E_ \text{brass} = 103 GN/m^2=103 \times 10^9 N/m^2$$
<center>
$$\sigma_\text{steel}=\dfrac{\sigma_\text{brass} 206 \times 10^9}{103 \times 10^9}$$
$$\sigma_\text{steel}=2 \times \sigma_\text{brass}$$
</center>
Now we use:
$$\sigma_\text{brass}=\dfrac{F \times E_\text{brass}}{A_\text{steel} \times E_\text{steel}+A_\text{brass} \times E_\text{brass}} $$ to find the stress in the brass.
First the area:
From the [[question|Axial Stress in a Parallel Compound Bar Question 1]]:
[[Would you like to know more?|
$$d_\text{steel}=80mm=80 \times 10^{-3}m$$
$$d_\text{brass in}=80mm=80 \times 10^{-3}m$$
$$d_\text{brass out}=100mm=100 \times 10^{-3}m$$
<center>
$$Area=\dfrac {\pi d^2}{4}$$
@@.no-border
| !Steel: | !Brass: |
| $$-$$ |$$A_\text{brass}=\dfrac{\pi \times ({100 \times 10^{-3})}^2}{4}-$$$$\dfrac{\pi \times {(80 \times 10^{-3})}^2}{4}$$|
|$$A_\text{steel}=\dfrac{\pi \times {80 \times 10^{-3}}^2}{4}$$|$$A_\text{brass}=7.83 \times 10^{-3} - 5.026 \times 10^{-3}$$|
|$$A_\text{steel}=5.026 \times 10^{-3}m^2$$ |$$A_\text{brass}=2.827 \times 10^{-3}m^2$$|
@@
</center>
Put the numbers into the formula:
<center>
$$\sigma_\text{brass}=\dfrac{30 \times 10^3 \times 103 \times 10^9}{5.026 \times 10^{-3} \times 206 \times 10^9+2.827 \times 10^{-3} \times 103 \times 10^9} $$
$$\sigma_\text{brass}=\dfrac{3.09 \times 10^{15}}{1.03 \times 10^9+291.18 \times 10^6}$$
$$\sigma_\text{brass}=\dfrac{3.09 \times 10^{15}}{1.33 \times 10^9}$$
$$\sigma_\text{brass}=2.33 MN/m^2$$
</center>
Now we can use our value for brass stress in $$\sigma_\text{steel}=2 \times \sigma_\text{brass}$$ to find the value of the steel stress:
<center>
$$\sigma_\text{steel}=2 \times \sigma_\text{brass}$$
$$\sigma_\text{steel}=2 \times 2.33 \times 10^6$$
$$\sigma_\text{steel}=4.66 MN/m^2$$
</center>
[[Would you like to know more?|Axial Stress in a Parallel Compound Bar Question Example 2 Solution (Part 2)]]
!!The loads carried by each member.
---
$$\sigma = \frac{F}{A}$$
Rearange to give $$F=\sigma \times A$$
From previous section:
$$\sigma_\text{steel}=4.66 MN/m^2$$
$$\sigma_\text{brass}=2.33 MN/m^2$$
$$A_\text{steel}=5.026 \times 10^{-3}m^2$$
$$A_\text{brass}=2.827 \times 10^{-3}m^2$$
Load carried by the steel:
<center>
$$F=\sigma \times A$$
$$F=4.66 \times 10^6 \times 5.026 \times 10^{-3}$$
$$F=23.414KN$$
</center>
Load carried by the Brass:
<center>
$$F=\sigma \times A$$
$$F=2.33 \times 10^6 \times 2.827 \times 10^{-3}$$
$$F=6.64KN$$
</center>
[[Would you like to know more?|Axial Stress in a Parallel Compound Bar Question Example 2 Solution (Part 3)]]
!!The extension of the bar.
---
The [[strain|?]] will be the same for both bars as they will extend by the same amount from the same initial length.
$$E=\frac{\sigma}{\epsilon}$$
so
$$\epsilon=\frac{\sigma}{E}$$
<center>
$$\epsilon = \dfrac{4.66 \times 10^6}{206 \times 10^9}$$
$$\epsilon=22.61 \times 10^{-6}$$
</center>
$$\epsilon=\frac{\Delta l}{l}$$
so
$$\Delta l=\epsilon \times l$$
<center>
$$22.61 \times 10^{-6} \times 1$$
$$\Delta l= 0.22mm$$
Bar is an non SI unit of [[pressure|Pressure]] still in common use.
$$1Bar=10^5Pa \text{ or } 100000Pa \text{ or } 100kPa$$.
See also [[pint|Pint]]
```
10 PRINT"---------------------"
20 PRINT "PLANE FRAME ANALYSIS"
30 PRINT "-----------------"
40 PRINT
50 PRINT "DATA FOR FIRST JOINT:"
60 R=ATN (1.0)/45
70 H=0:V=0
80 PRINT "FOR EACH KNOWN FORCE ENTER MAGNITUDE"
90 PRINT"(TENSILE +IVE) AND ANGLE ANTICLOCKWISE"
100 PRINT "FROM DATUM IN DEGREES (0 ,0 TO FINISH) "
110 INPUT P, A
120 IF P= 0 AND A=0 THEN GOTO 180
130 A=R*A
140 H=H+P*COS(A)
150 V=V+P*SIN(A)
160 PRINT "NEXT KNOWN FORCE: "
170 GOTO 110
180 PRINT
190 PRINT "ANGLES OF FIRST AND SECOND UNKNOWN"
200 PRINT "FORCES IN DEGREES (ANTICLOCKWISE):"
210 INPUT A1, A2
220 A1=R*Al : A2= R*A2
230 D=SIN(Al-A2 )
240 Pl=(H*SIN(A2 ) -V* COS ( A2 ) ) / D
250 P2=(v* COS ( Al ) -H* SIN(Al ) ) /D
260 PRINT
270 PRINT "UNKNOWN FORCES ARE "; INT (1000*Pl+0.5 )/1000 ;
280 PRINT " AND "; INT ( 1000*P2+0.5)/l000
290 PRINT
300 PRINT "ANOTHER JOINT? (Y/N) ".
310 INPUT Q$
320 IF Q$= "Y" THEN GOTO 70
330 PRINT
340 END
```
{{||$:/template : equation}}
Bernoulli's (<<richlink "https://en.wikipedia.org/wiki/Daniel_Bernoulli">>) equation states the relationship between [[pressure|Pressure]], [[velocity|Velocity]] and [[height|Height]] of a [[fluid |Fluid]]for smooth or [[laminer flow|Laminer Flow]].
{{||$:/template : equation}}
[[Would you like to know more?|Where does Bernoulli's Equation Come From?]]<br>
{{||$:/template : greek}}
At it's simplest, anything which boils water!
Water needs to be boiled to provide a transportable form of heat which can be used to keep your house warm or generate electricity. Industrial boilers are probably better classified as ''steam generators''.
An ~~industrial boiler~~ industrial steam generator will increase the pressure and therefore the boiling point of the water and the temperature of the [[saturated steam|Saturated Steam]] will be higher. This means more energy can be stored in the water.
Dry saturated steam can them be passed on to a [[superheater|Superheater]]
The [[temperature|Temperature]] at which a liquid can change to a vapour or gas. When a liquid is boiling the [[vapour pressure|Vapour Pressure]] is equal to the [[atmospheric pressure|Atmospheric Pressure]].
```
@@.no-border
|!border|less|
@@
```
<center>
[img[http://steacher.droppages.com/diagrams/Bows notation2.svg]]</center><br>
A way of labelling a [[space diagram|Space Diagram]] to help when drawing the [[force diagrams|Force Diagram]].
It might help if you imagine a circle around frame then you can visualise the spaces easier.
Some research on Bow's Notation will throw up various ways of applying it. The way which has made most sense to me is to label ''A'' between the reaction forces and work round the outside in a clockwise way before filling in the inside spaces.
Always use capital letters.
@@.floatright
[img[http://steacher.droppages.com/diagrams/Boys simple.svg]]
The diagram is a simplified for clarity.
The Boy's calorimeter is in effect a highly efficient gas boiler. The temperature is carefully measured at the gas in, gas out, water in and water out ports.
#Gas is [[BURNED |https://youtu.be/en1uwIzI3SE]]in the bottom and as it forces its way out to the top, it has to make several passes over a coiled pipe with many fins on it to absorb the heat (the pipe is labelled as cooling coils on the diagram).
#Water is heated by the hot gas as the water flows through the cooling coils (the hot gas flows around the outside of the pipe/ coils).
#Condensate from the burned gas is also collected from the bottom. The volume of gas burned and the mass of water heated is accurately measured over the same period of time.
#Thermometers measure the water temperature at inlet and outlet and the flue (exhaust) gas temperature is also measured accurately.
#The [[HCV|Higher Calorific Value (H.C.V.)]] can now be found.
{{Higher Calorific Value (H.C.V.) (Boy's)}}
If the the temperature stays constant and the [[volume|Volume]] increases, then the molecules will hit the surface less often so the [[pressure|Pressure]] goes down.
This means the volume is inversely proportional to pressure.
<center>
$$\displaystyle V\propto \frac{1}{P}$$<br><br>
This is usually written as:<br><br>
$$PV=\text{Constant}$$
</center>
Or
{{||$:/template : equation}}
''Note''
Mass and temperature must not change.
If the temperature and mass of a gas do not change this is called [[isothermal]] process.
British standards are produced and maintained by [[BSI (British Standards Institute)|https://www.bsigroup.com/en-GB/]] and has standards which will cover nearly every manufactured product.
The list below, which is copied from <<richlink "https://en.wikipedia.org/wiki/British_Standards" >>, shows some of the British Standrds to give a feel for the variety and scope of the standards available.
A full catalogue can be found on the [[BSI Website|https://shop.bsigroup.com/]].
*BS 0 A standard for standards specifies Development, Structure and Drafting of British Standards themselves.
*BS 1 Lists of Rolled Sections for Structural Purposes
*BS 2 Specification and Sections of Tramway Rails and Fishplates
*BS 3 Report on Influence of Gauge Length and Section of Test Bar on the Percentage of Elongation
*BS 4 Specification for Structural Steel Sections
*BS 5 Report on Locomotives for Indian Railways
*BS 7 Dimensions of Copper Conductors Insulated Annealed, for Electric Power and Light
*BS 11 Specifications and Sections of Flat Bottom Railway Rails
*BS 12 Specification for Portland Cement
*BS 15 Specification for Structural Steel for Bridges, etc., and General Building Construction
*BS 16 Specification for telegraph material (insulators, pole fittings, etc.)
*BS 17 Interim Report on Electrical Machinery
*BS 22 Report on Effect of Temperature on Insulating Materials
*BS 24 Specifications for Material used in the Construction of Standards for Railway Rolling Stock
*BS 26 Second Report on Locomotives for Indian Railways (Superseding No 5)
*BS 27 Report on Standard Systems of Limit Gauges for Running Fits
*BS 28 Report on Nuts, Bolt Heads and Spanners
*BS 31 Specification for Steel Conduits for Electrical Wiring
*BS 32 Specification for Steel Bars for use in Automatic Machines
*BS 33 Carbon Filament Electric Lamps
*BS 34 Tables of BS Whitworth, BS Fine and BS Pipe Threads
*BS 35 Specification for Copper Alloy Bars for use in Automatic Machines
*BS 36 Report on British Standards for Electrical Machinery
*BS 37 Specification for Electricity Meters
*BS 38 Report on British Standards Systems for Limit Gauges for Screw Threads
*BS 42 Report on Reciprocating Steam Engines for Electrical Purposes
*BS 43 Specification for Charcoal Iron Lip-welded Boiler Tubes
*BS 45 Report on Dimensions for Sparking Plugs (for Internal Combustion Engines)
*BS 47 Steel Fishplates for Bullhead and Flat Bottom Railway Rails, Specification and Sections of
*BS 49 Specification for Ammeters and Voltmeters
*BS 50 Third Report on Locomotives for Indian Railways (Superseding Nos. 5 and 26)
*BS 53 Specification for Cold Drawn Weldless Steel Boiler Tubes for Locomotive Boilers
*BS 54 Report on Screw Threads, Nuts and Bolt Heads for use in Automobile Construction
*BS 56 Definitions of Yield Point and Elastic Limit
*BS 57 Report on heads for Small Screws
*BS 70 Report on Pneumatic Tyre Rims for Automobiles, Motor Cycles and Cycles
*BS 72 British Standardisation Rules for Electrical Machinery,
*BS 73 Specification for Two-Pin Wall Plugs and Sockets (Five-, Fifteen- and Thirty-Ampere)
*BS 76 Report of and Specifications for Tar and Pitch for Road Purposes
*BS 77 Specification. Voltages for a.c. transmission and distribution systems
*BS 80 Magnetos for Automobile Purposes
*BS 81 Specification for Instrument Transformers
*BS 82 Specification for Starters for Electric Motors
*BS 84 Report on Screw Threads (British Standard Fine), and their Tolerances (Superseding parts of Reports Nos. 20 and 33)
*BS 86 Report on Dimensions of Magnetos for Aircraft Purposes
*BS 308 a now deleted standard for engineering drawing conventions, having been absorbed into BS 8888.
*BS 317 for Hand-Shield and Side Entry Pattern Three-Pin Wall Plugs and Sockets (Two Pin and Earth Type)
*BS 336 for fire hose couplings and ancillary equipment
*BS 372 for Side-entry wall plugs and sockets for domestic purposes (Part 1 superseded BS 73 and Part 2 superseded BS 317)
*BS 381 for colours used in identification, coding and other special purposes
*BS 476 for fire resistance of building materials / elements
*BS 499 Welding terms and symbols.
*BS 546 for Two-pole and earthing-pin plugs, socket-outlets and socket-outlet adaptors for AC (50–60 Hz) circuits up to 250V
*BS 857 for safety glass for land transport
*BS 970 Specification for wrought steels for mechanical and allied engineering purposes
*BS 987C Camouflage Colours[7]
*BS 1088 for marine plywood
*BS 1192 for Construction Drawing Practice. Part 5 (BS1192-5:1998) concerns Guide for structuring and exchange of CAD data.
*BS 1361 for cartridge fuses for a.c. circuits in domestic and similar premises
*BS 1362 for cartridge fuses for BS 1363 power plugs
*BS 1363 for mains power plugs and sockets
*BS 1377 Methods of test for soils for civil engineering.
*BS 1572 Colours for Flat Finishes for Wall Decoration[8]
*BS 1881 Testing Concrete
*BS 1852 Specification for marking codes for resistors and capacitors
*BS 2979 Transliteration of Cyrillic and Greek Letters
*BS 3621 Thief resistant lock assembly. Key egress.
*BS 3943 Specification for plastics waste traps
*BS 4142 Methods for rating and assessing industrial and commercial sound
*BS 4293 for residual current-operated circuit-breakers
*BS 4343 for industrial electrical power connectors
*BS 4573 Specification for 2-pin reversible plugs and shaver socket-outlets
*BS 4960 for weighing instruments for domestic cookery
*BS 5252 for colour-coordination in building construction
*BS 5400 for steel, concrete and composite bridges.
*BS 5499 for graphical symbols and signs in building construction; including shape, colour and layout
*BS 5544 for anti-bandit glazing (glazing resistant to manual attack)
*BS 5750 for quality management, the ancestor of ISO 9000
*BS 5837 for protection of trees during construction work
*BS 5839 for fire detection and alarm systems for buildings
*BS 5930 for site investigations
*BS 5950 for structural steel
*BS 5993 for Cricket balls
*BS 6008 for preparation of a liquor of tea for use in sensory tests
*BS 6312 for telephone plugs and sockets
*BS 6651 code of practice for protection of structures against lightning; replaced by BS EN 62305 (IEC 62305) series.
*BS 6879 for British geocodes, a superset of ISO 3166-2:GB
*BS 7430 code of practice for earthing
*BS 7671 Requirements for Electrical Installations, The IEE Wiring Regulations, produced by the IET.
*BS 7799 for information security, the ancestor of the ISO/IEC 27000 family of standards, including 27002 *(formerly 17799)
*BS 7901 for recovery vehicles and vehicle recovery equipment
*BS 7909 Code of practice for temporary electrical systems for entertainment and related purposes
*BS 7919 Electric cables. Flexible cables rated up to 450/750V, for use with appliances and equipment intended for industrial and similar environments
*BS 7910 guide to methods for assessing the acceptability of flaws in metallic structures
*BS 7925 Software testing
*BS 7971 Protective clothing and equipment for use in violent situations and in training
*BS 8110 for structural concrete
*BS 8233 Guidance on sound insulation and noise reduction in buildings
*BS 8484 for the provision of lone worker device services
*BS 8485 for the characterization and remediation from ground gas in affected developments
*BS 8494 for detecting and measuring carbon dioxide in ambient air or extraction systems
*BS 8546 Travel adaptors compatible with UK plug and socket system.
*BS 8888 for engineering drawing and technical product specification
*BS 15000 for IT Service Management, (ITIL), now ISO/IEC 20000
*BS 3G 101 for general requirements for mechanical and electromechanical aircraft indicators
*BS EN 12195 Load restraining on road vehicles.
*BS EN 60204 Safety of machinery
*BS EN ISO 4210 - Cycles. Safety Requirements for Bicycles
Items tagged BTEC Engineering Book have been extrated from '''Pearson BTEC National Engineering Student Book''' by Andrew Buckenham, Gareth Thomson, Natalie Grifiths, Steve Singleton, Alan Serplus and Mike Ryan.
<<list-links "[tag[BTEC Engineering Book]]">>
Simply a joint where two parts join end to end without overlap.
<$tidgraph start="C & S Basic Definitions" />
When looking at the [[products|Products of Combustion]] we first need to know whats going in so we can work out what comes out.
In order to [[BURN|https://youtu.be/en1uwIzI3SE]] anything we need [[oxygen|Oxygen]], and for that we need the air which contains that oxygen.
In order for the fuel to burn it needs to meet up with some oxygen, but there will never be a perfect mix of fuel to oxygen and so we need to add some extra oxygen in there to make sure all the fuel gets to meet up with some oxygen. This is [[excess air|Excess Air]].
So going in we have air+ some more air +fuel $$\therefore$$ the products would be the new ''oxygen/fuel combos'', the ''nitrogen ''from the air which has been burned AND the ''nitrogen ''and ''oxygen ''from the excess air we put in to make sure all the fuel had an oxygen friend!
[[Would you like to know more?|Calculating Products of Combustion: Example Steps]]
Lets continue to work out the amount of product created from a fuel of 88% [[carbon|Carbon]], 10% [[hydrogen|Hydrogen]] and 2% [[sulphur|Sulphur]].
Lets imagine that 20% [[excess air|Excess Air]] is added.
!!Step 1
Find the [[stoichiometric ratio|Stoichiometric Ratio]] (see [[here|The four steps for the Stoichiometric Ratio of Combustion]]) for the steps and a worked example.
!!Step 2
Multiply by the percentage excess air.
Taking our value from the worked example the amount of air needed to burn the fuel was $$13.768kg$$ of air.
$$13.768kg \times 120 \%$$
$$13.768kg \times 1.2=16.522kg$$ of air in total.
!!Step 3
From the total amount of air we need to know how much of the mass is nitrogen as this will be left (a [[product|Products of Combustion]]) after we [[BURN|https://youtu.be/en1uwIzI3SE]].
Nitrogen is $$77\%$$ of the air.
$$16.522kg\times 77 \%$$
$$16.522kg \times 0.77=12.722kg$$ of nitrogen.
!!Step 4
Because we have added extra air we have more oxygen than the fuel can team up with and so we will be left with the lonely oxygen not used by the fuel. Remember, we added the excess air so that it would be easier for all the fuel to find some oxygen.
we added $$20\%$$ air so we need to find how much of that is oxygen.
So the mass of excess air is:
$$16.522-13.768=2.754kg$$
$$2.754 \times 23 \%$$
$$2.754 \times 0.23=0.63\dot3 kg$$ of excess oxygen.
!!Step 5
The things from the fuel that have combined with the oxygen.
From our [[equations|Combustion Equations for Solid and Liquid Fuels]] we calculate how much product is made from each element in the fuel.
Carbon product: $$3.6\dot 6 kg$$ of $$\ce{CO2}$$
The fuel has:
!!!Carbon
$$88\%$$ of $$3.6\dot6 kg$$ of $$\ce{CO2}$$
$$0.88 \times 3.66=3.22kg$$ of carbon dioxide.
!!!Hydrogen
$$10\%$$ of $$9kg$$ of $$\ce{H2O}$$
$$0.1 \times 9=0.9kg$$ of water
!!!Sulphur
$$2\%$$ of $$2kg$$ of $$\ce{SO2}$$
$$0.02 \times 2=0.04kg$$ of sulphur dioxide.
!!Step 6
Finally, add it all up!
|$$3.22kg$$|of $$\ce{CO2}$$|
|$$0.9kg$$|of $$\ce{H2O}$$|
|$$0.04kg$$|of $$\ce{SO2}$$|
|$$0.63\dot3 kg$$|of extra $$\ce{O2}$$|
|$$12.722kg$$|of $$\ce{N}$$|
|Equals:|<|
|$$17.522 kg$$|of exhaust gas|
|$$16.622 kg$$|of dry product|
You may need to use your calculator to store values to avoid decimal rounding errors.
You should notice that the total is the same as the total air plus 1kg of fuel!
If a question asks for [[dry product|Dry Products of Combustion]] just ignore the water.
The [[heat energy|Heat Energy]] released by$$1 kg$$ or $$1 m^3$$ of fuel being [[BURNED!!!!|https://youtu.be/en1uwIzI3SE]]. Usually given in$$MJ$$ per thing.
[[Would you like to know more?|Table of Calorific Values]]
{{||$:/template : variable}}
Calorimeters measure how much energy is released by a fuel, this is a fuels [[calorific value|Calorific Value]]. It's the same language root as calories, how much [[energy|Energy]] is in your food, however when using calorimeters we use Joules and not calories.
In the case of solid and liquid fuels the [[Schole's bomb calorimeter|Schole's Bomb Calorimeter]] is used.
For gaseous fuels the [[Boy's calorimeter|Boy's Calorimeter]] is used.
<$tidgraph start="Calorimeters" />
<<<
Capacitance is the ability of a body to store an electric charge. There are two closely related notions of capacitance: self capacitance and mutual capacitance. Any object that can be electrically charged exhibits self capacitance. A material with a large self capacitance holds more electric charge at a given voltage, than one with low capacitance. The notion of mutual capacitance is particularly important for understanding the operations of the capacitor, one of the three fundamental electronic components (along with resistors and inductors).
<<richlink "https://en.wikipedia.org/wiki/Capacitance">>
<<<
Capacitance between two plates:
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
As the frequency increases, the capacitor passes more charge across the plates in a given time resulting in a greater current flow through the capacitor appearing as if the internal impedance of the capacitor has decreased. Therefore, a capacitor connected to a circuit that changes over a given range of frequencies can be said to be “Frequency Dependant”.
https://www.electronics-tutorials.ws/filter/filter_1.html
<<<
{{||$:/template : equation}}
{{||$:/template : equation}}
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
$$\ce{C}+\ce{O2=CO2}$$
$$\text{Mass ratio: } 12+32=44$$
$$\text{So: } 12kg \space \ce{C}+32kg \space \ce{O2}=44kg \space \ce{CO2}$$
</center>
Dividng by 12 to get the values for $$1kg$$ of carbon:
<center>
$$\displaystyle 1kg \space \ce{C}+\frac{32}{12}kg \space \ce{O2}=\frac{44}{12}kg \ce{CO2}$$
$$\displaystyle 1kg \space \ce{C}+2\frac{2}{3}kg \space \ce{O2}=3\frac{2}{3}kg \space \ce{CO2}$$
$$\displaystyle 1kg \space \ce{C}+2.6 \dot{6} kg \space \ce{O2}=3.6 \dot{6}kg \space \ce{CO2}$$
</center>
$$\text{So for }1kg \text{ of } \ce{C} \text{ we need }2.6\dot{6}kg \text{ of } \ce{O2} \text{ and produce } 3.6\dot{6}kg \text{ of } \ce{CO2} $$
The CDM Regulations are aimed at improving the overall management and co-ordination of health, safety and welfare throughout all stages of a construction project to reduce the large numbers of serious and fatal accidents and cases of ill health which occur every year in the construction industry.
The CDM Regulations place duties on all those who can contribute to the health and safety of a construction project. Duties are placed upon clients, designers and contractors and the Regulations create a new duty holder - the planning supervisor. They also introduce new documents - health and safety plans and the health and safety file.
The degree of detail as well as the time and effort required to comply with your legal duties need only be in proportion to the nature, size and level of health and safety risks involved in the project. Therefore for small projects with minimal health and safety risks, you will only be required to take simple, straightforward steps and few, if any, specialist skills will be needed.
The centigrade scale is now known as the Celsius scal and is named after Swedish astronomer, physicist and mathematician Anders Celsius <<richlink "https://en.wikipedia.org/wiki/Anders_Celsius">>.<br>
The Celsius scale was defined by the freezing point of water is 0°C and the boiling point 100°C as measured at sea level.<br>
A quick look at <<richlink "https://en.wikipedia.org/wiki/Celsius">>however says that's not quite true anymore as it is now defined by it's relationship to the [[Kelvin]] scale and to the [[triple point of water|Tripple Point of Water]]
{{||$:/template : equation}}
{{||$:/template : variable}}
''Change in'' Is often shown as $$\Delta$$.
[[Change in|Change In]] something is always the second thing minus the first thing
E.g. $$T_2-T_1$$,
because time only goes forward, things getting hot are not the same as things getting cold, forwards not the same as backwards, up not the same as down and you are not [[The Dr|http://www.thedoctorwhosite.co.uk/]].
The characteristic gas law is derived from the [[general gas law|General Gas Law]] and comes in two flavours
General Gas Law:
<div class="katex-display">
$$\displaystyle \frac{P_1V_1}{T_1}=\frac{P_2V_2}{T_2}$$
</div>
can be re-written as:
{{||$:/template : equation}}
This ''Constant'' has two parts.
The [[gas constant R|Gas Constant]] and the [[mass|Mass]]. Engineers and ~~scientists~~ chemists measure mass in different ways.
The righteous, glorious upstanding ENGINEER uses mass in kg.
(Evidence [[here|https://duckduckgo.com/?q=smiling+female+engineers&t=ffab&iar=images&iax=1&ia=images]] and [[here|https://duckduckgo.com/?q=smiling+male+engineers&t=ffab&iar=images&iax=1&ia=images]].(Hard hats are ''not'' required to be an engineer. ))
[[Would you like to know more?|The Engineers Characteristic Gas Law]]
The evil, lowly, scheming ~~SCIENTIST~~ CHEMIST uses mass in [[moles|https://www.youtube.com/watch?v=rc5G04nJecI]] (sensible [[moles|Moles]] here).
(Evidence [[here|https://duckduckgo.com/?q=mad+scientist&t=ffab&iar=images&iax=1&ia=images]] and [[here|https://duckduckgo.com/?q=Dr+Evil&t=ffab&iar=images&iax=1&ia=images]].)
(Only joking, we love you science :))
[[Would you like to know more?|Universal Gas Law]]
Charge is a measure of the number of [[electrons|Electrons]] vs the number of [[protons|Protons]]. More electrons gives a negative charge, more protons a positive charge.
A Coulomb (the unit of charge) is the amount of charge on approximately $$6.242 \times 10^{18}$$ electrons.
It is defined as the mount of charge which passes in one second with a [[current|Current]] of one ampere
{{||$:/template : equation}}
{{||$:/template : variable}}
If the gas is heated and the container can expand, so the [[volume|Volume]] increases, the gas can keep a constant [[pressure|Pressure]].
This gives us Charles's Law:
<center>
$$V \propto T$$
This is usually written as:
$$\displaystyle \frac{V}{T}=Constant$$
</center>
Or
{{||$:/template : equation}}
''NOTE''
Mass and pressure must not charge.
If the pressure and mass of a gas do not change this is called [[isobaric|Isobaric]] process.
<<list-links "[tag[Code Snippets]]">>
This is a value which describes the ratio of the force of friction between two bodies and the force pressing them together.
It can be from near 0 to more than one and has no dimensions.
{{||$:/template : variable}}
Materials change size with temperature.
As they get hotter they expand and as the get colder they contract.
The amount of expansion or contraction depends on the original length ($$l$$) and the change in temperature ($$\Delta t$$).
The Coefficient of Linear Expansion is the change in length for each unit of length for each degree change in temperature.
[[Would you like to know more?|Values of Coefficient of Linear Expansion]]
{{||$:/template : equation}}
{{||$:/template : variable}}
The distance between the poles of a coil used when creating electric or magnetic fields.
For example a $$20cm$$ coil would contain more than $$20cm$$ of wire but would be $$20cm$$ tall.
{{||$:/template : variable}}
```
<div class="columns">
List
</div>
```
or
```
@@.columns
<<list-links "[tag[Equation]]">>
@@
```
@@.floatleft
[img[http://steacher.droppages.com/diagrams/Fire triangle.svg]]
This can only occur if all three parts of the fire triangle, [[fuel|Fuel]], [[oxygen|Oxygen]] and [[heat|Heat Energy]] are present.
We will assume that we have heat, as we are talking about [[BURNING|https://youtu.be/en1uwIzI3SE]] things, and look at fuel and oxygen.
They are called the [[reactants|Reactants]]. The process of combustion releases heat and the [[gasses|Gas]] are produced. Theses gasses are called the [[products of combustion|Products of Combustion]].
In a fuel the most common elements are [[Carbon]], [[Hydrogen]] and [[Sulphur]]. Sulphur is a pollutant and is not usually wanted.
The oxygen used in combustion processes normally comes from the atmosphere which is 80% [[Nitrogen]]. Nitrogen does nothing in the combustion process but makes up most of the gases remaining after combustion.
[[Would you like to know more?|Calorific Value]]
<br> <br> <br> <br> <br> <br> <br>
The study of ~~[[BURNING THINGS!!!!!|https://youtu.be/en1uwIzI3SE]]~~ of all chemical reactions, what you put into a reaction and and what comes out the other end. However, in this unit the reaction we are studying is [[BURNING THINGS!!!!!|https://youtu.be/en1uwIzI3SE]]
More specifically, looking at the chemical composition of fuels and calculating from that what the maximum amount of [[heat energy|Heat Energy]] would be when we burn that fuel.
<$tidgraph start="Combustion and Stoichiometry" />
The [[hydrogen|Hydrogen]] always burns to form water $$\ce{H2O}$$. Industrial equipment for measuring the contents of the [[products|Products of Combustion]] usually removes the water from the sample and the products are then called the [[dry products|Dry Products of Combustion]].
We do the combustion of each element in the fuel separately. The important rule is that you must have the same number of [[moles|Moles]] of each substance before and after the process.
!![[Carbon]]
{{Carbon}}
!![[Hydrogen]]
{{Hydrogen}}
!![[Sulphur]]
{{Sulphur}}
[img[http://steacher.droppages.com/diagrams/Polytropic_Graph.svg]]
@@.no-border
|0 to 1|$$=$$|Constant [[pressure|Pressure]] heating|[[Isobaric]]|$$n=0$$|
|0 to 2|$$=$$|Constant [[volume|Volume]] heating|[[Isometric]]|$$n=\infty $$|
|0 to 3|$$=$$|Reversible compression|[[Adiabatic Change]]|$$n=\gamma$$|
|0 to 4|$$=$$|Constant [[temperature|Temperature]] compression|[[Isothermal]]|$$n=1$$|
|0 to 5|$$=$$|Constant pressure cooling|Isobaric|$$n=0$$|
|0 to 6|$$=$$|Constant volume cooling|Isometric|$$n=\infty $$|
|0 to 7|$$=$$|Reversible expansion|Adiabatic|$$n=\gamma$$|
|0 to 8|$$=$$|Constant temperature expansion|Isothermal|$$n=1$$|
@@
S.I. stands for [[Système international d'unités|International System of Units]]
<center>
|!Quantity|!Units|!Name|!S.I.Symbol|
|[[Length]]|$$m$$|$$\text{meter}$$|various|
|[[Mass]]|$$kg$$|$$\text{kilogram}$$|$$m$$|
|[[Time]]|$$s$$|$$\text{second}$$|$$t$$|
|[[Area]]|$$m^2$$||$$A$$|
|[[Volume]]|$$m^3$$||$$V$$ or $$Q$$|
|[[Density]]|$$kg/m{^3}$$||$$\rho$$|
|[[Force]]|$$kg\space m/s{^2}$$|$$N\text{(Newton)}$$| $$F$$|
|[[Weight]]|$$kg\space m/s{^2}$$| $$N\text{(Newton)}$$|$$W$$|
|[[Pressure]]|$$N/m^2$$|$$Pa \text{ (Pascal)}$$|$$p$$|
|[[Speed/Velocity|Velocity]]|$$m/s$$||$$v$$ or $$u$$|
|[[Acceleration]]|$$m/s^2$$||$$a$$|
|[[Energy]]|$$Nm$$|$$J\text{(Joule)}$$|$$E$$|
</center>
Oxygen used in normal combustion comes from the air so other things (mainly nitrogen) are
introduced into the process with the air. In order to calculate the quantity of air, we need to know how much oxygen is contained in it. For purposes of calculation, the composition of air is considered to be as follows:
|!Gas|!Volume ($$m^3$$)|!Mass ($$kg$$)|
|Oxygen ($$\ce{O2}$$)| 21% | 23% |
|Nitrogen ($$\ce{N}$$)| 79% | 77% |
[[Would you like to know more?|Stoichiometric Ratio]]
A series compound bar is formed by joining a steel rod of $$20mm$$ diameter and $$125mm$$ length to a brass rod of the same diameter but $$225mm$$ long. $$E$$ for steel and brass are $$205 GPa$$ and $$100Gpa$$ respectively and $$\alpha_{steel}=12 \times 10^{-6}/ ^\circ C$$, $$\alpha_{brass}=18 \times 10^{-6} / ^\circ C$$
#Calculate the change in length when a force of $$20kN$$ is applied in tension.
#Find the change in length for a $$45 ^\circ C$$ temperature change.
#The stress exerted due to the prevented expansion if the bar was clamped at both ends.
#The stress exerted due to the $$20kN$$ load
[[Would you like to know more?|Compound Bar Example Question 1 Solution (Part 1)]]
!!Calculate the change in length when a force of $$20kN$$ is applied in tension.
---
This can be done by two methods. One is shown below, the other is [[here|Compound Bar Example Question 1 Solution Method 2(Part 1)]].
To calculate the change of length in the compound bar we essentially calculate the change in length of each section and then add them up!
The equation is $$\Delta l=F \left[\dfrac{l_a}{E_a \times A_a}+\dfrac{l_b}{E_b \times A_b}\right]$$ ([[Would you like to know more?|Where Does the Linear Compound Bar Equation Come From?]])
First we need the area:
<center>
$$\text{Area}=\dfrac{\pi d^2}{4}$$
$$\text{Area}=\dfrac{\pi \times (20 \times 10^{-3})^2}{4}$$
$$\text{Area}=3.141 \times 10^{-4}m^2$$
</center>
Now it's just a question of plugging in the numbers
from the [[question|Compound Bar Example Question 1]]:
$$l_a=125mm = 125 \times 10^{-3}m$$
$$l_b=225mm= 225 \times 10^{-3}m$$
$$E_a=205GPa=205 \times 10^{9}Pa$$
$$E_b=100GPa= 100\times 10^{9}Pa$$
$$F=20kN=20 \times 10^3N$$
<center>
$$\Delta l=F \left[\dfrac{l_a}{E_a \times A_a}+\dfrac{l_b}{E_b \times A_b}\right]$$
$$\Delta l=20 \times 10^3 \left[\dfrac{125 \times 10^{-3}}{205 \times 10^9 \times 3.141 \times 10^{-4}}+\dfrac{225 \times 10^{-3}}{100 \times 10^9 \times 3.141 \times 10^{-4}}\right]$$
$$\Delta l=20 \times 10^3 \left[\dfrac{125 \times 10^{-3}}{64.4 \times 10^6}+\dfrac{225 \times 10^{-3}}{1.5 \times 10^9}\right]$$
$$\Delta l=20 \times 10^3 \left[1.94 \times 10^{-9}+7.161 \times 10^{-9}\right]$$
$$\Delta l=20 \times 10^3 \times 9.102 \times 10^{-9}$$
$$\Delta l =1.82 \times 10^{-4}m =0.18mm$$
</center>
[[Would you like to know more?|Compound Bar Example Question 1 Solution (Part 2)]]
!!Find the change in length for a $$45 ^\circ C$$ temperature change.
---
To find the change in length for a change in temperature we need to use the [[coefficient of linear expansion|Coefficient of Linear Expansion]].
The equation we need is $$\Delta l=\alpha \times l \times \Delta t$$.
Again we need to add the expansion of both bars together.
From the [[question|Compound Bar Example Question 1]]:
$$\alpha_{steel}=12 \times 10^{-6}/ ^\circ C$$
$$\alpha_{brass}=18 \times 10^{-6} / ^\circ C$$
$$l_a=125mm = 125 \times 10^{-3}m$$
$$l_b=225mm= 225 \times 10^{-3}m$$
$$\Delta t=45 ^\circ C $$
<center>
@@.no-border
|$$\Delta l_\text{steel}=12 \times 10^{-6} \times 125 \times 10^{-3} \times 45$$|$$\Delta l_\text{brass}=18 \times 10^{-6} \times 225 \times 10^{-3} \times 45$$|
|$$\Delta l_\text{steel}=6.75 \times 10^{-5}m=0.0675mm$$|$$\Delta l_\text{brass}=1.822 \times 10^{-4}m=0.182mm$$|
@@
$$\Delta_\text{Total}=0.0675+0.182=0.249mm$$
</center>
[[Would you like to know more?|Compound Bar Example Question 1 Solution (Part 3)]]
!!The stress exerted due to the prevented expansion if the bar was clamped at both ends.
---
From our three equations of [[stress]] and [[strain]] we can rearange and substitute to give $$\sigma=\frac{E \times \Delta l}{l}$$
From the [[question|Compound Bar Under Axial Load Worked Example]]:
$$l_\text{steel}=125mm = 125 \times 10^{-3}m$$
$$l_\text{brass}=225mm= 225 \times 10^{-3}m$$
$$E_\text{steel}=205GPa=205 \times 10^{9}Pa$$
$$E_\text{brass}=100GPa= 100\times 10^{9}Pa$$
From the [[previous section|Compound Bar Example Question 1 Solution (Part 2)]]:
$$\Delta l_\text{steel}=0.0675mm$$
$$\Delta l_\text{brass}=0.182mm$$
<center>
@@.no-border
|$$\sigma_\text{steel}=\dfrac{E \times \Delta l}{l}$$ |$$\sigma_\text{brass}=\dfrac{E \times \Delta l}{l}$$ |
|$$\sigma_\text{steel}=\dfrac{205 \times 10^9 \times 0.0675 \times 10^{-3}}{125 \times 10^{-3}}$$|$$\sigma_\text{brass}=\dfrac{100 \times 10^9 \times 0.182 \times 10^{-3}}{225 \times 10^{-3}}$$|
|$$\sigma_\text{steel}=110MN/m^2$$|$$\sigma_\text{brass}=80.8\dot8MN/m^2$$|
@@
</center>
[[Would you like to know more?|Compound Bar Example Question 1 Solution (Part 4)]]
!!The stress exerted due to the $$20kN$$ load
---
Finally the stress due to the compressive clamping load:
From the [[question|Axial Stress Example Question 1]]:
Compressive Load = $$20kN = 20 \times 10^3 N$$
Diameter = $$20mm = 20 \times 10^{-3}m$$
The equation for [[stress]] is taking into account the change in length is $$\sigma=\frac{F}{A}$$
To find the area:
Area of a circle$$=\frac {\pi d^2}{4}$$
<center>
$$\text{Area}=\dfrac{\pi \times (20 \times 10^{-3})^2}{4}$$
$$\text{Area}=3.141 \times 10^{-4}m^2$$
</center>
We can now calculate the stress
As $$\sigma=\frac{F}{A}$$ the force and the area are the same across both sections of bar so the stress in each section will be the same.
<center>
$$\sigma=\dfrac{20 \times 10^3}{3.141 \times 10^{-4}}$$
$$\sigma=63.67 MN/m^2$$
!!Calculate the change in length when a force of $$20kN$$ is applied in tension.
---
First we need the area:
<center>
$$\text{Area}=\dfrac{\pi d^2}{4}$$
$$\text{Area}=\dfrac{\pi \times (20 \times 10^{-3})^2}{4}$$
$$\text{Area}=3.141 \times 10^{-4}m^2$$
</center>
The [[stress|?]] will be the same for both sections.
$$\sigma=\frac{F}{A}$$
From the [[question|Compound Bar Example Question 1]]:
$$F=20kN$$
<center>
$$\sigma=\dfrac{20 \times 10^3}{3.141\times 10^{-4}}$$
$$\sigma=63.67 \times 10^6 N/m^2 \text{ or } 63.67MN/m^2$$
</center>
$$E=\frac{\sigma}{\epsilon}$$
so
$$\epsilon=\frac{\sigma}{E}$$
From the [[question|Compound Bar Example Question 1]]:
$$E_a=205GPa=205 \times 10^{9}Pa$$
$$E_b=100GPa= 100\times 10^{9}Pa$$
Steel:
<center>
$$\epsilon_\text{steel}=\dfrac{63.67 \times 10^6}{205 \times 10^{9}}$$
$$\epsilon_\text{steel}=0.3105 \times 10^{-3}$$
</center>
Brass:
<center>
$$\epsilon_\text{brass}=\dfrac{63.67 \times 10^6}{100\times 10^{9}}$$
$$\epsilon_\text{brass}=0.6367 \times 10^{-3}$$
</center>
$$\epsilon = \frac{\Delta l}{l}$$
so:
$$\Delta l=l \times \epsilon$$
Steel:
<center>
$$\Delta l_\text{steel}=125 \times 0.3105 \times 10^{-3}$$
$$\Delta l_\text{steel}=0.038mm$$
</center>
Brass:
<center>
$$\Delta l_\text{steel}=225 \times 0.6367 \times 10^{-3}$$
$$\Delta l_\text{steel}=0.143mm$$
Total Change in length $$=0.143+0.038$$
Total Change in length $$=0.18mm$$
</center>
<center>
[img[http://steacher.droppages.com/diagrams/Compound Bars 2.svg]]
</center>
If two bars of different materials are joined at their ends and subjected to an axial force ([[compression|Compression Force]] or [[tension|Tensile Force]]) we can use the [[stress|?]] and [[strain|?]] equations for each section of the bar to calculate the change in length.
[[Would you like to know more?|Where Does the Linear Compound Bar Equation Come From?]]
{{||$:/template : equation}}
<center>
[img[http://steacher.droppages.com/diagrams/Compound Bars.svg]]
</center>
A compound bar is any bar made up of one or more materials. This could, for example, be two sections of bar attached end to end, each of a different material, or two lengths of pipe, one inside the other.
[[Would you like to know more?|Compound Bar Joined End to End]]
<<tabs tabsList:"[[Compound Bar Example Question 1]] [[Compound Bar Example Question 1 Solution (Part 1)]] [[Compound Bar Example Question 1 Solution (Part 2)]] [[Compound Bar Example Question 1 Solution (Part 3)]] [[Compound Bar Example Question 1 Solution (Part 4)]]" class:"tc-vertical">>
Squashing force. See also [[tensile force|Tensile Force]]
The ratio of the compression of a gas in a cylinder is the ratio of the volume at the end of expansion to the volume at the beginning of expansion. It is usually denoted by $$r$$.
The larger volume divided by the smaller, so both the ratios are always greater than 1
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/Point_load.svg]]</center><br>
A concentrated load is also called a [[point load|Point Load]].
<center>
[img[http://steacher.droppages.com/diagrams/Concurrent_forces.svg]]</center><br>
Concurrent forces are simply forces which act at the same point.
See also [[non concurrent forces|Non Concurrent Forces]]
The <i>'Law of Conservation of Energy'</i> is one of the fundamental laws about how the universe works. It states that energy can be neither created or destroyed only change forms. It is practically applied by saying that:<br>
<center>
<i>'For an [[isolated system|Isolated or Closed System]] the amount of energy is constant'</i></center>
This is essentially restated in the [[First Law of Thermodynamics]]
The total [[momentum|Momentum]] in a [[closed system|Isolated or Closed System]] is conserved.
or
The total momentum in the system before the changes
is equal to the total momentum after the changes.
[[Would you like to know more?|Momentum Worked Example 1]]
<<list-links "[tag[Constant]]">>
!!Constants
{{Constants}}
!!Equations
{{Equations}}
!!Variables
{{Variables}}
If you are pumping a fluid, e.g water, through a pipe and a continuous rate the [[mass|Mass]] flowing past one part must be the same as the volume flowing past another part, even if the pipe changes shape.
{{||$:/template : equation}}
If you are pumping a fluid, e.g water, through a pipe and a continuous rate the [[volume|Volume]] flowing past one part must be the same as the volume flowing past another part, even if the pipe changes shape.
{{||$:/template : equation}}
At any point where the B.M. diagram passes through zero (i.e. where the B.M. changes sign) the curvature of the beam changes from concave upwards to concave downwards (or vice versa). The point is called a point of contraflexure (or inflexion).
The convergent nature of the design process is shown. The first nebulous idea evolves in the client's mind into an ill-defined problem. This is presented to the designer as a brief and the design process produces a well
defined solution, which eventually results in a specific object. The development or existence of this object might well spark off more nebulous ideas, but that is another story.
[img[http://steacher.droppages.com/diagrams/Convergent Design.svg]]
Coplaner [[forces|Force]] are forces acting on the same plane.<br>
This means they are flat, 2D, not acting in in three dimensions.
The total energy produced minus the energy released from steam condensing into water.
{{||$:/template : equation}}
{{||$:/template : variable}}
Using hazardous substances can put people's health at risk. COSHH requires employers to control exposures to hazardous substances to protect both employees and others who may be exposed from work activities.
!!Hazardous Substances
Hazardous substances are anything that can harm your health when you work with them if they are not properly controlled eg by using adequate ventilation. They are found in nearly all work places eg factories, shops, mines, farms and offices.
They can include
*substances used directly in work activities eg glues, paints, cleaning agents
*substances generated during work activities eg fumes from soldering and welding
*naturally occurring substances e.g. grain dust, blood, bacteria
For the vast majority of commercial chemicals, the presence (or not) of a warning label will indicate whether COSHH is relevant. For example, household washing up liquid doesn't have a warning label but bleach does - so COSHH applies to bleach but not washing up liquid when used at work.
Also known as ''The Law of Cosines''.
<center>
[img[http://steacher.droppages.com/diagrams/Non right angle triangle.svg]]
</center><br>
<div class="katex-display">
$$\displaystyle c^2=a^2+b^2-2ab \cos C$$
</div>
Can be used to find missing ''sides'' of a non right angle triangle where
*Two sides are given and the angle between them is given
To avoid more [[transposition|Transposition of Formula]] than we need or changing the letters on the triangle sides here are the rearranged formula:
<div class="katex-display">
$$\displaystyle a^2=b^2+c^2-2bc \cos A$$
</div>
<div class="katex-display">
$$\displaystyle b^2=a^2+c^2-2ac \cos B$$
</div>
<div class="katex-display">
$$\displaystyle c^2=a^2+b^2-2ab \cos C$$
</div>
Where:
Lower case letters are side lengths.
Upper case letters are the angle opposite the side.
---
<br>
<div class="katex-display">
$$\displaystyle\cos A=\frac{b^2+c^2-a^2}{2bc}$$
</div>
Can be used to find missing ''angles'' of a non right angle triangle where
*all the sides are known but none of the angles are.
To avoid more [[transposition|Transposition of Formula]] than we need or changing the letters on the triangle sides here are the rearranged formula:
<div class="katex-display">
$$\displaystyle\cos A=\frac{b^2+c^2-a^2}{2bc}$$
</div>
<div class="katex-display">
$$\displaystyle\cos B=\frac{a^2+c^2-b^2}{2ac}$$
</div>
<div class="katex-display">
$$\displaystyle\cos C=\frac{a^2+b^2-c^2}{2ab}$$
</div>
Where:
Lower case letters are side lengths.
Upper case letters are the angle opposite the side.
{{||$:/template : equation}}
{{||$:/template : constant}}
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/Covalent_Bond.svg]]</center><br>
Hydrogen atoms bond together by sharing their [[electrons|Electrons]].
The sharing of the outer or [[valency|Valency]] electrons, in this way is termed covalent bonding, resulting in a [[molecule|Molecules]].
Colloquial term for ‘A Cup of Tea’ or possibly 'A cup of coffee'
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/Del_Diagram.svg]]
</center> <br>
This is a free body diagram
Press pause on the moving object, imagine there is an [[inertial force|Inertial Force]] opposing movement and suddenly we have a static problem.
<div class="katex-display">
$$F+F_i=0$$
</div>
So...if $$F=ma$$ and we know that $$F_i$$ is negative (going in the opposite way to $$F$$) then we could say $$-F_i=ma$$ but we can't have a negative force (just one on the other direction) so $$F_i=ma$$
The inertia force always opposes acceleration so it is always negative.<br>
[[Would you like to know more?|D'Alemberts's Example 2]]
<center> [img[http://steacher.droppages.com/diagrams/Mass_on_a_spring_1.svg]]</center><br>
The crucial part to using D’Alembert is in the free body diagram and ensuring you label the forces. This makes the next stage easier.<br>
$$F=$$ Force pushing on Mass <br>
$$F_s=$$ The force from the spring <br>
$$F_i=$$ The inertial force<br>
$$W=$$ The weight of the mass<br>
<div class="katex-display">
$$ F + F_s+ F_i+ W = 0$$
</div>
The forces pushing the mass down and the [[weight|Weight]] of the [[mass|Mass]] are in the opposite direction to the spring and the inertia force and will be the opposite sign but when applying D’Alembert as in the equation above everything is assumed positive until the figures are known.
It is also worth noting that friction often needs to be considered and always opposes movement.
Lets add some friction and some numbers.
[[Would you like to know more? |D'Alemberts's Example 3]]
<center> [img[http://steacher.droppages.com/diagrams/Mass_on_a_spring_2.svg]]</center><br>
A spring is fixed at the bottom and has a sliding [[mass|Mass]] of 10kg at the other as shown. A force of 100 N is applied to move the mass. At the given instant shown, the spring force is 130 N. A friction force of 20N also exists. Draw the free body diagram and calculate the acceleration of the mass at that instant.<br>
$$F=$$
Force pushing on Mass <br>
$$F_s=$$ The force from the spring <br>
$$F_i=$$ The inertial force<br>
$$F_r=$$ The frictional force<br>
$$W=$$ The [[weight|Weight]] of the mass<br>
<div class="katex-display">
$$ F + F_s+F_r+ F_i+ W = 0$$
</div>
$$F=-100$$ (down)<br>
$$W= Mg =10\times 9.81=-98.1N$$ (Down)<br>
$$F_s= 130N$$ (Up)<br>
$$F_r= 20N$$ (Up)<br>
$$F_i=?$$
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$-100 + F_i+ 130 + 20 -98.1$$</td>
<td class="tg-s6z2">$$=$$</td>
<td class="tg-h0x1">$$0$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_i+ 130 + 20$$</td>
<td class="tg-s6z2">$$=$$</td>
<td class="tg-h0x1">$$100 + 98.1$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_i$$</td>
<td class="tg-s6z2">$$=$$</td>
<td class="tg-h0x1">$$198.1 - 150$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_i$$</td>
<td class="tg-s6z2">$$=$$</td>
<td class="tg-h0x1">$$48.1N$$</td>
</tr>
</table>
</center>
Now remember;<br>
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$F_i$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$ma$$</td>
</tr>
<tr>
<td class="tg-0ord">$$48.1$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$10a$$</td>
</tr>
<tr>
<td class="tg-0ord">$$a$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{48.1}{10}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$a$$</td>
<td class="tg-031e"></td>
<td class="tg-h0x1">$$4.81m/s^2$$ upwards.</td>
</tr>
</table>
</center>
Newton says that for a body to be in [[equilibrium|Equilibrium]] the [[forces|Force]] must be equal.
[[D’Alembert|https://en.m.wikipedia.org/wiki/Jean_le_Rond_d%27Alembert]] restates this and says that for a body to be in [[equilibrium|Equilibrium]] the sum of the forces must be equal to zero.
Putting that into maths:
<h2>Newton</h2>
<div class="katex-display">
$$F_1=F_2$$
</div>
or
<div class="katex-display">
$$F=ma$$
</div>
<h2>D’Alembert </h2>
<div class="katex-display">
$$F_1+F_2=0$$
</div>
or
<div class="katex-display">
$$F-ma=0$$
</div>
This makes sense for a stationary body but not if you apply it to an accelerating body, how can there be an equal and opposite force when an object is accelerating?
D’Alembert essentially imagines we pause the moving object and have an equal and opposite force (often called the [[inertial force|Inertial Force]]) to the one causing the acceleration. This allows us to apply the tools of static analysis to the problem which may be simpler than those for dynamics.
[[Would you like to know more?|D'Alemberts's Example 1]]
Definitions of key concepts.
@@.columns
<<list-links "[tag[Definition]]">>
@@
<center>
[img[http://steacher.droppages.com/diagrams/Shear_strain.svg]]</center><br>
The deflection is the [[angle|Angles]], $$\gamma$$ measured in radians, but as this is usually very small the angle is equal to the $$\frac{\text{original length}} {\text{change in length}}$$, as labelled on the diagram.<br>
{{||$:/template : variable}}
{{||$:/template : greek}}
{{Change In}}
You want to create a product for which there is a market and customer demand.
The total demand and your company‘s anticipated share of the market will give a
predicted value for sales, and this can help you decide whether to start developing the
product and how much time and money to invest in its development.
You also need to consider demand, notjust for now but for the life of the product.
Is this a product you will produce as a one-off or a special order for a single customer.
or is it something that will be for sale over a number of years on an open market?
How do you think demand for the product might change over time? Is the total market
for this type of product rising, falling or steady? How will your company's market
share change over time?
The [[mass|Mass]] of one cubic metre of the material.
Density is amount of 'stuff' crammed into a given [[volume|Volume]].
For example a block of aluminium which is the same size as a block of steel will have a different [[weight|Weight]]. The steel will be heavier than the aluminium.
{{||$:/template : equation}}
{{||$:/template : variable}}
Like [[distance|Distance]] but for the distance under the water from the surface.
The average depth of water is used for calculating [[hydrostatic thrust on an immersed plane surface|Hydrostatic Thrust on an Immersed Plane Surface]]
{{||$:/template : variable}}
<<list-links "[tag[Design Process]]">>
<$tidgraph start="Design Process" />
@@.floatleft
[img[http://steacher.droppages.com/diagrams/Design_Process_2.svg]]
Models like this are often dismissed as being linear, with a start and an end, whereas the product design process has feedback and is continuous. What is learned in the design and development process, and the
final evaluation, might well lead to a new specification, just as an analysis of the deficiencies of an existing product might. For this reason models of the design and development process are often shown as circles or spirals.
The model shown is perhaps best imagined as the circle 'straightened out', or one segment of an innovation spiral. For a particular designer working on a specific project, the design process can be seen as beginning with the design brief and ending with the evaluation of the proposed solution.
@@
[[Would you like to know more?|Convergent Design]]
Typical values:
|!Material|!$$\varepsilon_r (F/m)$$|
|Vacuum|1.0|
|Air|1.0006|
|Teflon|2.1|
|Paper|3.85|
|FR-4|4.0|
|Silicon|11.7|
|Water ($$200 ^\circ C$$)|34.5|
|Water ($$20 ^\circ C$$)|80.1|
|Water ($$0 ^\circ C$$)|88|
|Calcium Copper Titanate|250,000|
{{||$:/template : variable}}
Simply how much has the object stretched or squashed by.
Is usually used to mean [[tensile|Stress]] or compressive stress which acts along the axis of the material.
This directive gives the minimum requirements for improving the safety and health protection of workers potentially at risk from explosive atmospheres. The employer shall take technical and/or organisational measures appropriate to the nature of the operation and in accordance with the following basic principles, in this order of priority:
*The prevention of the formation of explosive atmospheres, or where the nature of the activity does not allow that;
*The avoidance of the ignition of explosive atmospheres, and;
*The mitigation of the detrimental effects of an explosion so as to ensure the health and safety of workers.
To do so, the employer will have to assess the specific risks arising from potential explosive atmospheres. Hazardous areas should be classified in terms of zones on the basis of the frequency and duration of the occurrence of an explosive atmosphere. For gases and vapours these zones will be 0, 1 and 2. For dusts these zones will be 20, 21 and 22. To meet the requirements of the directive 1999/92/EC it's necessary to conduct a risk assessment.
Engineering Directives Information
<<list-links "[tag[Directives]]">>
Note ..More detailed information is to be found at the links below;
<iframe src="//www.pearltrees.com/stephenteacher/engineering-regulations/id18609151?embed=2&d=201710131437" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/engineering-regulations/id18609151" style=" color:#818181; font-size:13px;" target="_blank">Engineering Directives & Regulations</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
[[Distance]] traveled from a to b in a direction in a straight line.
Displacement is a [[vector|Vectors]] and is different from distance (which is a [[scalar|Scalar]] value).
I can get from home to work by car, bus, bike or tram and train. Each of these will take me on different routes and therefore a different ''distance'' from home to work.
If I draw a straight line from my house to work that will always be the same length, the ''displacement'' will not change.
The reason that displacement is represented by the letter $$s$$ may be because the Latin word for space (or distance) is 'spatium.'
{{||$:/template : variable}}
.
```
$$\displaystyle f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi$$
```
$$\displaystyle f(x) = \int_{-\infty}^\infty\hat f(\xi)\,e^{2 \pi i \xi x}\,d\xi$$
The distance from a to b is a [[scalar|Scalar]] value and can be different to the [[vector|Vectors]] value of [[displacement|Displacement]].
I can get from home to work by car, bus, bike or tram and train. Each of these will take me on different routes and therefore a different ''distance'' from home to work.
If I draw a straight line from my house to work that will always be the same length, the ''displacement'' will not change.
{{||$:/template : variable}}
!!!Portable drawing equipment.
//It has been common practice in schools to equip specific rooms for Technical Drawing-This leads to considerable inflexibility in the ways in which drawing experiences can be integrated with other aspects of Craft, Design and Technology (CDT) and also to timetabling difficulties. The Head of the CDT department has decided Io tackle this problem by constructing a portable unit to house 20 of the new style Rotring A3 boards and draughting heads. The unit should be secure, house all the necessary accessories and be easily transportable within the department. As it is to form part of a CDT Department's equipment it is essential that the design sets a good example in all respects.
//
The product of combustion ''MINUS'' the water created by burning [[hydrogen|Hydrogen]]. If we included the water it would be wet!
Dry steam has been [[superheated|Superheated Steam]] so there is no [[water vapour|Water Vapour]] left.
Dry steam is often abreviated to d.s.s for dry saturated steam.
A percentage, but usually given as a decimal, representing the amount of steam that is ‘''dry''’. if $$x=0$$ this shows all the [[steam|Steam]] is [[wet steam|Wet Steam]], $$x=1$$ shows all the steam is [[dry steam|Dry Steam]]. A dryness fraction of 0.4 tells us that $$40\%$$ of the wet steam has turned to dry steam, the remaining $$60\%$$ is still wet.
{{||$:/template : variable}}
!!!Dynamic strength
This is a force exerted by limbs moving in a smooth manner over time, such as while lifting an object.
The study of systems in movement and the forces and related variables in those systems e.g. [[acceleration|Acceleration]] and [[velocity|Velocity]].
Allows transclusion with edit on hover
```
<<{ Force>>
```
When using [[bomb calorimeters|Schole's Bomb Calorimeter]] the effective mass is the mass of the water plus the mass of water which is [[equivalent|Equivalent Mass]] to the mass of the bomb calorimeter. The equivalent mass is given by the bomb manufacurer.
{{||$:/template : equation}}
{{||$:/template : variable}}
The efficiency a machine runs with. It is the ratio of the energy/ power in and the energy/ power out.
You can never get more out of a machine than you put in (See [[First Law of Thermodynamics]]).
If you get a number greater than one when calculating the efficiency one of two things has just happened.
# You have mixed up the numbers in the fraction and the one on the top should be on the bottom and vice versa.
# You have broken the first law of thermodynamics and have created a limitless supply of energy, thus ushering in golden age of free energy. Go and collect your [[Nobel Prize|https://www.nobelprize.org/]].
{{||$:/template : equation}}
{{||$:/template : variable}}
The [[energy|Energy]] you put into a system.
You put effort in and get [[work|Work]] out.
Also known as ''vacuum permittivity'', or ''permittivity of free space''.
{{||$:/template : constant}}
<<<
The electric field at a given point is defined as the (vector) force, that would be exerted on a stationary test particle of unit charge by electromagnetic forces (i.e. the Lorentz force).
Its SI units are newtons per coulomb ($$N/C$$) or, equivalently, volts per metre ($$V/m$$).
<<<
<<richlink "https://en.wikipedia.org/wiki/Electric_field">>
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
The electric field at a given point is defined as the (vector) force, that would be exerted on a stationary test particle of unit charge by electromagnetic forces (i.e. the Lorentz force).
Its SI units are Newtons per Coulomb ($$N/C$$) or, equivalently, Volts per metre ($$V/m$$).
<<<
<<richlink "https://en.wikipedia.org/wiki/Electric_field">>
{{||$:/template : equation}}
{{||$:/template : variable}}
Some definition
{{||$:/template : equation}}
{{||$:/template : variable}}
Some definition
{{||$:/template : equation}}
{{||$:/template : variable}}
Some definition
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
Electrical resistivity (also known as resistivity, specific electrical resistance, or volume resistivity) is an intrinsic property that quantifies how strongly a given material opposes the flow of electric current. A low resistivity indicates a material that readily allows the flow of electric current. Resistivity is commonly represented by the Greek letter ρ (rho). The SI unit of electrical resistivity is the ohm-metre (Ω⋅m).[1][2][3] As an example, if a 1 m × 1 m × 1 m solid cube of material has sheet contacts on two opposite faces, and the resistance between these contacts is 1 Ω, then the resistivity of the material is 1 Ω⋅m.
<<<
<<richlink "https://en.wikipedia.org/wiki/Electrical_resistivity_and_conductivity">>
{{||$:/template : variable}}
ElectroMagnetic Compatibility (EMC) -2004/108/EC
Since 1 January 1996, most electrical and electronic products sold in the EU must be constructed so that they do not cause excessive electromagnetic interference and are not duly affected by electromagnetic interference....
They must carry the CE mark to show that they comply with these requirements and a manufacturer's declaration of conformity must be prepared for each product, and be made available to the authorities on request for up to 10 years after the last product of that type has been manufactured.
Note:.The latest version of this directive (2004/108/EC) was issued 15 Dec 2004
Phenomena regarded as electromagnetic disturbances
*Conducted low-frequency phenomena
*slow variations of supply voltages
*harmonics, interharmonics
*signalling voltages
*voltage fluctuations
*voltage unbalance
*power-frequency variations
*induced low-frequency voltages
*DC in AC networks
*DC ground circuits
*Radiated low-frequency phenomena
*magnetic fields (continuous or transient)
*electric fields
*Conducted high-frequency phenomena
*induced continuous wave (CW) voltage or currents
*unidirectional transients
*Radiated high-frequency phenomena
*magnetic fields
*electric fields
*electromagnetic fields
*continuous waves
*transients
*Electrostatic discharge (ESD) phenomena
See [[Voltage]] and [[this|https://www.youtube.com/watch?v=K5kr2OBhh4c]]
{{||$:/template : variable}}
<$tidgraph start="Electronics" />
The basic building blocks of all matter. Once thought by the Greeks to be fire, earth, wind and water, but now coded into the [[periodic table|Periodic Table]].
Hydrogen and Oxygen are two examples of elements.
```
<span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.mathcentre.ac.uk/resources/uploaded/mc-ty-apgp-2009-1.pdf" style=" color:#818181; font-size:13px;" target="_blank">{{!!title}}</a> by <a href="http://www.mathcentre.ac.uk/" style=" color:#818181; font-size:13px;" target="_blank">Mathcenter</a></span>
```
some definition
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
Energy is a property or characteristic (or trait or aspect?) of matter that makes things happen, or, in the case of stored or potential energy, has the "potential" to make things happen.
[[Dave Watson|http://www.ftexploring.com/energy/definition.html]]<br>
<<<
[[Would you like to know more? |http://www.ftexploring.com/energy/definition.html]]
Energy comes in many different forms, heat, mechanical, sound and nuclear are a few examples but, regardless of the type of energy it is always measured in <b><i>Joules ($$J$$)</i></b> named after physicist and local lad J.P.Joule (born in Salford, died in Sale).
<<richlink "https://en.wikipedia.org/wiki/James_Prescott_Joule">>
One Joule is defined as the amount energy used when a [[force|Force]] of $$1N$$ is applied for $$1m$$.
So if you moved an apple $$1$$ meter you would use about a Joule doing it.
Energy is often called [[Effort]] or [[Work]]. The difference being effort is what you put in, work is what you get out. I.e. "work, it's effort ini't?"
{{||$:/template : equation}}
{{||$:/template : variable}}
See the following links:
<$tidgraph start="Energy" />
This is the amount of [[internal energy|Internal Energy]] in [[dry steam|Dry Steam]].
{{||$:/template : equation}}
{{||$:/template : variable}}
This is the amount of [[internal energy|Internal Energy]] in [[wet steam|Wet Steam]] with a [[dryness fraction|Dryness Fraction]].
{{||$:/template : equation}}
{{||$:/template : variable}}
See: http://hyperphysics.phy-astr.gsu.edu/hbase/electric/indeng.html
{{||$:/template : equation}}
To permit the free circulation of goods, as expressed in the Rome Treaty, the founding act of the European Union, the European Commission publishes directives that are common to all the Member States that define the essential requirements to be satisfied by such goods before they are put on the market, or during the probable period of their use.
Notes on some of the directives are provided below.
<<list-links "[tag[Engineering Directives]]">>
[[Would you like to know more?|Eng Directives & Regs Links]]
{{FormulaResult Button}}
!!Objective
*Calculate pressure drop and velocity of water though a pipe
!!Formula
dP/100 ft = W^^2^^/rho *(0.000336 * ff / id^^5^^)
!!Assumptions
# Pipe OD = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="pipeod"/> inches
# Pipe Thickness = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="thickness"/> inches
# Mass Flow = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="massflow"/> lbs/hr
# rho (Density) = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="rho"/> lbs/cuft
#Friction Factor (manning) = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="ff"/>
# Length = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="length"/> ft
!!Calculations
Pipe ID = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="pipeid"/> inches
Flow Area = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="a0"/> sq.inches = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="a1"/> sq.ft
dp/100 ft =<$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="d2"/> psi/100 ft
''Pressure Drop = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="d3"/> psi''
''Velocity = <$macrocall $name="eval1" datatiddler="$:/sk/engrexample" cell="v0"/> ft/sec''
<<list-links "[tag[Engineering Materials]]">>
When a fluid has [[pressure|Pressure]] and [[temperature|Temperature]] it must possess both [[flow energy|Flow Energy]] and [[internal energy|Internal Energy]].<br>
It is often convenient to add them together and the result is ''ENTHALPY''.<br>
An upper case $$H$$ is used for [[total|Total]] entahlpy $$(kJ)$$ and a lower case $$h$$ for [[specific|Specific]] enthalpy $$(kJ/kg)$$.
{{||$:/template : equation}}
{{||$:/template : variable}}
This is the amount of [[energy|Energy]] in [[dry steam|Dry Steam]].
{{||$:/template : equation}}
{{||$:/template : variable}}
This is the amount of [[energy|Energy]] in [[wet steam|Wet Steam]] with a [[dryness fraction|Dryness Fraction]].
{{||$:/template : equation}}
{{||$:/template : variable}}
{{||$:/template : greek}}
```
<$latex text="\LaTeX" displayMode="true"></$latex>
```
<$latex text="\LaTeX" displayMode="true"></$latex>
```
{{||$:/template : equation}}
{{||$:/template : variable}}
```
{{||$:/template : equation}}
{{||$:/template : variable}}
@@.columns
<<list-links "[tag[Equation]]">>
@@
<center>
[img[http://steacher.droppages.com/diagrams/Force Diagram.svg]]</center><br>
The equilibrant is the [[force|Force]] which is equal in [[magnitude|Magnitude]] but opposite in direction to the [[resultant|Resultant]] ,or reaction, force and will keep the body in [[equilibrium|Equilibrium]], possibly [[without incident|https://youtu.be/sKpK6SFKTDw?t=3m45s]].
A body is in equilibrium when it isn't moving (in a state of rest) or is moving in a straight line with constant [[velocity|Velocity]].
When a body is in equilibrium the sum ([[resultant|Resultant]]) of all the forces on it is zero.
For a [[bomb calorimeter|Schole's Bomb Calorimeter]] this is the mass of water equivalent to the bomb calorimeter.
The value is specified by the manufacturer.
{{||$:/template : variable}}
Human Machine Interfaces (Ergonomics Index Page...)
Ergonomics is the study of human abilities and characteristics which affect the design of equipment, systems, and jobs. The terms ergonomics and human factors can be used interchangeably. The name Ergonomics was derived from the Greek words: Ergon/ergos - work; Nomikos/nomos - natural laws - control and orderly assignment.
..Additional information Relating to the information in the pages below..Notes
I recommend that anyone involve in the design and planning of buildings / structures / equipment interfacing with people should obtain a copy of the reference handbook as linked on this page .''Metric Handbook Planning and Design Data''
<iframe src="//www.pearltrees.com/stephenteacher/ergonimics/id24732789?embed=2&d=201904151117" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/ergonimics/id24732789" style=" color:#818181; font-size:13px;" target="_blank">Ergonimics</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
!!A Algebraic and trigonometric mathematical methods
*Application of appropriate units
{{Unit 1 A1}}
{{Unit 1 A2}}
!!B Static engineering systems
*Application of appropriate units
{{Unit 1 B1}}
{{Unit 1 B2}}
!!C Dynamic engineering systems
*Application of appropriate units
{{Unit 1 C1}}
!!D Fluid engineering systems
*Application of appropriate units
{{Unit 1 D1}}
!!E Static and direct current electricity and circuits
*Application of appropriate units.
{{Unit 1 E1}}
{{Unit 1 E2}}
{{Unit 1 E3}}
{{||$:/template : greek}}
A number like $$\pi$$ with infinite decimals.
The gradient graph $$e^x$$ is the same as the graph of $$e^x$$
[[Would you like to know more?|http://wmueller.com/precalculus/e/e1.html]]
{{||$:/template : constant}}
[img[http://steacher.droppages.com/diagrams/BBC Micro.svg]]
The full specification is presented here or you can look at individual sections by following the links below.
!Computer keyboard converting system for young children
!!Contents
<<list-links "[tag[Example Specification]]">>
!!1. Background information
{{1. Background information}}
!!2. Scope of the specification
{{2. Scope of the specification}}
!!3. Relevant Authorities to be Consulted
{{3. Relevant Authorities to be Consulted}}
!!4. Performance
{{4. Performance}}
!!5. Ergonomics
{{5. Ergonomics}}
!!6. Aesthetics, Appearance and Finish
{{6. Aesthetics, Appearance and Finish}}
!!7. Materials
{{7. Materials}}
!!8. Quantity Scale of Production
{{8. Quantity Scale of Production}}
!!9. Manufacture
{{9. Manufacture}}
!!10. Maintenance
{{10. Maintenance}}
!!11. Life in Service - Product Life
{{11. Life in Service - Product Life}}
!!12. Safety
{{12. Safety}}
!!13. Testing
{{13. Testing}}
!!14. Packaging
{{14. Packaging}}
!!15. Product costs
{{15. Product costs}}
!!16. Time scales
{{16. Time scales}}
|Quantity|Unit|Example|h
|[[Mass]]|kilograms ($$kg$$)|$$10kg$$|
|[[Volume]]|meters cubed|$$4m^3$$|
|[[Density]]|Kilograms per meters cubed|$$2kg/m^3$$|
|[[Time]]|seconds|$$10s$$|
|[[Temperature]]|Degrees|$$10^\circ C$$|
|[[Speed]]|meters per second|$$5m/s$$|
|[[Energy]]|Joules|$$60J$$|
|[[Power]]|Watt|$$50W$$|
|[[Distance]]|Meter|100m|
|Quantity|Which is|Example|h
|[[Displacement]]|[[Distance|Examples of Scalar Quantities]] travelled from $$a$$ to $$b$$ ''in a straight line''.|Today I walked 5 miles but as I started at the car park and finished at the pub next to it my displacement for the day is 30m and a [[pint|Pint]].|
|[[Velocity]]|[[Speed]] in a direction.|$$5m/s\space north$$|
|[[Acceleration]]|Velocity changing in a direction.|$$5m/s^2\space north$$|
|[[Force]]|A [[mass|Mass]] accelerating in a direction.|$$12N\space up$$|
|[[Temperature Change]]|Because something getting hot is not the same as something getting cold|Kettle boils $$+80^\circ C$$, tea goes cold $$-80^\circ C$$|
|{{FormulaResult Button}}| A | B | C | D |h
| 1 |<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a1"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b1"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="c1"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="d1"/>|
| 2 |<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a2"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b2"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="c2"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="d2"/>|
| 3 |<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a3"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b3"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="c3"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="d3"/>|
| 4 |<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a4"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b4"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="c4"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="d4"/>|
| 5 |<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a5"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b5"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="c5"/>|<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="d5"/>|
If air is prvided to fuel in the [[stoichiometric ratio|Stoichiometric Ratio]], as the fuel does not mix perfectly in the air then some [[oxygen|Oxygen]] will be hiding in a corner, (and some fuel in the other corner, not talking to each other because of what fuel said about 'our cousin Stacey'!) and not be [[BURNED|https://youtu.be/en1uwIzI3SE]] up with the fuel.
In order to ensure that ALL the fuel is used then excess air needs to be added to ensure that all the fuel is next to some oxygen.
The ratio of the expansion of gas in a cylinder is the ratio of the volume at the end of expansion to the volume at the beginning of expansion. It is usually denoted by $$r$$.
The larger volume divided by the smaller, so both the ratios are always greater than 1
{{||$:/template : equation}}
{{||$:/template : variable}}
!!!Explosive strength (impulsive strength)
This is the application of peak amounts of strength for short periods of time, usually periodically, such as in running or sprinting.
Obviously a person can exert the maximum forces with impulsive strength and the minimum forces with static strength.
Equation for calculating exponential growth or exponential decay.
Note: [[Time]] could also be a [[distance|Distance]] or other variable that the thing changes over.
e.g.
Rabbits bread over time.
<$graph minY="-2" maxX="5" maxY="50" unitsPerTick="5">
Math.exp(x)
</$graph>
Air pressure reduces over [[height|Height]].
Tea cools over a [[temperature|Temperature]] range e.t.c.
{{||$:/template : equation}}
The change in [[length|Length]].
{{||$:/template : variable}}
An extensive property is is a property of a [[mass|Mass]] which is divisible as the mass is divided into smaller parts.
For example If you chop something in two it's [[volume|Volume]] is also divided by two.<br>
Other examples are [[mass|Mass]] and [[energy|Energy]].<br>
Extensive properties can be [[total|Total]] or [[specific|Specific]].
See also [[intensive property|Intensive Property]].
A [[temperature|Temperature]] scale named after Daniel Gabriel Fahrenheit <<richlink "https://en.wikipedia.org/wiki/Daniel_Gabriel_Fahrenheit">>
$$32^\circ F$$ is the freezing point of water and $$212^\circ F$$ the boiling point of water and at $$-40^\circ F$$ it's the same as $$^\circ.C$$.<br>
This is only really used by Americans and by your gran.
To convert to a [[sensible scale|Celsius or Centigrade]]:
<center>$$\displaystyle ^\circ C=\frac{(^\circ F-32)}{1.8}$$</center>
<<<
If the magnetic flux changes, an emf will be induced. There are therefore three ways an emf can be induced in a loop:
#Change the magnetic field
#Change the area of the loop
#Change the angle between the field and the loop
https://physics.bu.edu/~duffy/PY106/InducedEMF.html
<<<
{{||$:/template : equation}}
[[Angular velocity|Angular Velocity]] at the end of the section being looked at.
{{||$:/template : variable}}
[[Velocity]] at the end of the section being looked at.
{{||$:/template : variable}}
The final volume after a gas has been expanded or compressed.
{{||$:/template : variable}}
The equation for [[angular acceleration|Angular Acceleration]]
<div class="katex-display">
$$\displaystyle \alpha=\frac{\omega_2-\omega_1}{t}$$
</div>
Rearranging this gives:
Angular 'SUVAT'
{{||$:/template : equation}}
!You can't win.
Energy can neither be created nor destroyed. It can only change forms. It is really just a restating of the law of [[conservation of energy|Conservation of Energy]].
This means there is no such thing as perpetual motion.
[[Would you like to know more?|To Find the Secret of Free Energy]]
This is a calculation which puts the entire load at the [[centroid|Centroid]] of the cross section of a beam. This is the same as putting the full load at the [[center of gravity|Center of Gravity]].
The equation for [[acceleration|Acceleration]]
<div class="katex-display">
$$\displaystyle a=\frac{v-u}{t}$$
</div>
Rearranging this gives:
{{||$:/template : equation}}
If fluid is being pushed along something, a pipe or cylinder for example, it has flow energy. <br>
{{||$:/template : equation}}
<br>
{{||$:/template : variable}}
[[Would you like to know more?|Where does F.E. equation come from?]]
*Fluid enters and leaves through the boundary at a steady rate.
*Energy may be transferred into or out of the system.
[[Would you like to know more?|Steady Flow Energy Equation]]
The fluid in the system flows continually through the area being looked at.
e.g. the hot water through a radiator.
[[Would you like to know more?|Flow System Rules]]
A force is a push or a pull which moves something from rest or changes the [[velocity|Velocity]] of something moving. A change in velocity is an [[acceleration|Acceleration]]. Force is a [[vector|Vectors]] quantity and is measured in Newtons and is named after the famous scientist and mathematician [[Sir Isaac Newton|https://en.m.wikipedia.org/wiki/Isaac_Newton]].
One Newton is the force needed to accelerate $$1kg$$ by $$1m/s^2$$<br>
From [[Newton's Second Law]] this is usually stated as:
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/Force Diagram.svg]]</center><br>
The forces from the [[space diagram|Space Diagram]] can be placed to scale head to tail (as in the diagram above) to solve vector problems [[graphically|Graphically]] and the [[resultant|Resultant]] can be found (by measuring the red line with a protractor and a rule). The [[equilibrant|Equilibrant]] can also be found. If the forces form a loop when drawn to scale they are in [[equilibrium|Equilibrium]].
A space diagram can also just be sketched to help you solve vector problems [[analytically|Analytically]].
The [[force|Force]] needed to overcome a [[normal|Normal]] frictional force.
{{||$:/template : equation}}
{{||$:/template : variable}}
A car of mass $$2\text{ tonne}$$ accelerates at $$3\space m/s^2$$.
What is the force needed?
$$F=ma$$
{{FormulaResult Button}}
[[Mass]]
$$=2\text{ tonne}=$$<$macrocall $name="eval1" datatiddler="math force data" cell="mass"/> $$kg$$
[[Acceleration]]$$= $$<$macrocall $name="eval1" datatiddler="math force data" cell="accel"/> $$m/s^2$$
$$F=ma$$
$$F=$$<$macrocall $name="eval1" datatiddler="math force data" cell="mass"/>$$\times$$<$macrocall $name="eval1" datatiddler="math force data" cell="accel"/>
[[Force]] = <$macrocall $name="eval1" datatiddler="math force data" cell="force"/> $$N$$
<<<
The ratio of the root mean square value to the average value of an alternating quantity (current or voltage) is called Form Factor.
[[From here|https://circuitglobe.com/what-is-form-factor.html]]
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
<$reveal state="$:/state/formulas" type="match" text="yes"><$button type="set" set="$:/state/formulas" setTo="no">Results</$button>
</$reveal>
<$reveal state="$:/state/formulas" type="nomatch" text="yes">
<$button type="set" set="$:/state/formulas" setTo="yes">Edit</$button></$reveal>
We take the [[first|First Angular 'SUVAT' Equation]] and [[second|Second Angular 'SUVAT' Equation]] equations and combine them once again.<br>
This time we rearrange the [[first equation|First Angular 'SUVAT' Equation]] in terms of [[time|Time]] and then substitute into the [[second|Second Angular 'SUVAT' Equation]].
Taking $$\omega_2=\omega_1+\alpha t$$ and rearranging in terms of $$t$$ gives $$\displaystyle \frac{\omega_2-\omega_1}{\alpha}$$. Putting this in the second equation gives:
<center>
<table class="no-border">
<tr>
<td>$$\theta$$</td>
<td>=</td>
<td>$$\displaystyle \left( \frac{\omega_2+\omega_1}{2}\right) \left(\frac{\omega_2-\omega_1}{\alpha}\right)$$</td>
</tr>
<tr>
<td>$$\theta$$</td>
<td>=</td>
<td>$$\displaystyle \frac{(\omega_2+\omega_1)(\omega_2-\omega_1)}{2\alpha}$$</td>
</tr>
<tr>
<td>$$2\alpha \theta$$</td>
<td>=</td>
<td>$$\displaystyle (\omega_2+\omega_1)(\omega_2-\omega_1)$$</td>
</tr>
<tr>
<td>$$2 \alpha \theta$$</td>
<td>=</td>
<td>$$\omega_2^2-\omega_1^2$$</td>
</tr>
</table>
</center>
Rearranging to give:
{{||$:/template : equation}}
The forth of the SUVAT equations is also known as Torricelli’s equation after [[Evangelista Torricelli|https://en.m.wikipedia.org/wiki/Evangelista_Torricelli]] who first formulated it.<br>
We take the [[first|First SUVAT Equation]] and [[second|Second SUVAT Equation]] equations and combine them once again.<br>
This time we rearrange the [[first equation|First SUVAT Equation]] in terms of [[time|Time]] and then substitute into the [[second|Second SUVAT Equation]].
Taking $$v=u+at$$ and rearranging in terms of $$t$$ gives $$\frac{v-u}{a}$$. Putting this in the second equation gives:
<center>
<table class="no-border">
<tr>
<td>$$s$$</td>
<td>=</td>
<td>$$\displaystyle \left( \frac{v+u}{2}\right) \left(\frac{v-u}{a}\right)$$</td>
</tr>
<tr>
<td>$$s$$</td>
<td>=</td>
<td>$$\displaystyle \frac{(v+u)(v-u)}{2a}$$</td>
</tr>
<tr>
<td>$$2as$$</td>
<td>=</td>
<td>$$\displaystyle (v+u)(v-u)$$</td>
</tr>
<tr>
<td>$$2as$$</td>
<td>=</td>
<td>$$v^2-u^2$$</td>
</tr>
</table>
</center>
Rearranging to give:
{{||$:/template : equation}}
A framed structure can be a [[simple frame|Simple Frame]], a [[redundant frame|Redundant Frame]] or a [[complex frame|Complex Frame]].
<center>
[img[http://steacher.droppages.com/diagrams/Free_Surface.svg]]</center><br>
The top of the water. The bit of the water you see if you're standing at the side of a lake.
Frequency is the number of times something happens per second. Often called cycles per second.
{{||$:/template : equation}}
{{||$:/template : variable}}
A fuel is any material that can be made to react with other substances so that it releases energy as heat energy or to be used for work. <<richlink "https://en.wikipedia.org/wiki/Fuel">>
More commonly it's anything we burn which we use to create heat. (Unless we are talking nuclear fuel...which we don't burn, but do use to create heat.)
Fuels can be [[solid|Solid Fuel]], [[liquid|Liquid Fuel]] or [[gas|Gas Fuel]].
Another word for [[pivot|Pivot]]
<$list filter="[tag[Definition]]" >
!<$view field="title"></$view><br>``{{``<$view field="title"></$view>``}}``<br>
</$list>
A force diagram which allows the determining of forces when the [[simple frame|Simple Framework]] has no joints with two or less unknowns on them.
[[Would you like to know more?|Funicular Polygon]]
<iframe scrolling="no" title="Funincular polygon 1" src="https://www.geogebra.org/material/iframe/id/tbKj9WDa/height/512/border/888888/smb/false/stb/false/stbh/false/ai/false/asb/false/sri/true/rc/false/ld/false/sdz/true/ctl/false" width="100%" height="512px" style="border:0px;"> </iframe>
<<list-links "[tag[Further Mechanical Principles Worked Examples]]">>
<$tidgraph start="Further Mechanical Principles Worked Examples" />
{{||$:/template : greek}}
A state of matter.
See also [[solid|Solid]] and [[liquid|liquid]].
[[Would you like to know more|Gasses]]
Lubrication is fundamental to the operation of all engineering machines. It is required to minimise friction, wear and also provides a cooling function and a surface protection function.
Gas lubricated bearings have numerous advantanges over liquid and solid lubricated bearings for a wide range of applications. A gas bearing is virtually frictionless, silent, and vibrationfree. Gas bearings can be used for extremely large surface velocities. A gas bearing can eliminate the risk of contaminating a process with lubricant.
A gas / air bearing can be hydrodynamic or hydrostatic. In hydrodynamic bearings the gas is introduced into the bearing surfaces by the action of the bearing. In hydrostatic bearing the gas is introduced under pressure from an external source.
Air bearings are also widely used to allow frictionless movement of large heavy items over flat surfaces using air pads.
<iframe src="//www.pearltrees.com/stephenteacher/gas-air-lubrication-bearings/id31005862?embed=2&d=202004021511" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/gas-air-lubrication-bearings/id31005862" style=" color:#818181; font-size:13px;" target="_blank">Gas /Air Lubrication-Bearings</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
The Gas constant is used in [[the characteristic gas law|The Engineers Characteristic Gas Law]] and has the symbol $$R$$.
R is measured in J/kg K and is different for each gas.
[[Would you like to know more?|Typical Gas Value Data]]
R can be found approximately by dividing the [[universal gas constant|Universal Gas Constant]] by the [[relative molecular mass|Molar Mass]] ($$M$$)
{{||$:/template : equation}}
{{||$:/template : variable}}
Usually hydrocarbon fossil fuels, e.g. North Sea gas.
These are normally analysed by [[volume|Volume]] to give the content of carbon, hydrogen, sulphur and any other elements present.
<<list-links "[tag[Gas Laws]]">>
<$tidgraph start="Gas Laws" />
A gas is made of molecules which move around with high [[velocity|Velocity]] in random directions. <br>
In a an ideal or [[perfect gas|Ideal Gas]], the molecules may collide with one another but they don’t attract or repel each other.
{{Ideal Gas}}
Each molecule in the gas has an instantaneous velocity and hence has [[kinetic energy|Kinetic Energy]].
The sum of this energy is the [[internal energy|Internal Energy]].
The velocity of the molecules depends upon the [[temperature|Temperature]]: temperature up, velocity up.
The internal energy is, for all intents and purposes, is zero at [[-273°C or 0K|Absolute Zero]].
[[Would you like to know more?|Gas Laws]]
This is the pressure in a container. E.g. a car tyre.
Pressure gauges are set to read zero when they only have atmospheric pressure acting on them.
If a tyre needed pumping up after a puncture the gauge will read zero when the tyre is flat.
The tyre may well still have some air in it however but this will be at the same pressure as the air around it or [[atmospheric pressure|Atmospheric Pressure]].
When Inflated to $$20 kN/m^2$$ the tyre actually contains the pressure shown on the gauge plus atmospheric pressure.
The pressure shown on the gauge then is less than the total or [[absolute pressure|Absolute Pressure]] in the tyre.
$$\text{Gauge pressure} = \text{Absolute pressure} - \text{Atmospheric pressure}$$
A mass of gas has a pressure of $$500 kPa$$ and temperature of $$150 ^\circ C$$.<br>
The pressure is changed to $$900 kPa$$ but the volume is unchanged.<br>
Determine the new temperature.
Answer:
From the question:
$$T_1=150^\circ C+273=423K$$
$$p_1=500kPa=500\times 10^3=500,000$$
$$p_2=900kPa=900×10^3=900,000$$
Using [[Gay Lussac's Law]]
<center>
@@.no-border
| $$\displaystyle \frac{P_1}{T_1}$$| $$=$$ |$$\displaystyle\frac{P_2}{T_2}$$ |
| $$T_2$$| $$=$$ |$$\displaystyle \frac{(P_2 T_1)}{P_1}$$ |
|Putting in the values:| | |
| $$T_2$$| $$=$$ |$$\displaystyle \frac{900 000 ×423}{500 000}$$ |
| $$T_2$$| $$=$$ |$$761.4K$$ |
@@
''Gay Lussac’s Law'' is also known as the ''Constant Volume Law'' or ''The Pressure Law''
If the gas is heated the [[velocity|Velocity]] of the molecules increases.
If the container is rigid then the molecules will hit the surface more often and with greater force so we expect the pressure to rise in proportion to temperature.
<center>
$$P\propto T$$<br><br>
This is usually written as:<br><br>
$$\displaystyle \frac {P}{T}=\text{Constant}$$
</center>
Or
{{||$:/template : equation}}
''NOTE''
Volume and mass must not change.
If the volume and mass of a gas do not change this is called [[isochoric]] process.
[[Would you like to know more?|Gay Lussac Worked Example]]
<img src="data:image/gif;base64,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" />
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
[[Gay Lussac's Law]], [[Charles’s Law]] and [[Boyle's Law]] can be combined into the general gas law.
{{||$:/template : equation}}
A [[sequence|Sequence]] where the multiplication factor, or the divide, is the same between each term.
e.g.
$$2, 4, 8, 16, 32, 64, 128...$$
$$3, 9, 27, 81, 243, 729...$$
The dots mean these go on forever...
<$graph color='["black","red"]' minX="-1" minY="-2" maxX="6">
Math.pow(2,x)
[ [1,2],[2,4],[3,16],[4,32],[5,64],[6,128] ]
</$graph>
$$5, 25, 125, 625, 3125, 15625$$
This however is the full sequence. In this case we aren't interested in the rest of the number that could be in this sequence.
[[Would you like to know more?|Geometric Progression Cheat Sheet]]
!!To find any term (the $$n_{th}$$):
$$n_{th}=ar^{n-1}$$
Where:
$$n_{th}$$ = number of term (i.e. 5th term or 68th term).
$$a$$ = first term.
$$r$$ = The common ratio between the terms.
!!To sum the series for the first $$n$$ terms:
$$\displaystyle S_n=\frac{a(1-r^n)}{1-r}$$
Where:
$$n$$ = number of term (i.e. 5th term or 68th term)
$$a$$ = first term.
$$r$$ = The common ratio between the terms and is not equal to $$1$$
!!To sum to infinity:
$$\displaystyle S_\infty =\frac{a}{1-r}$$
Where:
$$n$$ = number of term (i.e. 5th term or 68th term)
$$a$$ = first term.
$$r$$ = The common ratio between the terms and is between $$-1$$ and $$1$$
[[Would you like to know more?|Arithmetic and Geometric Progression]]
!Absolute Pressure
{{Absolute Pressure}}
!Acceleration
{{Acceleration}}
!Acceleration due to Gravity
{{Acceleration due to Gravity}}
!Adiabatic Change
{{Adiabatic Change}}
!Analytically
{{Analytically}}
!Angles
{{Angles}}
!Angular 'SUVAT'
{{Angular 'SUVAT'}}
!Angular Acceleration
{{Angular Acceleration}}
!Angular Frequency
{{Angular Frequency}}
!Angular Velocity
{{Angular Velocity}}
!Arithmetic Progression
{{Arithmetic Progression}}
!Atmospheric Pressure
{{Atmospheric Pressure}}
!Atoms
{{Atoms}}
!Avogadro's Number
{{Avogadro's Number}}
!Bar
{{Bar}}
!Boiler
{{Boiler}}
!Boiling
{{Boiling}}
!Bow's Notation
{{Bow's Notation}}
!Boyle's Law
{{Boyle's Law}}
!Capacitance
{{Capacitance}}
!Capacitive Reactance
{{Capacitive Reactance}}
!Capacitors in Parallel
{{Capacitors in Parallel}}
!Capacitors in Series
{{Capacitors in Series}}
!Celsius or Centigrade
{{Celsius or Centigrade}}
!Characteristic Gas Law
{{Characteristic Gas Law}}
!Charge
{{Charge}}
!Charles’s Law
{{Charles’s Law}}
!Coil Size
{{Coil Size}}
!Compression Ratio
{{Compression Ratio}}
!Concentrated Load
{{Concentrated Load}}
!Concurrent Forces
{{Concurrent Forces}}
!Conservation of Energy
{{Conservation of Energy}}
!Conservation of Momentum
{{Conservation of Momentum}}
!Contraflexure
{{Contraflexure}}
!Coplanar
{{Coplanar}}
!Coulomb's Constant
{{Coulomb's Constant}}
!Coulomb's Law
{{Coulomb's Law}}
!Cuppa
{{Cuppa}}
!Current
{{Current}}
!D’Alembert’s Principle
{{D’Alembert’s Principle}}
!Density
{{Density}}
!Depth
{{Depth}}
!Dimensional Change
{{Dimensional Change}}
!Direct Stress
{{Direct Stress}}
!Displacement
{{Displacement}}
!Distance
{{Distance}}
!Dry Steam
{{Dry Steam}}
!Dryness Fraction
{{Dryness Fraction}}
!Dynamics/ Kinematics
{{Dynamics/ Kinematics}}
!e
{{e}}
!Efficiency
{{Efficiency}}
!Effort
{{Effort}}
!Electric Constant
{{Electric Constant}}
!Electric Field Strength
{{Electric Field Strength}}
!Electric Field Strength: Uniform Electric Fields
{{Electric Field Strength: Uniform Electric Fields}}
!Electrical Power (Current, Resistance)
{{Electrical Power (Current, Resistance)}}
!Electrical Power (Current, Voltage)
{{Electrical Power (Current, Voltage)}}
!Electrical Power (Voltage, Resistance)
{{Electrical Power (Voltage, Resistance)}}
!Electrical Resistivity
{{Electrical Resistivity}}
!Elements
{{Elements}}
!Enegry Stored In a Capacitor
{{Enegry Stored In a Capacitor}}
!Energy
{{Energy}}
!Energy Stored in an Inductor
{{Energy Stored in an Inductor}}
!Equation Template
{{Equation Template}}
!Equilibrant
{{Equilibrant}}
!Equilibrium
{{Equilibrium}}
!Excess Air
{{Excess Air}}
!Expansion Ratio
{{Expansion Ratio}}
!Exponential Growth & Decay
{{Exponential Growth & Decay}}
!Extensive Property
{{Extensive Property}}
!Fahrenheit
{{Fahrenheit}}
!Faraday's law of Induction
{{Faraday's law of Induction}}
!Flow Energy
{{Flow Energy}}
!Flow Systems
{{Flow Systems}}
!Force
{{Force}}
!Force Diagram
{{Force Diagram}}
!Form Factor of a Waveform
{{Form Factor of a Waveform}}
!Framed Structure
{{Framed Structure}}
!Free Surface
{{Free Surface}}
!Frequency
{{Frequency}}
!Fuel
{{Fuel}}
!Fulcrum
{{Fulcrum}}
!Funicular Diagram
{{Funicular Diagram}}
!Gas
{{Gas}}
!Gas Constant
{{Gas Constant}}
!Gauge Pressure
{{Gauge Pressure}}
!Gay Lussac's Law
{{Gay Lussac's Law}}
!General Gas Law
{{General Gas Law}}
!Graphically
{{Graphically}}
!Gravitational or Potential Energy
{{Gravitational or Potential Energy}}
!Gravity
{{Gravity}}
!Greek Letters
{{Greek Letters}}
!Heat Energy
{{Heat Energy}}
!Heat Energy Transfer
{{Heat Energy Transfer}}
!Height
{{Height}}
!Hooke's Law
{{Hooke's Law}}
!Ideal Gas
{{Ideal Gas}}
!Imaginary Numbers
{{Imaginary Numbers}}
!Impedance
{{Impedance}}
!Inductance
{{Inductance}}
!Inductance of a Coil
{{Inductance of a Coil}}
!Inductive Reactance
{{Inductive Reactance}}
!Inertial Force
{{Inertial Force}}
!Initial Angular Velocity
{{Initial Angular Velocity}}
!Initial Velocity
{{Initial Velocity}}
!Intensive Property
{{Intensive Property}}
!Isobaric
{{Isobaric}}
!Isolated System
{{Isolated System}}
!Isometric
{{Isometric}}
!Isothermal
{{Isothermal}}
!Kelvin
{{Kelvin}}
!Kinetic Energy
{{Kinetic Energy}}
!Kirchhoff's Current Law
{{Kirchhoff's Current Law}}
!Kirchhoff's Voltage Law
{{Kirchhoff's Voltage Law}}
!Latent Enthalpy
{{Latent Enthalpy}}
!Latent Heat
{{Latent Heat}}
!Latent Volume
{{Latent Volume}}
!Machine
{{Machine}}
!Magnetic Field Strength
{{Magnetic Field Strength}}
!Magnetic Flux
{{Magnetic Flux}}
!Magnetic Flux Density
{{Magnetic Flux Density}}
!Magnetic Permeability of Free Space
{{Magnetic Permeability of Free Space}}
!Magnetic Reluctance
{{Magnetic Reluctance}}
!Magnetomotive Force
{{Magnetomotive Force}}
!Magnitude
{{Magnitude}}
!Mass
{{Mass}}
!Modulus of Rigidity
{{Modulus of Rigidity}}
!Molar Mass
{{Molar Mass}}
!Molecules
{{Molecules}}
!Moments
{{Moments or Bending Moments}}
!Momentum
{{Momentum}}
!Motional EMF
{{Motional EMF}}
!Non Value Added
{{Non Value Added}}
!Non-Flow Systems
{{Non-Flow Systems}}
!Normal
{{Normal}}
!Number of Moles
{{Number of Moles}}
!Ohm's Law
{{Ohm's Law}}
!Ohm's Law for AC
{{Ohm's Law for AC}}
!Parallel
{{Parallel}}
!Permeability
{{Permeability}}
!Permeability and Magnetic Fields
{{Permeability and Magnetic Fields}}
!Perpendicular
{{Perpendicular}}
!Pivot
{{Pivot}}
!Point Load
{{Point Load}}
!Poisson's Ratio
{{Poisson's Ratio}}
!Polytropic Equation
{{Polytropic Equation}}
!Polytropic Index
{{Polytropic Index}}
!Power
{{Power}}
!Pressure
{{Pressure}}
!Primary Forces
{{Primary Forces}}
!Products of Combustion
{{Products of Combustion}}
!Rate of Change
{{Rate of Change}}
!Reactance
{{Reactance}}
!Reactants
{{Reactants}}
!Reaction Force
{{Reaction Force}}
!Relative Permeability
{{Relative Permeability}}
!Resistance
{{Resistance}}
!Resistance: Temperature Coefficient
{{Resistance: Temperature Coefficient}}
!Resistors in Parallel
{{Resistors in Parallel}}
!Resistors in Series
{{Resistors in Series}}
!Resolve
{{Resolve}}
!Resultant
{{Resultant}}
!Root Mean Squared Voltage
{{Root Mean Squared Voltage}}
!Rotational Kinetic Energy
{{Rotational Kinetic Energy}}
!RTFQ
{{RTFQ}}
!Saturated Steam
{{Saturated Steam}}
!Saturated Water
{{Saturated Water}}
!Saturation Temperature
{{Saturation Temperature}}
!Scalar
{{Scalar}}
!Scientific Notation
{{Scientific Notation}}
!Sensible Energy
{{Sensible Energy}}
!Sensible Enthalpy
{{Sensible Enthalpy}}
!Sensible Volume
{{Sensible Volume}}
!Sequence
{{Sequence}}
!Shear Strain
{{Shear Strain}}
!Shear Stress
{{Shear Stress}}
!Simply Supported Beam
{{Simply Supported Beam}}
!Space Diagram
{{Space Diagram}}
!Specific
{{Specific}}
!Specific Heat Capacity
{{Specific Heat Capacity}}
!Specific Volume
{{Specific Volume}}
!Speed
{{Speed}}
!Standard Notation
{{Standard Notation}}
!State Change
{{State Change}}
!Stoichiometric Ratio
{{Stoichiometric Ratio}}
!Stored Charge
{{Stored Charge}}
!Strain
{{Strain}}
!Stress
{{Stress}}
!Support Reactions
{{Support Reactions}}
!SUVAT
{{SUVAT}}
!Temperature
{{Temperature}}
!Temperature Change
{{Temperature Change}}
!The Engineers Characteristic Gas Law
{{The Engineers Characteristic Gas Law}}
!Time
{{Time}}
!Time Constant
{{Time Constant}}
!Time Period
{{Time Period}}
!Torque
{{Torque}}
!Total
{{Total}}
!Total Impedance of an Capacitor in Series with a Resistance
{{Total Impedance of an Capacitor in Series with a Resistance}}
!Total Impedance of an Inductor in Series with a Resistance
{{Total Impedance of an Inductor in Series with a Resistance}}
!Transformer Equation
{{Transformer Equation}}
!Trigonometry
{{Trigonometry}}
!Tripple Point of Water
{{Tripple Point of Water}}
!Tripple Point of Water (Pressure)
{{Tripple Point of Water (Pressure)}}
!Tripple Point of Water (Temperature)
{{Tripple Point of Water (Temperature)}}
!Uniaxial
{{Uniaxial}}
!Uniform Acceleration
{{Uniform Acceleration}}
!Uniformly Distributed Load
{{Uniformly Distributed Load}}
!Universal Gas Constant
{{Universal Gas Constant}}
!Universal Gas Law
{{Universal Gas Law}}
!Up Thrust
{{Up Thrust}}
!Value Added
{{Value Added}}
!Vectors Introduction
{{Vectors Introduction}}
!Velocity
{{Velocity}}
!Voltage
{{Voltage}}
!Voltage Decay on Capacitor
{{Voltage Decay on Capacitor}}
!Water Vapour
{{Water Vapour}}
!Waveform Average Value
{{Waveform Average Value}}
!Weight
{{Weight}}
!Wet Steam
{{Wet Steam}}
!What is Quality?
{{What is Quality?}}
!Work
{{Work}}
!Young's Modulus
{{Young's Modulus}}
<$range tiddler="RangeDemo" min="-5" max="5" default="2.5" increment=".01"/> {{RangeDemo}}
<$list filter="[{RangeDemo}]">
<$graph color='blue' thickness='1' minX="0" minY="-6" maxY="6" equation="
Math.sin(x) * parseFloat($tw.wiki.getTiddlerText('RangeDemo'))
"></$graph>
</$list>
```
<$range tiddler="RangeDemo" min="-5" max="5" default="2.5" increment=".01"/> {{RangeDemo}}
<$list filter="[{RangeDemo}]">
<$graph color='blue' thickness='1' minX="0" minY="-6" maxY="6" equation="
Math.sin(x) * parseFloat($tw.wiki.getTiddlerText('RangeDemo'))
"></$graph>
</$list>
```
[img[http://steacher.droppages.com/diagrams/Vector.svg]] A Vector.
As you can see this vector goes a little to the right and a little bit up. Lets imagine it's a [[force|Force]].
We can find out how much right and how much up by drawing a scale diagram.
<center>
@@.no-border
|[img[http://steacher.droppages.com/diagrams/Vector_2.svg]]|[img[http://steacher.droppages.com/diagrams/Vector_3.svg]]|
|Draw the Vector to scale at the correct angle.|Draw the other two sides of the triangle and measure them.|
@@
</center>
Vectors going up and vectors going right are +
Vectors going down and vectors going left are -
Remember there is no such thing as a negative force, just one going in the opposite direction.
[[Horizontal|Horizontal Component]] and [[vertical|Vertical Component]] components of a force can be combined back into a single vector called the [[resultant|Resultant]].
<center>
[img[http://steacher.droppages.com/diagrams/Resultant_1.svg]]</center><br>
!!Step 1
Get your protractor and rule out.
<center>
[img[http://www.pathstoliteracy.org/sites/pathstoliteracy.perkinsdev1.org/files/protractortemplate.png]]<br>(pic from [[here|http://www.pathstoliteracy.org/sites/pathstoliteracy.perkinsdev1.org/files/protractortemplate.png]])<br>
You did bring your protractor to class didn't you? </center><br>
!!Step 2
The golden rule is to draw the vectors ''TO SCALE, HEAD TO TAIL'' so the next vector starts at the pointy bit of the last one.
!!!To Scale
The vector must be at a scale size, i.e. half size, 100KN to a cm, 1kN to a cm etc and ''in the SAME DIRECTION'' as the forces in the original diagram. Remember if the original force diagram is drawn to scale you can measure those angles.
!!I've drawn it... what now
If after drawing your vectors ''head to tail'' the head of the last vector is at the start of the first vector in your system then it is in equilibrium.
If there is a gap there is a resultant vector that is needed to close the polygon.
The direction of the resultant vector is the one which gets you from the start to the finish.
!!Why should I not just whip out the calculator and do some sweet sweet trig?
*The advantage of drawing vectors graphically is that there is no need to break diagonal vectors down into their horizontal and vertical components in order to find the resultant and is therefore potentially a quick method to get a reasonably accurate result.
*This method can be applied to multiple vectors
*The disadvantage is the loss of accuracy as this method will only be as accurate as your diagram and measuring equipment.
Below you can see four vectors acting about a point . You can see as you interact with the vectors that the resultant in the three examples is always the same.
<iframe scrolling="no" src="https://www.geogebra.org/material/iframe/id/3311669/width/600/height/600/border/888888/rc/false/ai/false/sdz/true/smb/false/stb/false/stbh/true/ld/false/sri/true/at/auto" width="600px" height="600px" style="border:0px;"> </iframe>
<iframe scrolling="no" src="https://www.geogebra.org/material/iframe/id/86992/width/625/height/625/border/888888/rc/false/ai/false/sdz/true/smb/false/stb/false/stbh/true/ld/false/sri/true/at/auto" width="625px" height="625px" style="border:0px;"> </iframe>
Using scale drawings to determine the solution to [[vector|Vectors]] problems.
[[Vectors]] may be [[resolved|Resolve]] or the [[resultant|Resultant]] found using these methods.
<$graph color='["red","blue","green"]' unitsPerTick="2" minX="0" minY="-6" maxY="6">
5 * Math.sin(x)
1/x
x*x+x
</$graph>
```
<$graph color='["red","blue","green"]' unitsPerTick="2" minX="0" minY="-6" maxY="6">
5 * Math.sin(x)
1/x
x*x+x
</$graph>
```
<$graph color='blue' thickness='1' minX="0" minY="-6" maxY="6" equation="5 * Math.sin(x)">
</$graph>
```
<$graph color='blue' thickness='1' minX="0" minY="-6" maxY="6" equation="5 * Math.sin(x)">
</$graph>
```
<$graph color='blue' thickness='1' bounds="[0,-6,10,6]" equation="
x < /*lower*/ Math.PI/2 ? undefined : /*upper*/ x > 5*Math.PI/2 ? undefined : /*function*/ 5 * Math.sin(x)
">
</$graph>
```
<$graph color='blue' thickness='1' bounds="[0,-6,10,6]" equation="
x < /*lower*/ Math.PI/2 ? undefined : /*upper*/ x > 5*Math.PI/2 ? undefined : /*function*/ 5 * Math.sin(x)
">
</$graph>
```
<$graph color='["red","blue","green"]' minX="0" minY="0">
x+3
[2,2]
[ [3,2],[4,1],[2,5] ]
</$graph>
```
<$graph color='["red","blue","green"]' minX="0" minY="0">
x+3
[2,2]
[ [3,2],[4,1],[2,5] ]
</$graph>
```
If something has a long way to fall it has a large potential energy.<br>
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Where does the P.E. equation come from?]]<br>
All masses have gravity.<br>
It would be more correct to say all masses have a gravitational field.
The bigger the object the more gravity it has.
Gravity causes objects to be attracted to each other, so your pen will be attracted to the desk, however the forces involved are so small compared to the gravitational force from the mass of the earth that it can be ignored.
If however you measured the gravity at the bottom of Mt. Everest it would be slightly different to the gravity in Bognor.
Gravity on earth is generally given as $$9.81m/s^2$$ this means that an object in free fall, ignoring air resistance, will accelerate downwards at $$9.81m/s/s$$
{{||$:/template : constant}}
Greek letters are often used for engineering and physics variables, for example [[stress|Stress]] is represented by $$\sigma$$.
Here is a list of those letters (lower then upper case) and what they are called.
| $$\alpha \space A$$ | $$\beta \space B$$ | $$\gamma \space \Gamma$$ | $$\delta \space \Delta$$ | $$\epsilon \space \text{or} \space \varepsilon \space E$$ |
| [[Alpha]] | [[Beta]] | [[Gamma]] | [[Delta]] | [[Epsilon]] |
| $$\zeta \space Z$$ | $$\eta \space H$$ | $$\theta \text{ or } \vartheta \space \Theta$$ | $$ \kappa \space K$$ | $$\lambda \space \Lambda$$ |
| [[Zeta]] | [[Eta]] | [[Theta]] | [[Kappa]] | [[Lambda]] |
| $$\mu \space M$$ | $$\nu \space N$$ | $$\xi \space \Xi$$| $$\pi \space \Pi$$ | $$\rho \text{ or }\varrho \space P$$ |
| [[Mu]] | [[Nu]] | [[Xi]] | [[Pi]] | [[Rho]] |
| $$\sigma \space \Sigma$$ | $$\tau \space T$$ | $$\upsilon \space \Upsilon$$ | $$\phi \text{ or }\varphi \space\Phi$$ |
| [[Sigma]] | [[Tau]] | [[Upsilon]] | [[Phi]] |
| $$\psi \space \Psi$$| $$\omega \space \Omega$$ |
| [[Psi]] | [[Omega]]|
!!Gripping Strength
|!Gripping a test handle $$50mm$$ wide $$\times 100mm$$ long|<|<|<|<|
|!Sex|!Mean ($$N$$)|!S.D ($$N$$)|!Range ($$N$$)|
|Male|54.03|7.04|43,10 - 64.40|
|Female|31.42|4.99|21,50 - 37,30|
Documents describing machining processes for Hardox can be found somewhere [[here|https://www.ssab.com/products/brands/hardox]].
This is the energy needed to change the temperature of something and is often closely related to [[internal energy|Internal Energy]] and [[enthalpy|Enthalpy]].
{{||$:/template : equation}}
$$\Delta T $$=$$ T_2-T_1$$ which is the [[change in temperature|Temperature Change]].
{{||$:/template : variable}}
[[Would you like to know more?|Where does the H.E. equation come from?]]<br>
The [[energy|Energy]] released by steam cooling back into water.
{{||$:/template : equation}}
{{||$:/template : variable}}
This is simply the [[heat energy|Heat Energy]] per second.
{{||$:/template : variable}}
The height of something above a surface.
{{||$:/template : variable}}
<div class="tc-table-of-contents">
<<toc-selective-expandable 'Help'>>
</div>
To go into edit mode you can create a new note, {{$:/core/ui/Buttons/new-tiddler}}, or edit an existing note (the {{$:/core/ui/Buttons/edit}} button at the top of the note)
In the editing area:
!Title
Must be unique. Is case sensitive so ''hello world'', ''Hello World'' and ''hElLo woRld'' would all be different.
!Tags
Under the title box is the tags box. This can be used to catogerise notes and can also be used in a [[hierarchy|Using Tags]] kind of a way.
Clicking on a tag will list all other notes with the same tag.
!Editor Window
Your main place to type! Have a play with the editor buttons.
The editor uses [[wikitext|https://tiddlywiki.com/#WikiText]].
Follow the link for details.
!Content Type
Stick with the default, though the image options could be useful.
!Fields
These can be used for a lot and are one of the things that add to the flexibility of the tiddlywiki platform.
In this wiki they are used in the [[equation|Equations]] and [[constant|Constants]] notes to store information which is then used by a template to display the cross references etc. The template is triggered by the ''Constant'', ''Variable'' and ''Equation'' tags.
!Other Exciting Things
Putting things in double square brackets
```
[[like this]]
```
will make a link to another note. Unwritten links will be in //italics//.
To make text point to somewhere different do this:
```
[[text shown|name of note you want to link to]]
```
This can also be used for links to other sites:
```
[[The BBC|https://bbc.co.uk]]
```
[[The BBC|https://www.bbc.co.uk]]
To include one note in another note put it's title between double curly brackets. This is called ''transclusion''.
```
{{Transcluded Text}}
```
{{Transcluded Text}}
Enjoy.
\define HelpButton(label, ButtonText:?)
^^(<$button popup="""$:/temp/popup/$(currentTiddler)$/$label$""" class='tc-btn-invisible tc-tiddlylink'>$ButtonText$</$button>)<$reveal type='popup' state="""$:/temp/popup/$(currentTiddler)$/$label$"""><div class='tc-drop-down' style='width:1500px;max-width:75vw;white-space:pre-wrap;padding:10px;text-align:left;font-size:1.5em;border-radus:0.5em;'><$transclude field="""$label$"""/></div></$reveal>^^
\end
Usage:
```
This adds a help button that looks like this<<HelpButton demo>>
```
This adds a help button that looks like this<<HelpButton demo>>
```
This adds a help button that looks like this<<HelpButton demo2 'why?'>>
```
This adds a help button that looks like this<<HelpButton demo2 'why?'>>
Contents of the `demo` field: {{!!demo}}
Contents of the `demo2` field: {{!!demo2}}
You make a field for each label that contains the help information. This can have html and simple wikitext. Since it is a field linebreaks need to be added using html `<br>` tags.
If the water vapour from [[BURNING|https://youtu.be/en1uwIzI3SE]] [[hydrogen|Hydrogen]] is condensed (turns back to water) then it is normally assumed that an extra $$2441.8 kJ$$ of [[energy|Energy]] is released per $$kg$$ of water.
If this energy is added to the energy released in combustion then we get the Higher Calorific Value (H.C.V.). This is also called the ''gross calorific value''.
{{||$:/template : variable}}
{{||$:/template : equation}}
This Assumes $$100 \%$$ efficiency and is only true if the exhaust (flue) gas is cooled back to the same temperature as the gas going in.
The change in temperature measured and the mass is that of the water which has been heated by the burning of the gas.
{{||$:/template : equation}}
.tc-tagged-Welcome {background-color:rgba(255,0,0,0);}
.tc-tagged-Welcome .tc-tiddler-body { background-color:black;}
.tc-tagged-Welcome .tc-title { display:none;}
.tc-tagged-Welcome .tc-subtitle { display:none;}
.tc-tagged-Welcome .tc-tags-wrapper { display:none;}
.tc-tagged-Welcome .tc-tiddler-controls button svg { fill: black; background-color:black; }
.tc-tagged-Welcome .tc-tiddler-frame { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow:none; border:none;}
.tc-tagged-Welcome .tc-titlebar {display:none;}
.tc-tagged-Welcome {font-size:xx-large}
<<<
In many of the more relaxed civilizations on the Outer Eastern Rim of the Galaxy, the Hitchhiker's Guide has already supplanted the great Encyclopaedia Galactica as the standard repository of all knowledge and wisdom, for though it has many omissions and contains much that is apocryphal, or at least wildly inaccurate, it scores over the older, more pedestrian work in two important respects.
First, it is slightly cheaper; and secondly it has the words ''DON'T PANIC'' inscribed in large friendly letters on its cover.
<<<
Douglas Adams, Hitchhikers Guide to The Galaxy.
Hooke's Law, named after [[Robort Hooke|https://en.wikipedia.org/wiki/Robert_Hooke]], states that the deformation of a material is proportional to the force as long as it is within the [[elastic limit|Elastic Limit]].<br>
Which means....
If you hang [[weights|Weight]] on a spring (or a bar, but mostly springs) the amount it stretches is proportional to the amount of weight you hang off it, just don't over stretch it.
Which means...
The more weight you hang, the more it stretches.
The side to side component of a [[vector|Vectors]].
This page provides links to sites providing data on human strength and endurance.
!!Safety Note
The following data is for guidance and is not for detailed design.
In designing any equipment requiring manual handling one is advised to refer the the relevant regulations. Ref. HSE Info
!!Strength Categories
There are three basic categories of strength:
{{Static Strength}}
---
{{Dynamic Strength}}
---
{{Explosive Strength}}
---
This is the application of peak amounts of strength for short periods of time, usually periodically, such as in running or sprinting.
Obviously a person can exert the maximum forces with impulsive strength and the minimum forces with static strength.
The strength of males increases steadily until approx 30yr. old. This increase is most rapid beween the ages of 12 and 19. Similarly womens strength peaks at 30. However the strength of women increases more uniformly between the ages of 9 and 19yrs
Women are approx. 35% to 85% as strong as men depending upon the muscles used
The left hand and arm are generaly 10% weaker than the right hand and arm
!!!Strength
A momentary , single task maximum exertion, or a sustained effort.
!!!Endurance
A sustained effort.
Findings show that endurance is enhanced by exercise, rest, food,and increased atmospheric pressure. However endurance is reduced by fatigue, hunger, low atmospheric pressure, high temperature accompanied by high humidity and tobacco. Muscular power is also reduced by excitement and mental work. Males have greater endurance than females >
Recovery Rate after a standard exercise has been found to be 40% after 1 mins rest, 65% after 2 mins rest, 85% after 4 mins rest and 96% after 8 mins rest
!!Selected Strength Values
Below are presented some strength values.. These must be used with extreme caution and are provided as easy look-up values to give the feel of the forces related to certain tasks. They are not intended to be statistically justifiable. The links below include quality information to be used for important work..
''The following tables are for age 31-50''
{{Gripping Strength}}
{{Turning Circular Knob}}
{{Twisting Lid}}
{{Pulling Horizontal Bar}}
{{Pushing Horizontal Bar}}
{{Pressing Pedal}}
Hydrogen always burns to form water ($$\ce{H2O}$$).
If the water vapour condenses, more energy is released (you put energy into water to make it boil, as it cools it gives up it's heat energy to it's surroundings).
In practical combustion the condensed water vapour will form acids with the sulphur and this can cause corrosion.
Industrial equipment for measuring the contents of the [[products|Products of Combustion]] usually removes the water from the sample and the products are then called the [[dry products|Dry Products of Combustion]].
<center>
$$\ce{2H2}+\ce{O2=2H2O}$$
$$\text{Mass ratio: } 4+32=36$$
$$\text{So: } 4kg \space \ce{H2}+32kg \space \ce{O2}=36kg \space \ce{H2O}$$
$$1kg \space \ce{H2}+8kg \space \ce{O2}=9kg \ce{H2O}$$
</center>
$$\text{So for }1kg \text{ of } \ce{H2} \text{ we need }8kg \text{ of } \ce{O2} \text{ and produce } 9kg \text{ of } \ce{H2O} \text{ (steam)}$$
Does exactly what the title says...
Remember [[depth|Depth]] is the average depth as this is point about which we assume the pressure is acting.
{{||$:/template : equation}}
<br>
{{||$:/template : variable}}
In a perfect gas if a molecule bounces off the side of the container it's in it is perfectly elastic and no energy is lost from the molecule.
<center>''There is no such thing as a perfect (or ideal) gas.''</center>
In reality there is a slight [[force|Force]] of attraction between gas molecules but this is so small that [[gas laws|Gas Laws]] for a perfect or ideal gas work quite well for real gases.
```
<center>
[img[http://steacher.droppages.com/diagrams/Concurrent_forces.svg]]</center><br>
```
The letter $$i$$ or $$j$$ is used for imaginary numbers.
{{||$:/template : equation}}
{{||$:/template : variable}}
Something which seems to be like resistance in DC but the maths gets nasty.
{{||$:/template : equation}}
{{||$:/template : variable}}
An imperfect frame is a frame with a load which does not follow the [[beams to joints equation|Simple Frame Joints to Members Equation]].
When there is not enough oxygen present when [[BURNING|https://youtu.be/en1uwIzI3SE]] resulting in the formation of carbon monoxide, $$\ce{CO}$$, instead of carbon dioxide, $$\ce{CO2}$$.
Incremental changes are small, gradual improvements
over the existing product. These are often refinements based on experience with previous iterations of the product. The general concepts underlying the operation of the product are unlikely to have changed significantly.
If a current of 1 ampere flowing through the coil produces flux linkage of 1 Weber turn, the coil has a self inductance of 1 Henry.
<<<
*$$\Delta \varepsilon $$ decreases in the direction of current flow if current is increasing.
*$$\Delta \varepsilon $$ increases in the direction of current flow if current is decreasing.
*$$\Delta \varepsilon $$ is measured in the direction of current in the circuit.
https://chunghuastpm.weebly.com/uploads/1/2/0/5/12055903/chapter17_electromagnetic_induction_bnw.pdf
<<<
$$\Delta V_L$$ or $$\Delta V_t$$ is also used instead of $$\Delta \varepsilon $$
Inductance can be found using $$\displaystyle L= \frac{V_t \times dt}{dI} $$ but is usually written as:
{{||$:/template : equation}}
To find the direction of the voltage $$-L$$ is used as the voltage change is opposite to the current flow.
{{||$:/template : variable}}
See: https://www.electronics-tutorials.ws/inductor/inductance.html
{{||$:/template : equation}}
When you are doing a question a common error is to not use the correct units when putting the numbers into the equations.
There are a couple of things to think about.
# Is it the correct type of unit? E.g. Use meters not yards.
# Is it the correct size? E.g. Turn $$km$$ into $$m$$
The following questions will look at [[prefixes|Prefixes]] and how to apply them.
<<list-links "[tag[Induction Intro lvl 1]]">>
In the previous set of questions you will have found yourself writing long numbers and possibly having to think about where to put the decimal point or how many zeros are needed.
There is an easier way.
[[Scientific Notation]].
The following set of questions let you convert numbers from [[standard notation|Standard Notation]] to scientific notation and back again.
<<list-links "[tag[Induction Intro lvl 2]]">>
<<<
As the frequency increases, the capacitor passes more charge across the plates in a given time resulting in a greater current flow through the capacitor appearing as if the internal impedance of the capacitor has decreased. Therefore, a capacitor connected to a circuit that changes over a given range of frequencies can be said to be “Frequency Dependant”.
https://www.electronics-tutorials.ws/filter/filter_1.html
<<<
{{||$:/template : equation}}
This value depends on the shape of the spinning thing.
For a solid flywheel $$k=0.5$$
For a hollow cylinder $$k \approx 1$$
{{||$:/template : variable}}
The reason why you keep moving after your car has stopped. I'm not sure it's real as the ACTUAL reason you keep moving is that until the seat belt kicks in there is no force acting on you to stop you going forwards. (see [[Newtons Laws of Motion]])
It is sometimes a useful concept to help think about problems.
An imaginary force which opposes movement in an equal and opposite way and alows us to treat dynamics problems like static problems using [[D’Alembert’s Principle]].
[[Angular velocity|Angular Velocity]] at the start of the section being looked at.
{{||$:/template : variable}}
[[Velocity]] at the start of the section being looked at.
{{||$:/template : variable}}
The initial volume before a gas has been expanded or compressed.
{{||$:/template : variable}}
I know a man named <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a3"/>, his first name is <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a1"/>, who has <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b2"/> wikis. Before long <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a1"/> had <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="b1"/> tiddlers. On average, Mr. <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="a2"/> had <$macrocall $name="eval1" datatiddler="$:/sk/data" cell="c2"/> tiddlers per wiki. He made approximately £<$macrocall $name="eval1" datatiddler="$:/sk/data" cell="d4"/> per hour for all his work.
When developing a new product. the improvements over existing products could be
either [[incremental|Incremental]] or innovative.
Innovation may happen when a new technology comes along that enables the production of items that were impossible before - see the section on technology
push above. Innovation can also occur in situations where the way of acengihieving a given product’s functionality is examined from a non-conventional perspective or where technologies or approaches from another discipline are brought in.
As a classic example of innovation, Owen Finlay Maclaren <<richlink "https://en.wikipedia.org/wiki/Owen_Finlay_Maclaren">> , a designer involved in creating the
folding undercarriages of Spitfire fighter aircraft in the run-up to the Second World War later used his knowledge of lightweight fabrication and folding mechanisms to create collapsible pushchairs and baby buggies.
Innovation in your product's design does offer the
possibility of creating a clear difference between yourself and your competitors. For commercial success the innovation must not simply be a novelty but has to be something that the customer values, so understanding what your end users want from your product is crucial.
See [[$:\Header Font]] and [[$:\The Font Header Section]]
[[Google Fonts page|https://fonts.google.com/?category=Display,Handwriting&selection.family=Amatic+SC|Annie+Use+Your+Telescope|Architects+Daughter|Cabin+Sketch|Dancing+Script|Fredericka+the+Great|Gloria+Hallelujah|Handlee|Love+Ya+Like+A+Sister|Nixie+One|Reenie+Beanie|Rock+Salt|Short+Stack|Special+Elite|Tangerine|The+Girl+Next+Door|Zeyada]]
@@font-family: 'Quattrocento Sans';
font-family: 'Quattrocento Sans';
@@
@@font-family: 'rcdemo';
font-family: 'rcdemo';
@@
@@font-family: 'Amatic SC', cursive;
font-family: 'Amatic SC', cursive;
@@
@@font-family: 'Permanent Marker', cursive;
font-family: 'Permanent Marker', cursive;
@@
@@font-family: 'Annie Use Your Telescope', cursive;
font-family: 'Annie Use Your Telescope', cursive;
@@
@@font-family: 'Architects Daughter', cursive;
font-family: 'Architects Daughter', cursive;
@@
@@font-family: 'Cabin Sketch', cursive;
font-family: 'Cabin Sketch', cursive;
@@
@@font-family: 'Dancing Script', cursive;
font-family: 'Dancing Script', cursive;
@@
@@font-family: 'Fredericka the Great', cursive;
font-family: 'Fredericka the Great', cursive;
@@
@@font-family: 'Gloria Hallelujah', cursive;
font-family: 'Gloria Hallelujah', cursive;
@@
@@font-family: 'Handlee', cursive;
font-family: 'Handlee', cursive;
@@
@@font-family: 'Love Ya Like A Sister', cursive;
font-family: 'Love Ya Like A Sister', cursive;
@@
@@font-family: 'Nixie One', cursive;
font-family: 'Nixie One', cursive;
@@
@@font-family: 'Reenie Beanie', cursive;
font-family: 'Reenie Beanie', cursive;
@@
@@font-family: 'Rock Salt', cursive;
font-family: 'Rock Salt', cursive;
@@
@@font-family: 'Short Stack', cursive;
font-family: 'Short Stack', cursive;
@@
@@font-family: 'Special Elite', cursive;
font-family: 'Special Elite', cursive;
@@
@@font-family: 'Tangerine', cursive;
font-family: 'Tangerine', cursive;
@@
@@font-family: 'The Girl Next Door', cursive;
font-family: 'The Girl Next Door', cursive;
@@
@@font-family: 'Zeyada', cursive;
font-family: 'Zeyada', cursive;
@@
@@font-family: 'Gamja Flower', cursive;
font-family: 'Gamja Flower', cursive;
@@
@@font-family: 'Gochi Hand', cursive;
font-family: 'Gochi Hand', cursive;
@@
An intensive property is a property of a [[mass|Mass]] which remains the same value when the mass is divided into smaller parts.<br><br>
For example the [[temperature|Temperature]] or [[density|Density]] of a substance is unchanged if it is divided into smaller parts.
So, how do you tackle these questions?
!!Step 1
[[RTFQ]]
#A thing of mass $$2kg$$ accelerates at $$3m/s^2$$.<br>What is the force needed?
#A thing of mass $$20kg$$ has a force of $$5N$$ applied to it.<br>What is the acceleration?
#A thing has a force of $$54N$$ applied to it and accelerates at $$7m/s^2$$.<br> What is the mass?
!!Step 2
Write down the values that you are given.
For the cells below enter a number or a ''?'' for thing you want to find out.
{{FormulaResult Button}}
[[Mass]] $$=$$<$macrocall $name="eval1" datatiddler="$:/sk/test" cell="mass"/> $$kg$$
[[Acceleration]]$$= $$<$macrocall $name="eval1" datatiddler="$:/sk/test" cell="accel"/> $$m/s^2$$
[[Force]]$$= $$<$macrocall $name="eval1" datatiddler="$:/sk/test" cell="force"/>
!!Step 3
Write down the formula (or formulas) which might be needed.
{{$:/sk/test!!texforce}}
!!Step 4
Rearrange the formula if needed (for more complex formulas it may be easier to do some of the calculation before rearranging)
<$reveal type="match" state="$:/sk/test!!mass" text="?">
''{{$:/sk/test!!texmass}}''
</$reveal>
<$reveal type="match" state="$:/sk/test!!accel" text="?">
''{{$:/sk/test!!texaccel}}''
</$reveal>
<$reveal type="match" state="$:/sk/test!!force" text="?">
''No transposition needed this time''
</$reveal>
!!Step 5
Put the numbers into the formula.
<$reveal type="match" state="$:/sk/test!!mass" text="?">
$$m=$${{$:/sk/test!!force}}/{{$:/sk/test!!accel}}
</$reveal>
<$reveal type="match" state="$:/sk/test!!accel" text="?">
$$a=$${{$:/sk/test!!force}}/{{$:/sk/test!!mass}}
</$reveal>
<$reveal type="match" state="$:/sk/test!!force" text="?">
$$F=$${{$:/sk/test!!mass}}$$\times$${{$:/sk/test!!accel}}
</$reveal>
!!Step 6
Calculate the answer ''and don't forget the units''
{{FormulaResult Button}}
<$reveal type="match" state="$:/sk/test!!accel" text="?">
$$a=$$<$macrocall $name="eval1" datatiddler="$:/sk/test" cell="calaccel"/> $$m/s^2$$
</$reveal>
<$reveal type="match" state="$:/sk/test!!force" text="?">
$$F=$$<$macrocall $name="eval1" datatiddler="$:/sk/test" cell="calforce"/> $$N$$
</$reveal>
<$reveal type="match" state="$:/sk/test!!mass" text="?">
$$m=$$<$macrocall $name="eval1" datatiddler="$:/sk/test" cell="calmass"/> $$kg$$
</$reveal>
Internal energy is the total [[energy|Energy]] of all the molecules in a substance. The more [[heat energy|Heat Energy]] is put into something the more the internal energy increases.
As we know [[heat energy|Heat Energy]] is given by the equation $$Q=mc \Delta t$$ and, for a fixed volume (solids, liquids and gasses in a fixed size box), we can say that internal and heat energy are the same and so internal energy is often written as $$U=Q$$.
[[Would you like to know more?|Internal Energy (Fixed Volume)]]
Remember things are a little different for gasses which are allowed to expand and contract.
[[Would you like to know more?|Internal Energy (Fixed Pressure)]]
{{||$:/template : equation}}
{{||$:/template : variable}}
If the gas is in a fixed [[pressure|Pressure]] container then some of the [[heat energy|Heat Energy]] will be needed to change the [[volume|Volume]] of the container and the gas will flow into (or out of) the changed space. As we have [[pressure|Pressure]] and flow we have [[flow energy|Flow Energy]] so not all the [[heat energy|Heat Energy]] becomes [[internal energy|Internal Energy]].
{{||$:/template : equation}}
{{||$:/template : variable}}
For a gas in a box of fixed [[volume|Volume]] (or a solid or liquid)
[[internal energy|Internal Energy]] will be the same as the [[heat energy|Heat Energy]] supplied as all the heat goes into the gas. We assume no heat goes into the box.
{{||$:/template : equation}}
{{||$:/template : variable}}
!What is this?
This is a notebook using the [[tiddlywiki platform|https://tiddlywiki.com]] which is an amazingly flexible bit of software (see [[here|http://bit.ly/tiddlytoolmap]] for an ever-increasing list).
''notes'' in the tiddlywiki platform are often called ''tiddlers'' instead.
It all works in a single html file. By default any changes you make will be automatically saved by the browser but it's worth saving manually just like you would in MSWord for example.
The
{{$:/core/ui/Buttons/save}} button at the top of the page will do that. A copy of the file will be downloaded to your download folder. That can be copied, emailed etc. just like any other file.
!!What's {{$:/core/images/chevron-left}} or {{$:/core/images/chevron-right}} for?
You might notice that hovering in the top right corner. It opens or closes the sidebar (appears at top on mobile). The side bar is use full because you can make new notes, look at the [[Table of Contents]] tab, among others, and check out further settings {{$:/core/ui/Buttons/control-panel}} and tweaks.
!!I want to add something that's not an equation or constant!
The {{$:/core/ui/Buttons/new-tiddler}} button has you covered.
[[Help Editing Notes]]
The designer's first task is to explore the design brief provided by the client. In some cases it may give a very clear picture of the requirements, but in others it will be necessary to help clients develop a full understanding of their needs. Briefs should not be regarded as tablets of stone; they may alter as designers begin their research and communicate their findings. A concept which many designers find helpful in analysing a design brief is that of primary and secondary functions. It is sometimes possible to draw up a list of functions that the product must fulfil, and others that would enhance its value but are not essential and could be sacrificed. When the [[PDS]] is written this analysis would be reflected in the weighting or priority given to a particular aspect throughout the design process. A possible list of the primary and secondary functions is given in relation to the second design brief discussed below.
Information is the life blood of the design process and never more so than at the beginning. The types and levels of information which are required change as the process progresses, beginning with broad concepts such as form, energy and control and moving on to the detailed implications of, for example, the use of particular manufacturing processes and precise [[anthropometric data|https://www.pearltrees.com/t/fe-btec-engineering-2010-spec/anthropometric-data/id12624216]]. As it is essential at the beginning of the design process, information retrieval is discussed as part of the investigation phase, but it should be understood to be ongoing.
The investigation phase ends when the designer and client have agreed on the PDS. This sets out all the characteristics of the desired solution as they are understood at this point. It is a place to start from, but as the design progresses and understanding deepens it may be necessary to alter the PDS. Producing a solution to a PDS you know to be inadequate might be justified if a deadline means that a poor solution is better than no solution, but other circumstances that could justify this are hard to imagine. Starting with a PDS that you are likely to alter may seem a major difficulty, but it is more of a problem in theory than in practice.
!!Design briefs
Design briefs must give sufficient information to put the problem in context and to indicate the requirements, but they must not impose unnecessary constraints on the solutions which might be proposed. Consider the following:
!!!Bottle disposal and recycling
//A large supermarket chain. which is very careful to preserve its image of social responsibility, currently operates a bottle disposal and recycling system based on the use of three large bins of different colours. Users are intended to place green, brown and colourless bottles in the appropriate bin. The company does not wish to abandon the service, but it is currently proving uneconomic for a number of reasons. //
#//Users occasionally put bottles in to the wrong bin, which necessitates screening of the bottles before smashing. //
#//The bins fill very rapidly with the bulky bottles which necessitates frequent exchange.//
#//Vandals are attracted if there is any delay in emptying the bins and they have a ready supply of missiles. //
The directors feel that the system needs to be reviewed to simplify sorting, reduce storage problems and reduce abuse. This brief gives a context to the problem and explains the requirements in broad terms. There is no implied solution to the difficulties of bottle disposal and recycling, merely an indication of the total system's deficiencies.
The problem of sorting could be tackled at two different places the point where the users dispose of the bottles, or in the factory. It could also be tackled in different ways: a small coin might be given as a reward for a number of bottles in the correct bin (providing the colour can be detected and recognised), or the boules could be sorted, manually or mechanically, on the factory's conveyor belts. The storage problems would be significantly reduced (and the sorting problems would be multiplied) if the bottles could be smashed before they enter the bin, but could this be done safely? Could 'user energy' be employed or would it be necessary to provide an independent power supply? Perhaps the bottle smashing could be turned into an entertainment and act as a reward for using the system.
There are also, of course, many way of course many ways of tackling the problem of vandalism. Increasing security is always an option, but so is changing people's attitudes and involvement with the system. Product abuse can be as much a symptom of poor design as it is of disturbed minds. The bottle disposal and recycling brief is an invitation to explore, with the clients , a total system in order to improve its performance. A successful system would help conserve the Earths energy resources, but if it is to succeed the system must be acceptable to the users.
It is particularly important that the users should not be inconvenienced in any sense; they should probably be given an incentive at the point of use, in view of the voluntary nature of the system. It is also worth observing that a system which is economically successful, but consumes more energy than it saves, is unlikely 10 benefit the community. This is a difficult equation because of the cost and energy consumption inherent in waste disposal.
Now consider a second brief which again looks to improve the performance of a system:
!!!Portable drawing equipment.
//It has been common practice in schools to equip specific rooms for Technical Drawing-This leads to considerable inflexibility in the ways in which drawing experiences can be integrated with other aspects of Craft, Design and Technology (CDT) and also to timetabling difficulties. The Head of the CDT department has decided Io tackle this problem by constructing a portable unit to house 20 of the new style Rotring A3 boards and draughting heads. The unit should be secure, house all the necessary accessories and be easily transportable within the department. As it is to form part of a CDT Department's equipment it is essential that the design sets a good example in all respects.
//
Here there is a more specific requirement for a particular artefact. Clearly there will be a need for the design of specific items as a result of the review of the bottle disposal and recycling system, but there is a difference in emphasis. It is likely that one of the first questions to enter your mind when you read the brief for the portable drawing equipment was 'Why Rotring?'. This kind of reaction to an apparently unnecessary constraint is exactly the right kind of response. Designers must not just accept such statements, but set out to establish and search the boundaries of a brief, this brief is explored further in section 2.2.3, but an indication of what might be included in the list of primary and secondary functions is given below.
!!!Primary functions:
*Housing 20 Rotring boards
*housing all necessary sundry equipment
*providing a secure system of storage
*being easily transportable.
!!!Secondary functions:
*Improving the efficiency in using drawing boards,
*Facilitating an integrated approach,
*Improving the Department's visual environment,
*Serving as a design teaching aid.
The ISO 9000:2015 and ISO 9001:2015 standards are based on seven quality management principles that senior management can apply to promote organizational improvement:
!Customer focus
*Understand the needs of existing and future customers
*Align organizational objectives with customer needs and expectations
*Meet customer requirements
*Measure customer satisfaction
*Manage customer relationships
*Aim to exceed customer expectations
*Learn more about the customer experience and customer satisfaction.
!Leadership
*Establish a vision and direction for the organisation
*Set challenging goals
*Model organisational values
*Establish trust
*Equip and empower employees
*Recognise employee contributions
*Learn more about leadership.
!Engagement of people
*Ensure that people’s abilities are used and valued
*Make people accountable
*Enable participation in continual improvement
*Evaluate individual performance
*Enable learning and knowledge sharing
*Enable open discussion of problems and constraints
*Learn more about employee involvement.
!Process approach
*Manage activities as processes
*Measure the capability of activities
*Identify linkages between activities
*Prioritise improvement opportunities
*Deploy resources effectively
*Learn more about a process view of work and see process analysis tools.
!Improvement
*Improve organisational performance and capabilities
*Align improvement activities
*Empower people to make improvements
*Measure improvement consistently
*Celebrate improvements
*Learn more about approaches to continual improvement.
!Evidence-based decision making
*Ensure the accessibility of accurate and reliable data
*Use appropriate methods to analyze data
*Make decisions based on analysis
*Balance data analysis with practical experience
*See tools for decision making.
!Relationship management
*Identify and select suppliers to manage costs, optimize resources, and create value
*Establish relationships considering both the short and long term
*Share expertise, resources, information, and plans with partners
*Collaborate on improvement and development activities
*Recognize supplier successes
*Learn more about supplier quality and see resources related to managing the supply chain.
From ''Quality Management for Organisational Excellence, Introduction to Quality Control'', Seventh Edition by David L. Goetsch and Stanley Davis
|!Characteristics|!ISO9000|!TQM|
|Customer focus (Internal and external)|Yes|Yes|
|Obsession with Quality|No|Yes|
|Scientific Approach to Problem Solving|Yes|Yes|
|Long Term commitment|Partial|Yes|
|Teamwork|No|Yes|
|Continual process and product improvement|Yes|Yes|
|Education and training intensive|Yes|Yes|
|Freedom through control|No|Yes|
|Unity of purpose|Yes|Yes|
|Employee involvement and empowerment|Partial|Yes|
From ''Quality Management for Organisational Excellence, Introduction to Quality Control'', Seventh Edition by David L. Goetsch and Stanley Davis
<<<
Criticisms of ISO 9001 certification
A common criticism of ISO 9000 and 9001 is the amount of money, time, and paperwork required for a complete implementation, and later when needed; ISO 9001 certification.[7] Dalgleish cites the "inordinate and often unnecessary paperwork burden" of ISO, and says that "quality managers feel that ISO's overhead and paperwork are excessive and extremely inefficient".[48] The level of minimum documentation for a minimum scope organization has been greatly reduced going from ISO 9001:2000, through ISO 9001:2008 and lastly ISO 9001:2015.[citation needed]
According to Barnes, "Opponents claim that it is only for documentation. Proponents believe that if a company has documented its quality systems, then most of the paperwork has already been completed".[46] Wilson suggests that ISO standards "elevate inspection of the correct procedures over broader aspects of quality", and therefore, "the workplace becomes oppressive and quality is not improved".[8]
One study showing reasons for not adopting this standard include the risks and uncertainty of not knowing if there are direct relationships to improved quality, and what kind and how many resources will be needed. Additional risks include how much certification will cost, increased bureaucratic processes and risk of poor company image if the certification process fails.[44] According to John Seddon, ISO 9001 promotes specification, control, and procedures rather than understanding and improvement.[9] Wade argues that ISO 9000 is effective as a guideline, but that promoting it as a standard "helps to mislead companies into thinking that certification means better quality, ... [undermining] the need for an organization to set its own quality standards".[45] In short, Wade argues that reliance on the specifications of ISO 9001 does not guarantee a successful quality system.
The standard is seen as especially prone to failure when a company is interested in certification before quality.[9] Certifications are in fact often based on customer contractual requirements rather than a desire to actually improve quality.[46][49] "If you just want the certificate on the wall, chances are you will create a paper system that doesn't have much to do with the way you actually run your business", said ISO's Roger Frost.[49] Certification by an independent auditor is often seen as the problem area, and according to Barnes, "has become a vehicle to increase consulting services".[46]
Dalgleish argues that while "quality has a positive effect on return on investment, market share, sales growth, better sales margins and competitive advantage," "taking a quality approach is unrelated to ISO 9000 registration."[50] In fact, ISO itself advises that ISO 9001 can be implemented without certification, simply for the quality benefits that can be achieved.[51]
Abrahamson argues that fashionable management discourse such as Quality Circles tends to follow a lifecycle in the form of a bell curve, possibly indicating a management fad.[52]
Pickrell argues[citation needed] that ISO systems merely gauge whether the processes are being followed. It does not gauge how good the processes are or whether the correct parameters are being measured and controlled to ensure quality. Furthermore, when unique technical solutions are involved in the creation of a new part, ISO does not validate the robustness of the technical solution which is a key part of advanced quality planning. It is not unheard of for an ISO-certified plant to display poor quality performance due to poor process selection and/or poor technical solutions.
<<richlink "https://en.wikipedia.org/wiki/ISO_9000#Contents_of_ISO_9001:2015" >>
<<<
A change in [[volume|Volume]] and [[temperature|Temperature]] of an [[ideal gas|Ideal Gas]] where the [[pressure|Pressure]] remains constant.
!!//'For an isolated system the amount of energy is constant'//
What is an isolated system?
It is essentially where you draw the line around what you are looking at. e.g a boiling kettle is not an isolated system, it is a part of your kitchen which in itself is part of your house....but what if we really really want to look at the kettle?
We make assumptions which limit the amount the kettle interacts with the kitchen (e.g. no heat loss to the atmosphere) and look at the kettle as if it were a thing all by itself.<br>
[[Would you like to know more?|Conservation of Energy Examples]]
A change in [[pressure|Pressure]] and [[temperature|Temperature]] of an [[ideal gas|Ideal Gas]] where the [[volume|Volume]] remains constant.
A change in [[pressure|Pressure]] and [[volume|Volume]] of an [[ideal gas|Ideal Gas]] where the [[temperature|Temperature]] remains constant.
{{||$:/template : greek}}
```
$$\begin{aligned}
\displaystyle
\frac{P_1}{T_1}&=\frac{P_2}{T_2} \\
T_2&=\frac{(P_2 T_1)}{P_1} \\
\text{Putting in the values:} \\
T_2&=\frac{900 000 ×423}{500 000} \\
T_2&=761.4K
\end{aligned}$$
```
$$\begin{aligned}
\displaystyle
\frac{P_1}{T_1}&=\frac{P_2}{T_2} \\
T_2&=\frac{(P_2 T_1)}{P_1} \\
\text{Putting in the values:} \\
T_2&=\frac{900 000 ×423}{500 000} \\
T_2&=761.4K
\end{aligned}$$
```
<div class="katex-display">
$$F+F_i=0$$
</div>
```
<iframe src="https://khan.github.io/KaTeX/function-support.html" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe>
<span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="https://khan.github.io/KaTeX/function-support.html" style=" color:#818181; font-size:13px;" target="_blank">$$\KaTeX \text{ Functions}$$</a>, by <a href="https://khan.github.io/KaTeX/" style=" color:#818181; font-size:13px;" target="_blank">Khan Academy</a></span>
<br>
Kelvin scale starts at -273 °C, this temperature is called [[absolute zero|Absolute Zero]]. This is the point at which no more [[energy|Energy]]/ heat is left to be taken from a substance.<br>
A [[change in temperature|Temperature Change]] of $$1^\circ$$ [[Celsius|Celsius or Centigrade]] is the same as $$1K$$
So <br>
| $$0K$$|$$=$$ | $$-273^\circ C$$|
| $$273K$$| $$=$$ | $$0^\circ C$$|
| $$373K$$| $$=$$ | $$100^\circ C$$|
!!Dynamics/ Kinematics
{{Dynamics/ Kinematics}}
Use the slider to show more levels!
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="5" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="Kinematics/ Dynamics" maxdepth=<<depth>> />
</$set>
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="5" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
</$set>
Kinetic energy is the energy an object has while it is moving and something which moves faster has more kinetic energy.
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Where does the K.E.equation come from?]]<br>
Some definition
{{||$:/template : equation}}
Some definition
{{||$:/template : equation}}
{{||$:/template : greek}}
<<<
A lap joint or overlap joint is a joint in which the members overlap. Lap joints can be used to join wood, plastic, or metal.
A lap joint may be a full lap or half lap. In a full lap, no material is removed from either of the members that will be joined, resulting in a joint which is the combined thickness of the two members. In a half lap joint or halving joint, material is removed from both of the members so that the resulting joint is the thickness of the thickest member. Most commonly in half lap joints, the members are of the same thickness and half the thickness of each is removed.
<<richlink "https://en.wikipedia.org/wiki/Lap_joint">>
<<<
{{Latent Heat}}
{{||$:/template : variable}}
If water is heated to the point at which it boils it's temperature will not increase beyond it's [[saturation temperature|Saturation Temperature]] despite the heat still being supplied until all the [[water vapour|Water Vapour]] has turned to [[steam|Steam]].
It is defined as the amount of [[energy|Energy]] needed to turn $$1kg$$ of water into [[dry steam|Dry Steam]]
See also [[latent heat|Latent Heat]] and [[saturated steam|Saturated Steam]].
{{||$:/template : variable}}
If water is heated to the point at which it [[changes state|State Change]] (ie melts or boils), it's temperature will not increase beyond $$0^\circ C$$ for melting or $$100 ^\circ C$$ for [[boiling|Boiling]].<br>
This is despite the heat still being supplied (the cooker hob is still on!) The heat energy must therefore be doing something other than raising the temperature of the water. <br>
It is changing the state of the ice to water/ water to isteam. <br>
Latent Heat, is that heat which goes into a substance and causes a change in state without a rise in temperature.
[[graph needed]]
The change in volume from water to steam.<<HelpButton h1>>
{{||$:/template : variable}}
!!1st Law
$$a^0=1$$
[[Would you like to know more?|1st Law of Indices]]
!!2nd Law
$$\displaystyle a^{-m}=\frac{1}{a^m}$$
[[Would you like to know more?|2nd Law of Indices]]
!!3rd Law
$$a^m \times a^n=a^{m+n}$$
[[Would you like to know more?|3rd Law of Indices]]
!!4th Law
$$a^m \div a^n=a^{m-n}$$
[[Would you like to know more?|4th Law of Indices]]
!!5th Law
$$(a^m)^n=a^{mn}$$
[[Would you like to know more?|5th Law of Indices]]
!!6th Law
$$a^{m/n}=\sqrt[n]{a^m}=(\sqrt[n]a)^m$$
[[Would you like to know more?|6th Law of Indices]]
!!1st Law
$$\log_a m+\log_a n=\log_a mn$$
[[Would you like to know more?|1st Law of Logarithms]]
!!2nd Law
$$\displaystyle \log_a m-\log_a n=\log_a \frac{m}{n}$$
[[Would you like to know more?|2nd Law of Logarithms]]
!!3rd Law
$$\log_a m^n=n\log_a m$$
[[Would you like to know more?|3rd Law of Logarithms]]
!!4th Law
$$\log_a 1=0$$
[[Would you like to know more?|4th Law of Logarithms]]
!!5th Law
$$\log_a a=1$$
[[Would you like to know more?|5th Law of Logarithms]]
!!6th Law
$$\log_a(1/n)=-\log_a n$$
[[Would you like to know more?|6th Law of Logarithms]]
The measured length of something.
Often given in $$mm$$
{{||$:/template : variable}}
!Length
!!!Length of a circle arc
$$\displaystyle s=r \theta$$
!Area
!!!Area of a circle sector
$$\displaystyle A=\frac{1}{2} r^2 \theta$$
!!!Surface area of a cylinder
$$\displaystyle A=2 \pi r h+2 \pi r^2$$
!!!Surface area of a sphere
$$A=4 \pi r^2$$
!!!Curved surface area of a cone
$$A=\pi r l$$
!Volume
!!!Volume of a cylinder
$$V= \pi r^2 h$$
!!!Volume of a sphere
$$V=\frac{4}{3} \pi r^3$$
!!!Volume of a cone
$$V= \frac{1}{3} \pi r^2 h$$
!!Where
$$r=\text{radius}$$
$$\theta=\text{angle in deg}$$
$$h= \text{height}$$
$$l=\text{Diagonal distance from tip to base of cone}$$
<$link to="Energy">$$e$$</$link>
$$=$$<$link to="Mass">$$m$$</$link><$link to="Speed of Light">$$c$$</$link>$$^{2}$$
```
<$link to="Energy">$$e$$</$link>
$$=$$
<$link to="Mass">$$m$$</$link>
<$link to="Speed of Light">$$c$$</$link>
$$^{2}$$
```
<iframe src="//www.pearltrees.com/stephenteacher/maths-help/id13186188?embed=2&d=201507052214" width="100%" height="604" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/maths-help/id13186188" style=" color:#818181; font-size:13px;" target="_blank">Maths Help</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
[[Tiddly Wiki on Reddit|https://www.reddit.com/r/TiddlyWiki5/wiki/index]]
[[Sticky Notes|http://stickynotes.tiddlyspot.com/]]
[[Stretch Text|http://stretchtext.tiddlyspot.com/]]
[[Text Stretch|http://tid.li/tw5/hacks.html#TextStretch]]
[[Appear|http://tobibeer.github.io/tw5-plugins/#appear]]
[[Tiddlymap|http://tiddlymap.org/]]
[[Social Calc (spreadsheet plugin)|http://rboue.tiddlyspot.com/]]
[[Encrypt Tiddlers|http://danielorodriguez.com/TW5-EncryptTiddlerPlugin/]]
[[Mathcell|http://mathcell.tiddlyspot.com/]]
[[Tidgraph|https://ihm4u.github.io/tw5plugs/#Tidgraph%20-%20Easy%20tiddler%20graphs%20for%20TW5]]
[[Context Search|http://braintest.tiddlyspot.com/#Context%20Plugin]]
[[Enhanced Search Results|http://spangenhelm.github.io/TW5-EnhancedSearchResults/]]
[[Plain tabs|http://plaintabs.tiddlyspot.com]]
[[Richlinks|http://richlinks.tiddlyspot.com/]]
Liquid fuels are mainly derived from [[oil|Oil]] and vary from [[heavy fuel oil|Fuel Oil]] to [[light petroleum|Light Petroleum]].
These are normally analysed by [[mass|Mass]] to give the content of [[carbon|Carbon]], [[hydrogen|Hydrogen]], [[sulphur|Sulphur]] and any other elements present.
```
<<list-links "[tag[code snippets]]">>
```
"LOLER" are a new set of regulations which came into effect on the 5th of December 1998 and replace all previous regulations on lifting equipment many of which contained differing requirements and definitions and were specific to certain industries. These have now been brought together under one document applicable to all. The regulations apply to :-
"Work equipment for lifting or lowering loads (a load includes a person)" . Work equipment means machinery, appliances, apparatus and tools or installations for use at work.
Great Britain and it's territorial waters and offshore facilities where the Health and Safety at Work Act 1974 applies.
Those in control of work equipment such as employers, self employed and employers where employees use their own tools. Also where an employer has some control over equipment e.g. a hired in crane with driver.
As [[hydrogen|Hydrogen]] combusts to make water we don't usually want that water staying around so it's removed from the system while it's still steam. This means we don't get the energy from the cooling steam.
This is called is the Lower Calorific Value (L.C.V.).
This is also called the ''net calorific value''.
If the vapour is condensed then it is normally assumed that an extra $$2441.8 kJ$$ is released per $$kg$$ of water at $$25 ^\circ C$$ ($$2256 kJ$$ is released per $$kg$$ of water at $$100 ^\circ C$$). This is the enthalpy of vaporization, ($$\Delta H_{vap}$$) also known as the ''(latent) heat of vaporization'' or the ''heat of evaporation''
If the steam vapour does condense then the added energy is the [[higher calorific value |Higher Calorific Value (H.C.V.)]]
Typical LC.V.s are as follows:
|Coal| 30 - 36 $$MJ/kg$$|
|Fuel Oils |43 - 46 $$MJ/kg$$|
|Natural Gas | 38 $$MJ/m^3$$|
{{||$:/template : equation}}
{{||$:/template : variable}}
A device for doing [[work|Work]]
The Machinery Directive came into full force in the U.K. from the 1st January 1995. Directive 2006/42/EC superseded Directive 98/37/EC on 29 December 2009.
All machinery manufactured for use in the European community must be manufactured and supplied in conformity with the Machinery Directive...
For the purpose of the directive, 'machinery' means an assembly of linked parts or components, at least one of which moves, with the appropriate actuators, control and power circuits, etc., joined together for a specific application, in particular for the processing, treatment, moving or packaging of material.
For most items of machinery, the manufacturer (or their authorised representative) can self-certify, that is they design their products to meet the requirements of the Directive and sign a Declaration of Conformity. This declaration of conformity needs to be backed up with the Technical File. The Technical File has to be retained for a period of 10 years after the manufacture of the machine (or the last machine of a production run).
Equipment manufactured for the manufacturer's own use is not excluded from the requirements, but may be subject to slightly lesser obligations with respect to marking and documentation.
//1. Select the point you are taking moments around. (Let's call this point BOB)//<br>
[img[http://steacher.droppages.com/diagrams/Example_BM_2.svg]]
Moments can be taken about ''ANY'' point on the beam but since all the dimensions come from $$R_1$$ let's make life easy and call $$R_1$$ ''BOB''.
[[Would you like to know more?|Magic Moments Step 2]]
!!2. Sort out the UDL<<HelpButton htext>>s<br>
[img[http://steacher.droppages.com/diagrams/Example_BM.svg]]
The [[UDL|Uniformly Distributed Load]] starts at at $$1.5m$$ and ends at $$3m$$ so it's $$1.5m$$ long. The load is $$8N/m$$ which gives a total load of <br>
$$1.5\times 8=12N$$
This load is the equivalent point load and needs to go at the mid point of (half way along) the UDL. <br>
Half of 1.5 is 0.75 and so would put the $$12N$$ load $$2.25m$$ from $$R_1$$ (''BOB'')
[img[http://steacher.droppages.com/diagrams/Example_BM_3.svg]]
[[Would you like to know more?|Magic Moments Step 3]]
//3. Identify the Clock Wise Moments (CWM) and the Anti Clock Wise Moments (ACWM)<br>//
Label on your diagram which forces will make the beam turn clockwise around ''BOB'' and which forces will make the beam turn anticlockwise around ''BOB''. <br>
Don't forget the reaction force at $$R_2$$.
[img[http://steacher.droppages.com/diagrams/Example_BM_3_2.svg]]
You might find it helpful to pick up your pen and hold it, horizontally, loosely at one end. A finger on the other hand can pretend to be each of the forces and then you can see which way your pen rotates.
[[Would you like to know more?|Magic Moments Step 4]]
4. Take the clockwise moments.<br>
[img[http://steacher.droppages.com/diagrams/Example_BM_3_2.svg]]
#Multiply each force by its distance FROM ''BOB''
#Add these together.
Applying 1. gives <br>
$$2.25\times 12=27$$<br>
$$3.5\times 10=35$$<br>
$$4.5\times 12=54$$<br>
Applying 2. gives <br>
$$27+35+54=116$$<br>
The total clockwise moment is $$116Nm$$
Steps 4, [[5|Magic Moments Step 5]], [[6|Magic Moments Steps 6 & 7]] & [[7|Magic Moments Steps 6 & 7]] are usually done in a [[single step|Magic Moments Steps 4-7]].
[[Would you like to know more?|Magic Moments Step 5]]
5. Take the anti-clockwise moments. <br>
[img[http://steacher.droppages.com/diagrams/Example_BM_3_2.svg]]
#Multiply each force by its distance FROM ''BOB''
#Add these together.
As there is only one anticlockwise moment at $$R_2$$ this gives<br>
$$5\times R_2$$
Steps [[4|Magic Moments Step 4]], 5, [[6|Magic Moments Steps 6 & 7]] & [[7|Magic Moments Steps 6 & 7]] are usually done in a [[single step|Magic Moments Steps 4-7]].
[[Would you like to know more?|Magic Moments Steps 6 & 7]]
[img[http://steacher.droppages.com/diagrams/Example_BM_3.svg]]
For [[equilibrium|Equilibrium]] the clockwise moments must equal the anticlockwise moments.
$$(2.25\times 12)+(3.5\times 10)+(4.5\times 12)=5\times R_2$$<br>
$$27+35+64=5R_2$$<br>
$$116=5R_2$$<br>
$$\displaystyle R_2=\frac{116}{5}$$<br>
$$R_2=23.2Nm$$
!!!6. $$\text{CWM=ACWM}$$
From [[step 4|Magic Moments Step 4]] our clockwise moments totalled $$116Nm $$ and from [[step 5|Magic Moments Step 5]] the anticlockwise moments were $$5\times R_2$$ <br>
For [[equilibrium|Equilibrium]] the CWM and the ACWMa must be the same so:<br>
$$116=5\times R_2$$ <br>
!!!7. Rearrange to find unknown
$$\displaystyle R_2=\frac{116}{5}$$ <br>
$$R_2=23.2 Nm$$
Steps [[4|Magic Moments Step 4]], [[5|Magic Moments Step 5]], 6 & 7 are usually done in a [[single step|Magic Moments Steps 4-7]].
[[Would you like to know more?|Magic Moments Steps 8-10]]
For [[equilibrium|Equilibrium]] the forces must be equal and opposite.<br>
Therefore all the down forces on the beam must equal all the reaction forces from the supports. <br>
!!!8. To find remaining reaction force add all the ↑ forces and add all the ↓ forces (but NOT the ↑to the ↓).
The total down force on the beam is:<br>
$$12+10+12=34N$$<br>
The total up force on the beam is: <br>
$$R_1+R_2$$<br>
$$R_1+23.2$$<br>
And if the up = the down then: <br>
!!!9. ↑=↓<br>
$$R_1+23.2=34$$<br>
!!!10. Rearrange to find reaction.<br>
$$R_1=34-23.2$$<br>
$$R_1=10.8N$$
<<<
*Alternative names for H
*Magnetic field intensity
*Magnetic field strength
*Magnetic field
*Magnetizing field
H, which is often called the magnetic field. In a vacuum, B and H are proportional to each other, with the multiplicative constant depending on the physical units. Inside a material they are different. The term "magnetic field" is historically reserved for H while using other terms for B. Informally, though, and formally for some recent textbooks mostly in physics, the term 'magnetic field' is used to describe B as well as or in place of H.
In physics, the magnetomotive force (mmf) is a quantity appearing in the equation for the magnetic flux in a magnetic circuit, often called Ohm's law for magnetic circuits.[1] It is the property of certain substances or phenomena that give rise to magnetic fields:
<<richlink "https://en.wikipedia.org/wiki/Magnetic_field#The_B-field">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
The magnetic interaction is described in terms of a vector field, where each point in space (and time) is associated with a vector that determines what force a moving charge would experience at that point (see Lorentz force). [1] Since a vector field is quite difficult to visualise at first, in elementary physics one may instead visualise this field with field lines. The magnetic flux through some surface, in this simplified picture, is proportional to the number of field lines passing through that surface
<<richlink "https://en.wikipedia.org/wiki/Magnetic_flux">>
<<<
{{||$:/template : variable}}
<<<
In SI units, B is measured in teslas (symbol: T) and correspondingly ΦB (magnetic flux) is measured in webers (symbol: Wb) so that a flux density of 1 Wb/m2 is 1 tesla. The SI unit of tesla is equivalent to (newton·second)/(coulomb·metre).[nb 5] In Gaussian-cgs units, B is measured in gauss (symbol: G). (The conversion is 1 T = 10000 G.[16][17]) One nanotesla is equivalent to 1 gamma (symbol: γ).[17] The H-field is measured in amperes per metre (A/m) in SI units,[18] and in oersteds (Oe) in cgs units.[16]
<<richlink "https://en.wikipedia.org/wiki/Magnetic_field">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
I have no clue....
{{||$:/template : constant}}
<<<
The ratio of [[magnetomotive force|Magnetomotive Force]] (mmf) to [[magnetic flux|Magnetic Flux]]. It represents the opposition to magnetic flux, and depends on the geometry and composition of an object.
<<richlink "https://en.wikipedia.org/wiki/Magnetic_reluctance">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
In physics, the magnetomotive force (mmf) is a quantity appearing in the equation for the magnetic flux in a magnetic circuit, often called Ohm's law for magnetic circuits.[1] It is the property of certain substances or phenomena that give rise to magnetic fields:
<<richlink "https://en.wikipedia.org/wiki/Magnetomotive_force">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
A technical way of saying size. Often used when discussing [[vectors|Vectors]]
Market pull
Market pull refers to the development of new designs based on a need for either a
completely new product to meet some demand or an improved product to address
customer dissatisfaction with existing products. In the automotive market. for
example. customers are always looking for better fuel economy. greater comfort and
improved safety; as a result. manufacturers tend to focus on these areas.
The identification of these needs may be through informal customer feedback. such
as sales agents chatting with customers, or more formal market research. Market pull can also arise from the pressure to upgrade a product in response to competitor
developments.
Customer feedback and market research can be used to identify areas of the market where a new product with the correct characteristics could make an impact.
By definition they indicate what customers want. so if this can be delivered as required
and on time. a commercially successful product should result.
Market pull does, however, have its limitations. Customers may be able to identify a
need. but the technology to turn this need into a real product may still be some way
off. For example, there may be market demand for a hoverboard or teleportation
device, but if it cannot be produced with current technology, then it will not become
reality. Designers also have to carefully consider the timeliness of the need - customer
demands may change or even be completely superseded over the product’s
development cycle. so that the engineering company may end up giving the customer
what they wanted three years ago. not what they want now.
Understanding your market is essential to the creation of
successful products. Market research covers a range of
activities that help you to understand what your customers
want and what competitors might be planning now and in
the future.
Market research can be carried out in a variety of ways.
depending on the size of your company. your relationship
with your end users and the nature of the products. If
your company is a small, highly specialised organisation
selling directly to a limited number of customers. your
sales engineers may carry out the market research
themselves. They will aim to find out how many products
your customers are likely to buy over the coming years.
the limitations of your (and your rivals‘) current products.
and any anticipated changes to customers' expectations of
what they want or need from your products.
For example:
Is price going to be more important than weight? Are there
any new features customers would like to see. or are there
changes in their operations that might make your current
products obsolete? A drawback to this approach is that
it limits you to your current customer base and product
areas and may not help if you wish to move into new
product areas.
For larger companies with wider customer bases. such
research is likely to be carried out by specialist teams
employed either directly by the company or on a
consultancy basis.
Market research can also help during the development
of new products. For example. you may have a range of
concepts for a new product but need some guidance on
which would be most likely to appeal: or you may have
a technology push innovation that. while technically
interesting. may or may not provide much benefit to the
end users of your product. By running yOur ideas past
groups of potential users. you can collect data to help you
select the ideas most likely to succeed.
The amount of ''Stuff'' contained in a thing.
{{||$:/template : variable}}
Mass of water which has condensed from steam in a [[Boy's|Boy's Calorimeter]] or [[Schole's|Schole's Bomb Calorimeter]] Calorimeter.
{{||$:/template : variable}}
When using [[bomb calorimeters|Schole's Bomb Calorimeter]] the mass of fuel the mass of the fuel to be burned in the bomb calorimeter.
{{||$:/template : variable}}
For a [[bomb calorimeter|Schole's Bomb Calorimeter]] this is the [[mass|Mass]] of actual water in the bomb calorimeter.
For a [[Boy's calorimeter|Boy's Calorimeter]] it is the mass of water which has passed through the system in a given amount of [[time|Time]].
{{||$:/template : variable}}
!!The data table
|scrollable|k
|!Material|!Type|!Ultimate tensile strength ($$MPa$$)|!Yield strength ($$MPa$$)|!Impact strength(Charpy $$J/cm^2$$)|!Young’s (tensile) modulus of elasticity|!Elongation at yield (GPa)|!Shear Modulus ($$GPa$$)|![[Density]] ($$kg/m^3$$)|!Hardness A Brinell unless otherwise stated|!Max working temp|!Melting Point (MP)|
|Steel|1020|380|207|-|207|-|79.3|7750|222|-|-|
||Stainless (201)^^[[4|Stainless Note]]^^|696||301|207|-|73.1|7860|171|-|-|
|Hardox^^[[5|Hardox Note]]^^|400|1250|1000|45|-|-|-|-|370-430|-|-|
|>| 450|1400|1200|35|-|-|-|-|425-475|-|-|
|>| 500|-|-|30|-|-|-|-|470-540|-|-|
|>| 600|-|-|-|-|-|-|-|570-640|-|-|
|Titanium^^[[2|Titanium Note]]^^|Grade 2|345|275|-|103|-|41.4|4510|175|-|-|
|>| Grade 5|552|830|-|110|-|41.4|4420|-|-|-|
|>| 10% Vanadium|1193|1103|-|109.6|-|42.1|4650|369|-|-|
|Aluminium^^[[3|Aluminium Note]]^^|Alloy type 0|90|48.3|-|73.1|-|69.0|2768|23|-|-|
|Brass|C36000|403|217|-|110|-|40.1|8498|127|-|-|
|Copper|C110|331|310|-|108|-|44.7|8885|92|-|-|
|Polycarbonate^^[[1|Polycarbonate Note]]^^|Moulded| 64|69.7|0.9|2.3|-|2.3|1200|HRM: 71|138$$^\circ C$$|-|
|Wood|Plywood|31|13.8|-|12.4|-|0.62|615|-|-|-|
|>|Douglas fir|130|-|-|11.0|-|4.1|443|-|-|-|
|Fibre glass|Veil surface mat|55|-|-|-|4.8|-|1246|-|-|-|
|Carbon Fibre|Thermoset composite|810|200|-|190|-|-|1570|Barcol 63.3|-|-|
|Kevlar|-|338|-|-|34.5|-|19|1384|-|425$$^\circ C$$|-|
|Peek|Aramid Fiber Filled|9.5|10|0.35|3.8|-|-|1420|HRM: 99|250$$^\circ C$$|-|
|UHMW Polyethelyne|Garland GAR-DUR|44.1|23.4|-|-|14%|-|941|HRR: 64 ShoreD: 67|-|130$$^\circ C$$|
|Glass|96% silica|~2000|-|-|46.2|-|18.6|2602|550|-|-|
From now offline resource http://homepages.which.net/~paul.hills/Materials/MaterialsBody.html recovered from the https://web.archive.org
Dead links removed and table edited for clarity.
Materials
V2.01 17-Jun-2004
!!Introduction
This chapter is designed to give some useful data for choosing armour materials. It gives values for several materials for density, hardness, strength, and flexibility. The materials may be used on their own, or sandwiched into layers. After the table is a section on what the properties actually mean, and how they are useful for the purpose of armour. Following that are links to useful mechanical engineering / materials science sites.
{{Mat Data Table 1}}
{{Pearltrees Hardness}}
!!Meaning of the parameters
Elastic limit. Greatest stress that can be applied to a material without causing permanent deformation. For metals and other materials that have a significant straight line portion in their stress-strain diagram, elastic limit is approximately equal to proportional limit. For materials that do not exhibit a significant proportional limit, elastic limit is an arbitrary approximation (apparent elastic limit).
Hardness. Measure of a material's resistance to localized plastic deformation. Most hardness tests involve indentation, but hardness may be reported as resistance to scratching (file test), or rebound of a projectile bounced off the material (scleroscope hardness). Some common measures of indentation hardness are Brinell hardness number, Rock well hardness number, ASTM hardness number, diamond pyramid hardness number, durometer hardness, Knoop harness and Pfund hardness number. Hardness often is a good indication of tensile and wear properties of a material. A hardness conversion table can be found by following the appropriate link in the index frame here.
Impact strength. Energy required to fracture a specimen subjected to shock loading, as in an impact test. Alternate terms are impact energy, impact value, impact resistance and energy absorption. It is an indication of the toughness of a material. For more details of impact testing, see here.
Plastic deformation. Deformation that remains after the load causing it is removed. It is the permanent part of the deformation beyond the elastic limit of a material. It also is called plastic strain and plastic flow.
Shear modulus of elasticity. Tangent or secant modulus of elasticity of a material subjected to shear loading. Alternate terms are modulus of rigidity and modulus of elasticity in shear. Also, shear modulus of elasticity usually is equal to torsional modulus of elasticity.
Strain. Change per unit length in a linear dimension of a part or specimen, usually expressed in %. Strain as used with most mechanical tests is based on original length of the specimen. True or natural strain is based on instantaneous length and is equal to In l/lo where l is instantaneous length and lo is original length of the specimen. Shear strain is the change in angle between two lines originally at right angles.
[[Stress]]
Stress-strain ratio. Stress divided by strain at any load or deflection. Below the elastic limit of a material it is equal to tangent modulus of elasticity. An alternate term is secant modulus of elasticity. Stripping strength. Alternate term for peel strength.
Strain energy. Measure of energy absorption characteristics of a material under load up to fracture. It is equal to the area under the stress strain diagram, and is a measure of the toughness of a material.
Tensile strength. Ultimate strength of a material subjected to tensile loading. It is the maximum stress developed in a material in a tension test.
Toughness. Extent to which a material absorbs energy without fracture. It is usually expressed as energy absorbed in an impact test. The area under a stress-strain diagram also is a measure of toughness of a material. (ASTM D-256, plastics and ASTM E-23, metals).
Ultimate strength. Highest engineering stress developed in material before rupture. Normally, changes in area due to changing load and necking are disregarded in determining ultimate strength.
Yield strength. Indication of maximum stress that can be developed in a material without causing plastic deformation. It is the stress at which a material exhibits a specified permanent deformation and is a practical approximation of elastic limit.
Offset yield strength is determined from a stress-strain diagram. It is the stress corresponding to the intersection of the stress-strain curve and a line parallel to its straight line portion offset by a specified strain. Offset is usually specified as 0.2 %, i.e., the intersection of the offset line and the 0-stress axis is at 0.2 % strain.
4. Links
4.1. The materials database web site
http://www.matweb.com/
4.2. Titanium
Titanium Information:
http://www.timet.com/literature/
4.4. Plastics & composites
Boedeker (Kevlar)
http://www.boedeker.com
Peek
http://www.sdplastics.com/peek.html
[[PEEK Data Sheet]]
Getting started in composites
http://www.fibreglast.com/GettingStartedPage.htm
USA based supplier of carbon fibre laminates. Does custom jobs. Some technical information on web page. May provide sponsorship!
http://www.dragonplate.com
| Material | Tensile Modulus | | | |
|-----------------------------------------------|---------------------------|-------------|----------|------|
| (Young's Modulus, Modulus of Elasticity) | | | | |
| - E - | Ultimate Tensile Strength | | | |
| - Su - | | | | |
| (106 N/m2, MPa) | Yield Strength | | | |
| - Sy - | | | | |
| (106 N/m2, MPa) | | | | |
| (106 psi) | (109 N/m2, GPa) | | | |
| ABS plastics | | 1.4 - 3.1 | 40 | |
| Acetals | | 2.8 | 65 | |
| Acrylic | | 3.2 | 70 | |
| Aluminum Bronze | | 120 | | |
| Aluminum | 10.0 | 69 | 110 | 95 |
| Aluminum Alloys | 10.2 | | | |
| Antimony | 11.3 | | | |
| Aramid | | 70 - 112 | | |
| Beryllium (Be) | 42 | 287 | | |
| Beryllium Copper | 18.0 | | | |
| Bismuth | 4.6 | | | |
| Bone, compact | | 18 | 170 | |
| (compression) | | | | |
| Bone, spongy | | 76 | | |
| Boron | | | | 3100 |
| Brass | | 102 - 125 | 250 | |
| Brass, Naval | | 100 | | |
| Bronze | | 96 - 120 | | |
| CAB | | 0.8 | | |
| Cadmium | 4.6 | | | |
| Carbon Fiber Reinforced Plastic | | 150 | | |
| Carbon nanotube, single-walled | | 1000+ | | |
| Cast Iron 4.5% C, ASTM A-48 | | | 170 | |
| Cellulose, cotton, wood pulp and regenerated | | | 80 - 240 | |
| Cellulose acetate, molded | | | 12 - 58 | |
| Cellulose acetate, sheet | | | 30 - 52 | |
| Cellulose nitrate, celluloid | | | 50 | |
| Chlorinated polyether | | 1.1 | 39 | |
| Chlorinated PVC (CPVC) | | 2.9 | | |
| Chromium | 36 | | | |
| Cobalt | 30 | | | |
| Concrete | | 17 | | |
| Concrete, High Strength (compression) | | 30 | 40 | |
| (compression) | | | | |
| Copper | 17 | 117 | 220 | 70 |
| Diamond (C) | | 1220 | | |
| Douglas fir Wood | | 13 | 50 | |
| (compression) | | | | |
| Epoxy resins | | 3-2 | 26 - 85 | |
| Fiberboard, Medium Density | | 4 | | |
| Flax fiber | | 58 | | |
| Glass | | 50 - 90 | 50 | |
| (compression) | | | | |
| Glass reinforced polyester matrix | | 17 | | |
| Gold | 10.8 | 74 | | |
| Granite | | 52 | | |
| Graphene | | 1000 | | |
| Grey Cast Iron | | 130 | | |
| Hemp fiber | | 35 | | |
| Inconel | 31 | | | |
| Iridium | 75 | | | |
| Iron | 28.5 | 210 | | |
| Lead | 2.0 | | | |
| Magnesium metal (Mg) | 6.4 | 45 | | |
| Manganese | 23 | | | |
| Marble | | | 15 | |
| MDF - Medium-density fiberboard | | 4 | | |
| Mercury | | | | |
| Molybdenum (Mo) | 40 | 329 | | |
| Monel Metal | 26 | | | |
| Nickel | 31 | 170 | | |
| Nickel Silver | 18.5 | | | |
| Nickel Steel | 29 | | | |
| Niobium (Columbium) | 15 | | | |
| Nylon-6 | | 2 - 4 | 45 - 90 | 45 |
| Nylon-66 | | | 60 - 80 | |
| Oak Wood (along grain) | | 11 | | |
| Osmium (Os) | 80 | 550 | | |
| Phenolic cast resins | | | 33 - 59 | |
| Phenol-formaldehyde molding compounds | | | 45 - 52 | |
| Phosphor Bronze | | 116 | | |
| Pine Wood (along grain) | | 9 | 40 | |
| Platinum | 21.3 | | | |
| Plutonium | 14 | 97 | | |
| Polyacrylonitrile, fibers | | | 200 | |
| Polybenzoxazole | | 3.5 | | |
| Polycarbonates | | 2.6 | 52 - 62 | |
| Polyethylene HDPE (high density) | | 0.8 | 15 | |
| Polyethylene Terephthalate, PET | | 2 - 2.7 | 55 | |
| Polyamide | | 2.5 | 85 | |
| Polyisoprene, hard rubber | | | 39 | |
| Polymethylmethacrylate (PMMA) | | 2.4 - 3.4 | | |
| Polyimide aromatics | | 3.1 | 68 | |
| Polypropylene, PP | | 1.5 - 2 | 28 - 36 | |
| Polystyrene, PS | | 3 - 3.5 | 30 - 100 | |
| Polytehylene, LDPE (low density) | | 0.11 - 0.45 | | |
| Polytetrafluoroethylene (PTFE) | | 0.4 | | |
| Polyurethane cast liquid | | | 10 - 20 | |
| Polyurethane elastomer | | | 29 - 55 | |
| Polyvinylchloride (PVC) | | 2.4 - 4.1 | | |
| Potassium | | | | |
| Rhodium | 42 | | | |
| Rubber, small strain | | 0.01 - 0.1 | | |
| Sapphire | | 435 | | |
| Selenium | 8.4 | | | |
| Silicon | 16 | 130 - 185 | | |
| Silicon Carbide | | 450 | | 3440 |
| Silver | 10.5 | | | |
| Sodium | | | | |
| Steel, High Strength Alloy ASTM A-514 | | | 760 | 690 |
| Steel, stainless AISI 302 | | 180 | 860 | 502 |
| Steel, Structural ASTM-A36 | | 200 | 400 | 250 |
| Tantalum | 27 | | | |
| Polytetrafluoroethylene (PTFE) | | 0.5 | | |
| Thorium | 8.5 | | | |
| Tin | | 47 | | |
| Titanium | 16 | | | |
| Titanium Alloy | | 105 - 120 | 900 | 730 |
| Tooth enamel | | 83 | | |
| Tungsten (W) | | 400 - 410 | | |
| Tungsten Carbide (WC) | | 450 - 650 | | |
| Uranium | 24 | 170 | | |
| Vanadium | 19 | | | |
| Wrought Iron | | 190 - 210 | | |
| Zinc | 12 | | | |
```
<$macrocall $name="eval1" datatiddler="all lower case" cell="field name"/>
```
The following tiddlers were imported:
# [[$:/macros/sk/eval.js]]
# [[$:/macros/sk/evalouter.js]]
# [[FormulaResult Button]]
# [[Excel Like Table]]
# [[Inline Example]]
# [[Engineering Example]]
# [[$:/sk/data]]
# [[$:/sk/engrexample]]
Maths reference materials.
<$tidgraph start="Maths" />
<iframe src="//www.pearltrees.com/t/fe-btec-engineering/unit-5-mech-principles/id8845670?embed=2&d=201705241819" width="100%" height="604" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/t/fe-btec-engineering/unit-5-mech-principles/id8845670" style=" color:#818181; font-size:13px;" target="_blank">Unit 5 Mech Principles</a>, by <a href="http://www.pearltrees.com/t/fe-btec-engineering/id15069788" style=" color:#818181; font-size:13px;" target="_blank">team FE BTEC Engineering</a></span>
! Mechanical Principles
<<list-links "[tag[Mechanical Principles Worked Examples]]">>
<$tidgraph start="Mechanical Principles Worked Examples" />
The beams between [[pin joiints|Pin Joints]] in a [[simple frame|Simple Framework]].
Very small.
For example 1 micro meter is 0.000001 of a meter or 0.001 of a milimeter.
It is represented by the [[Greek letter|Greek Letters]] $$\mu$$ and is a millionth or $$ \times 10^{-6}$$ of a standard [[S.I.Unit|S.I. Units]]
A measure of a materials stiffness, how much it will bend under a load, the higher the Modulus of Rigidity the stiffer the material. It is the ratio of shear stress to shear strain. <br>
It is also known as
*Shear Modulus
{{||$:/template : equation}}
{{||$:/template : variable}}
{{MOI1}}
---
{{MOI2}}
---
{{MOI3}}
274
MECHANICS
Moment of Inertia.-The moment of inertia of a body, with respect to an
axis, is the sum of the products obtained by multiplying the weights of each ele
mentary particle by the square of its distance from the axis. Hence, the moment
of inertia of the same body varies according to the position of the axis. It has is
minimum value when the axis passes through the center of gravity. The moment
of inertia is numerically equal to the weight of a body which, if it could be con
ceived of as concentrated at a distance of unity from the axis of rotation, would if
actuated by the same forces, rotate with the same angular velocity as that of the
actual body. In other words, the moment of inertia bears the same relation to
angular acceleration as weight does to linear acceleration. When the term moment.
of inertia is used in regard to areas, it is equal to the sum of the products ob-
tained by multiplying each elementary area by the square of its distance from the
axis. The moments of inertia of a number of solids are given on the two preceding
pages. The moments of inertia of surfaces are especially useful in calculating the
strength of beams, and the moments for a number of different cross-sections are
given later in connection with the beam formulas.
If the moment of inertia I of a solid or surface, with respect to an axis through its
center of gravity, is known, then the moment of inertia with respect to any parallel
axis at a distance a from the axis through the center of gravity, is:
Mas
Ia = I+AX a2
in which A = the weight or area of the solid or figure of which the moment of inertia
is to be found. For example, assume that the moment of inertia of a body weigh-
ing 3 pounds is 18 with reference to an axis through the center of gravity. Find
the moment of inertia with reference to a parallel axis at a distance of 5 inches from
the axis through the center of gravity.
Ia = 18+3X 52 = 18+ 75 = 93.
Motion, Force and Work
Motion is a progressive change of position of a body. Velocity is the rate of
motion. When the velocity of a body is the same at every moment during which
the motion takes place, the latter is called uniform. When the velocity is variable
and constantly increasing, the rate at which it changes is called acceleration; that
is, acceleration is the change in the velocity of a body during a very short inter-
val of time, as a second.
is called retarded motion, and the rate at which the motion is retarded is frequently
called the de-acceleration. If the acceleration is uniform, the motion is called
uniformly accelerated motion. An example of such motion is found in that of
falling bodies.
When the motion is decreasing instead of increasing, it
Newton's Laws of Motion.-First Law. Every body continues in a state of
rest or in uniform motion in a straight line, except if it is compelled by a force to
change its state of rest or motion.
Second Law. If a body is acted upon by several forces, it is acted upon by each
of these as if the others did not exist. This is true whether the body is at rest or
in motion. In other words, if two or more forces act upon a body at the same
time, each produces exactly the same effect as if it acted alone; the total effect or
resultant motion of all the forces may be found by a diagram in the same way as the
resultant of forces is found.
Third Law. To every action there is always an equal reaction, or, in other words,
if a force acts to change the state of motion of a body, the body offers a resistance
equal and directly opposite to the force.
The 2nd moment of area, also known as moment of inertia of plane area, area moment of inertia, or second area moment, is a geometrical property of an area which reflects how its points are distributed with regard to an arbitrary axis. The second moment of area is typically denoted with either an $${\displaystyle I}$$ for an axis that lies in the plane or with a $${\displaystyle J}$$ for an axis perpendicular to the plane. In both cases, it is calculated with a multiple integral over the object in question. Its unit of dimension when working with the International System of Units is meters to the fourth power, $$m^4$$. In the field of structural engineering, the second moment of area of the cross-section of a beam is an important property used in the calculation of the beam's deflection and the calculation of stress caused by a moment applied to the beam. Note: Different disciplines use moment of inertia (MOI) to refer to either or both of the planar second moment of area, $${\displaystyle I=\textstyle \iint _{R}x^{2}\,\mathrm {d} A}$$ , where $$x$$ is the distance to some reference plane, or the polar second moment of area, $${\displaystyle I=\textstyle \iint _{R}r^{2}\,\mathrm {d} A}$$ , where $$r$$ is the distance to some reference axis. In each case the integral is over all the infinitesimal elements of area, dA, in some two-dimensional cross-section. In maths and physics, moment of inertia is strictly the second moment of mass with respect to distance from an axis: $${\displaystyle I=\textstyle \int _{Q}r^{2}\mathrm {d} m}$$ , where r is the distance to some potential rotation axis, and the integral is over all the infinitesimal elements of mass, dm, in a three-dimensional space occupied by an object Q. The MOI, in this sense, is the analog of mass for rotational problems. In engineering (especially mechanical and civil), moment of inertia commonly refers to the second moment of the area.
There are two concepts that can be referred to as "moment of inertia". One refers to resistance to bending, the other refers to resistance to angular acceleration. I will go into both.
The second moment of area is the same as the area moment of inertia (or a couple of related terms - see Second moment of area). It is a measure for the resistance of a shape to bending about a certain axis. Usually, we apply it to a beam structure. For example, the stress in a beam is given by
σ=MyI
where σ is the stress, M is the internal moment, y is the distance from the neutral axis and I is the area moment of inertia.
We calculate the second moment of inertia using the following integral:
Ix=∫∫Ay2dxdy
In this case we are talking about the second moment of inertia around the x-axis.
The reason it is called the second moment of inertia is because there is also a first moment of inertia (with much less physical meaning). Its equation is
Ix=∫∫Aydxdy. This is the same as before, but without the square!
The mass moment of inertia (which also has some equivalent terms - see Moment of inertia) is a measure for resistance to angular acceleration. Suppose you have a certain object that cannot be deformed, and you apply a torque to it. Certainly you expect the object to start rotating. The angular acceleration is given by
θ¨=TI
with θ¨ its angular position, T the applied torque and I the mass moment of inertia.
What is important to remember is that engineers and physicists are lazy, so they will often forget to tell specifically whether they mean the mass moment of inertia or the area moment of inertia. After all, the context probably already determines which you mean. If you're calculating the deformation of a wing spar under a certain load, it will be the latter. If you want to know how fast a satellite will swivel if you actuate the reaction control thrusters, you will need the former.
Molar mass of a substance is the total weight of that substance (in either kilogram or gram) for one mole of that substance.
It can be found using the [[relative atomic mass|Periodic Table]] of the atom or molecule.
{{||$:/template : variable}}
The molecular weight is the weight of an atom relative to the weight of the same amount of hydrogen.
It can be found from the [[Periodic Table]].
Where two or more [[atoms|Atoms]] of [[elements|Elements]] join together. Hydrogen normally exists as two atoms joined together, $$\ce{H2}$$, or water, $$\ce{H2O}$$ (Two Hydrogen and one Oxygen).
<<<
The word “mole” refers to $$6.02 \times 10^{23}$$ (This is [[Avogadro's Number]]) things. Because this is a really really big number, the only thing we use this number for is to count really really small things like atoms or molecules. In other words, Santa’s not bringing you a mole of wheat for Christmas, no matter how good a baker you are.
//From [[here|https://chemfiesta.org/2015/02/06/mole-calculations-3/]]//
<<<
The kmol (thats kilo mole NOT [[Killer Mole|http://www.nixalite.com/scaleimage2.aspx?w=800&img=/SiteContent/NixaliteFiles/Families/131/MOLE%2002.jpg]]) is defined as the number of kg of substance numerically equal to the mean molecular mass. Typical values are :
|!GAS|!Symbol|!Mass|
|Hydrogen|$$\ce{H2}$$|2|
|Oxygen|$$\ce{O2}$$|32|
|Carbon Dioxide|$$\ce{CO2}$$|44|
|Methane|$$\ce{CH4}$$|16|
|Nitrogen|$$\ce{N2}$$|28|
|Dry Air|-|28.96|
Have a look at the [[Periodic Table]] for more.
Hence:
1 kmol of hydrogen ($$\ce{H2}$$) is 2 kg
1 kmol of oxygen ($$\ce{O2}$$) is 32 kg
1 kmol of Nitrogen is ($$\ce{N2})$$ 56kg and so on.
For example if you had 3 kmol of nitrogen ($$\ce{N2}$$) you would have $$3\times 56=84kg$$
<center>
[img[http://steacher.droppages.com/diagrams/Spanner_2.svg]]</center><br>
When a force is applied to a spanner, the spanner rotates about the nut and will produce a turning effect or moment. The point about which the spanner turns is called the [[fulcrum|Fulcrum]] or [[pivot|Pivot]].
The spanner could loosen or tighten the nut and so the moment could be clockwise or anticlockwise.
The moment would be calculated by multiplying the force by the [[perpendicular|Perpendicular]] distance.
<$tidgraph start="Moments" />
<iframe src="https://phet.colorado.edu/sims/html/balancing-act/latest/balancing-act_en.html" width="100%" height="600" scrolling="no" allowfullscreen></iframe>
<span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="https://phet.colorado.edu/en/simulation/balancing-act" style=" color:#818181; font-size:13px;" target="_blank">{{!!title}}</a> by <a href="https://phet.colorado.edu" style=" color:#818181; font-size:13px;" target="_blank">PHET</a></span>
The moment is the [[force|Force]] about a point (F) $$\times$$ perpendicular distance (d or s) from the point. It differs from a [[torque|Torque]] only in that when talking about leavers, bars, beams etc the term moment is used.
When talking about wheels, gears, flywheels etc the term torque is used.
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Moments Explained]]
An object's momentum is its [[mass|Mass]] $$(m$$ in $$kg)$$ and its [[velocity|Velocity]] $$(v$$ in $$m/s)$$ multiplied together.
[[Would you like to know more?|Momentum Worked Example 1]]
{{||$:/template : equation}}
{{||$:/template : variable}}
If a cannon of mass $$80kg$$ fires a ball of mass $$3kg$$ giving the ball a [[velocity|Velocity]] of $$26.66\dot{6}m/s$$ and the cannon a velocity of $$1m/s$$
Show that the total [[momentum|Momentum]] = 0
The cannon is initially stationary so the initial velocities are 0.
$$m_1v_1+m_2v_2=m_1v_3+m_2v_4$$
$$\text{Mass of ball}=m_1=3$$
$$\text{Initial ball velocity}=v_1=0$$
$$\text{Final velocity of ball}=v_3=2.66\dot{6}$$
$$\text{Mass of cannon}=m_2=80$$
$$\text{Initial cannon velocity}=v_2=0$$
$$\text{Final velocity of cannon}=v_4=1$$
$$(3\times 0)+(80 \times 0)=(3\times 26.66\dot{6})+(80\times -1)$$
$$0=(3\times 26.66\dot{6})+(80\times -1)$$
$$0=80-80$$
This seems counter intuitive. How can objects moving have the same momentum as stationary objects?
The thing to remember is that you are looking at the whole system, [[cannon AND ball|http://www.cannonandball.com/]] and that they will be moving in opposite directions having an equal but opposite reaction.
<<<
Let's say you have a metal rod, and decide to connect that to your galvanometer. If the rod is stationary in a magnetic field, nothing happens. If you move the rod through the field, however, an emf is induced between the ends of the rod causing current to flow. This is because when you move the metal rod through the field, you are moving all the electrons in the rod. These moving charges are deflected by the field toward one end of the rod, creating a potential difference. This is known as motional emf. Motional emf can even be measured on airplanes. As the plane flies through the Earth's magnetic field, an emf is induced between the wingtips.
Motional emf is largest when the direction of motion of the piece of metal is perpendicular to the rod and perpendicular to the magnetic field. When this is true, the motional emf is proportional to the speed of the rod, the ''length (l) of the rod'', and the magnetic field:
https://physics.bu.edu/~duffy/PY106/InducedEMF.html
<<<
{{||$:/template : equation}}
{{||$:/template : greek}}
For a beam being bent the neutral axis is the line though the beam which doesn't experience stress when under a load, for example if a beam has a square cross section then the neutral axis will be along the middle of the beam.
For calculation the distance from one face of the beam to the neutral axis is often needed.
{{||$:/template : variable}}
Use the slider to show more levels!
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="8" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="New BTEC" maxdepth=<<depth>> />
</$set>
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="8" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
</$set>
<$tidgraph start="New BTEC Spec" />
!Unit 1: Engineering Principles
!!Level: 3
!!Unit type: External
!!Guided learning hours: 120
!!!Unit in brief
Learners apply mathematical and physical science principles to solve electrical-, electronic- and mechanical-based engineering problems.
!!!Unit introduction
Modern life depends on engineers to develop, support and control the products and systems
that are all around us. For example, cars, heart rate monitors and manufacturing and transport
systems. To make a contribution as an engineer you must be able to draw on an important range
of principles developed by early engineering scientists, such as Newton, Young, Faraday and Ohm.
There is an increasing demand for ‘multi-skilled’ engineers who can apply principles from several
engineering disciplines to develop solutions.
This unit will develop your mathematical and physical scientific knowledge and understanding
to enable you to solve problems set in an engineering context. You will explore and apply the
algebraic and trigonometric mathematical methods required to solve engineering problems.
The mechanical problems you will encounter cover static, dynamic and fluid systems. The electrical
and electronic problems you will encounter cover static and direct current (DC) electricity, DC
circuit theory and networks, magnetism, and single-phase alternating current theory. You may
apply these engineering principles to solve problems involving more than one of these topic areas.
This unit is externally assessed. It sits at the heart of the qualification and gives you a foundation
to support you in any engineering technician role, an engineering apprenticeship or in higher
education.
!!!Summary of assessment
The unit will be assessed through one paper of 80 marks lasting two hours that will be set and
marked by Pearson.
Learners will be assessed through a number of short- and long-answer problem-solving questions.
Learners will need to explore and relate to the engineering contexts and data presented.
Assessment will focus on learners’ ability to solve problems that require individual and combined
application of mathematical techniques, and electrical, electronic and mechanical principles to solve
engineering problems.
The assessment availability is twice a year in January and May/June. The first assessment
availability is May/June 2017.
Sample assessment materials will be available to help centres prepare learners for assessment.
[[Unit 1 Learning Outcomes]]
[[Essential Content A]]
[[Essential Content B]]
[[Essential Content C]]
[[Essential Content D]]
[[Essential Content E]]
!Unit 10: Computer Aided Design in Engineering
!!Level: 3
!!Unit type: Internal
!!Guided learning hours: 60
!!!Unit in brief
Learners develop two-dimensional (2D) detailed drawings and three-dimensional (3D) models using
a computer-aided design (CAD) system.
!!!Unit introduction
Computer-aided design (CAD) spans most areas of engineering, as well as aspects of other
disciplines such as construction and media. Engineering is a multi-disciplinary vocational subject
that uses CAD as part of other processes to develop (design and manufacture), improve and
maintain cutting edge products and systems. For example, Formula 1® racing teams test all their
cars on bespoke CAD packages to analyse performance and stresses, and make modifications to the
cars as a result.
In this unit you will use CAD software and hardware to produce 2D and 3D drawings. You will
acquire the skills to produce models of products, editing and modifying these, and exploring
materials and their properties. You will output a portfolio of drawings, for example orthogonal,
3D shaded or solid model, and detail view drawings, to an international standard.
As an engineer it is important to be able to interpret and produce engineering drawings that help
individuals and organisations to communicate ideas, design and manufacture products and improve
product performance. Studying this unit will help you to progress to employment as a draftsperson
and gain other technician level roles in engineering. It also prepares you for an engineering-based
apprenticeship, and for higher education.
[[Unit 10 A]]
[[Unit 10 B]]
[[Unit 10 C]]
!Unit 27: Static Mechanical Principles in
Practice
!!Level: 3
!!Unit type: Internal
!!Guided learning hours: 60
!!!Unit in brief
Learners explore the effect of forces acting on structures that are in static equilibrium using theoretical principles, calculations and practical experiments.
!!!Unit introduction
Mechanical structures and their components (sub-parts of a structure) are found in many everyday
products, such as bridges, buildings, and as part of systems, such as manufacturing equipment.
The design and maintenance of mechanical structures and components can be crucial to prevent
injury or loss of life, and to ensure that products are usable and services are available when
required. The study of the forces acting on stationary structures and their components is often
referred to as ‘statics’.
You will investigate the theory that underpins the design of framed structures. You will then
explore, through a combination of experimentation and theory, what happens when simply
supported and cantilever beams are subjected to forces generated by applied loads. Finally, you will
investigate the stresses and strains generated in structural components that carry bending, shear
and axial loading. Stresses produced by changes in temperature are also covered. As part of the
investigation, you will look at the design of a structure or components and make improvements so
that they are fit for purpose.
In our modern economy, consumers and organisations expect ever-increasing standards of safety
and fitness for purpose of products, systems and other structures (e.g. buildings). Mechanical
engineers will be able to work out if the loaded structure, such as a beam that forms part of a
bridge, is in a safe condition. It is their job to understand and design products, systems and other
structures that perform as intended. Studying this unit will help learners to progress to mechanical
engineering technician job roles and also to higher education to study engineering.
[[Unit 27 A]]
[[Unit 27 B]]
[[Unit 27 C]]
!Unit 04: Applied Commercial and Quality Principles in Engineering
!!Level: 3
!!Unit type: Internal
!!Guided learning hours: 60
!!!Unit in brief
Learners explore commercial engineering, for example key business activities, cost control, quality
systems and value management, which is used by engineering organisations to create value.
!!!Unit introduction
Engineering organisations use a wide range of systems and methods to ensure that they are
competitive. For example, organisations can develop a competitive advantage by increasing the
quality of their products, innovating with new product designs or reducing the cost of their
operations. Well-known brands that have successfully produced a competitive advantage in
this way include Dyson, Rolls-Royce and Škoda.
In this unit, you will explore how key business activities and trade considerations influence
engineering organisations and are used to create a competitive advantage. You will understand
why organisations need to control costs and how they make decisions, applying an activity-based
costing methodology. You will also understand what is meant by quality and why it means different
things to different people; you will investigate quality systems, including quality assurance and
control. Finally, you will explore value management as a process to create value in an organisation.
The quality systems and value management principles and processes provide a foundation for
business process improvement techniques, such as Lean and Six Sigma, which many engineering
organisations follow to ensure continuous improvement. It has not been possible to include these
methodologies as part of this unit; however, should you encounter them in the workplace then this
unit provides a basis for understanding and applying them.
As an engineer, it is important that you understand some of the commercial and competitive
considerations which ensure that engineering organisations thrive. You will need to apply these
principles to technical engineering projects to ensure that they add value to the organisation and
are profitable. This unit will help to prepare you for an engineering apprenticeship, higher education
and technician-level engineering roles.
[[Unit 4 A]]
[[Unit 4 B]]
[[Unit 4 C]]
\define calcFontSize() font-size:calc(0.5em + (0.2em * ($(count)$ / 5) ) );
<$list filter="[tags[]]" variable="thistag">
<$vars count={{{ [<thistag>tagging[]count[]] }}}>
<span style=<<calcFontSize>>>
<$link to=<<thistag>> tooltip=<<count>>>
<$text text=<<thistag>> />
</$link>
</span>
</$vars>
</$list>
[img[http://steacher.pancakeapps.com/Example_BM_2.svg]]
[img[http://steacher.pancakeapps.com/diagrams/Uploads/Example_BM_2.svg]]
[img[http://steacher.pancakeapps.com/diagrams/Example_BM_2.svg]]
<iframe width="100%" height="100%" src="http://steacher.droppages.com/sine.html" frameborder="0" allowfullscreen></iframe>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="25px" height="25px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<g>
<path d="M448,177.14V448c0,35.344-28.656,64-64,64H64c-35.344,0-64-28.656-64-64V128c0-35.344,28.656-64,64-64h270.844l-63.969,64
H64v320h320V241.156L448,177.14z M398.875,45.25L376.25,67.875l67.875,67.891l22.625-22.625L398.875,45.25z M444.125,0
L421.5,22.625l67.875,67.891L512,67.875L444.125,0z M150,294.188l67.875,67.875L421.5,158.406l-67.875-67.891L150,294.188z
M128,384h64l-64-64V384z"/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
Newtons second law states that the net force will be equal to the change in [[momentum|Momentum]] with a change in time.
So to throw in some maths.. ..
$$\displaystyle force=\frac{momentum_2-momentum_1}{time}$$
$$\displaystyle F=\frac{m_2v_2-m_1v_1}{t_2-t_1}$$
But if the mass is constant:
$$\displaystyle F=m \frac{v_2-v_1}{t_2-t_1}$$
and a change in velocity over a change in time is an acceleration which gives us everyone's fave physics equation:
$$F=ma$$
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BAB4CqIsAAC4VidPnrz99ttlTHrsscf0Xg6pVKmST7Y/2NZl7969BQoUkF/g/vvvlz+O3s4Jx44d++9//2uk2dq1a586dUofAQAegSgLAACu1RtvvCEDUmBgoIxwei+HGA+YDQgIOHr0qN7LYidOnChevLiP88m6v//+u97OOQkJCaGhoUaaLVOmzIEDB/QRAGB/RFkAAHBNVq1a5evrK9NRWFiY3ss5p06dktFafqt+/frpvax04cKFatWqyc/19/dfsGCB3raAwYMH+/n5yW94991379q1S28DgM0RZQEAwNUlJiaWLVvWx/kc1/j4eL2do5o3b258MYfDofeyRlJSUoMGDYzTniNGjNDblvHjjz/mzp1bfsnChQtv2bJFbwOAnRFlAQDA1fXr189IbkuXLtV7OU1+JeO7rV69Wu9lgZSUlBYtWhif2KNHD71tMStXrjSmNS5QoMDGjRv1NgDYFlEWAABcxcGDB/PmzSvj0Isvvqj3LEBmy6JFi8qv16pVK72XBdq3b2/k2LfeekvvWdKGDRuMuankv1u3btXbAGBPRFkAAHAVzz33nAxCt95665EjR/SeNXTt2lV+w/z582f1xc+ff/65kWOff/55GaH1tlX99ttvRpq988479+/fr7cBwIaIsgAA4Epcl+8OHDhQ71nGzp07jS85Z84cvZd5Ro4caXxKvXr1EhIS9La1rV27NigoSH754ODg6OhovQ0AdkOUBQAAl5WUlGTM9hQSEiLX9baVlCtXTn7PV199VW9kEhmS/f395UdUrVr1/PnzetsO5s6dGxAQIHehcuXKMTExehsAbIUoCwAALmvw4MHGecjly5frPYsJCwvzcd4OmpiYqPdu2vr1641TmiVKlDh58qTeto8xY8YYB/T555/XewBgK0RZAACQsePHj+fPn1/GnmbNmuk969m2bZsR0hYtWqT3bk5ERMQdd9wh31n+K9f1tt106tTJ+KGGDx+u9wDAPoiyAAAgYy1btpSBJ3fu3AcOHNB7llSyZEn5heXX1hs34cSJEyVKlJBvGxQU5BkPs0lOTn700UflHuXNm/fvv//W2wBgE0RZAACQgTVr1vj6+srAExYWpvesqkePHj7OmZZjY2P13g05efJkxYoV5Xv6+/v/9NNPetu2Dh48KH8luV9PPvmk3gMAmyDKAgAAXVJSUoUKFWTUKV68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e1RaWlrz5s2tC6xNW7RoUYNDU3bZsmXyzNu3b1dnAAAAAIA7eMRTNjk5uUSJEqIVH3/88XPnzm3atEmm45EjR5YsWfLkk08azPeCOn36tO1R3bp1k8sEsaZatWoG8yXcf/3rXwaHpmxqaqp4Y+Kcbdu2VWcAAAAAgDt4xFNWM38l1cvLS+RiqVKlChcuLDYCAgKsl2F/++23qKgo2/UTJ060dqy3t/fcuXPl9nfffefwlBXGjBkjzunj4xMbG6vOAAAAAABZefRTVliyZImnp6c1UPv06aOuSBcZGenh4WFdOXr0aPlJ45CQkNTUVGekbExMjHxvn332mToDAAAAAGQlV6SssH79+tDQUFGMDRo0iI+PV8dmN2/elGukatWqHTt2TJbt5MmTxQJnpKzQpEkTcdqnnnpKHQAAAAAAspJbUla6evWqusuG7Vdkvb299+3b98EHH4jtwMDAGzduiAXFixd3RsouX75c/tLff/9dnQEAAAAAMsldKXsXGzdulI+NlT7++ONr167ly5dPbA8YMECukV+17dmzp/2hDyshISEgIECc+cMPP1RnAAAAAIBMSFkTUa3FihWzdmydOnVSU1MnTJggtj09Pc+ePSuX+fr6OiNlhXfffVecuWzZsuoAAAAAAJAJKWvSoUMHa8cWL1783LlzImVLliwpXrZu3VquSU5OlguckbLr1q2TJz9w4IA6AwAAAADYezRTdsuWLc8//3y1atV++eUXdZbJzp073d3dZUkGBgbu379f7Fy5cqXcYz1DbGys3NO3b1+74x0hMTHR399fnHzUqFHqDAAAAABg7xFM2WXLllkfqFOlShW588yZM++//369evXWr19vv1wT0SsX+/r6btu2Te584YUXxJ6qVatalx07dkwuGz58uHWnA7Vq1UqcvHr16uoAAAAAAGDvUUvZEydO+Pn5iSaULSocP3588eLF8gZOgpheuXLFuj45Odnb21vsFws2bdokdx48eFDeAmrevHnWlZGRkfIM8sE8Drdw4UJxcvF7z58/r84AAAAAADYetZSV33oNDAw8duyYbNp3333Xy8tLbJQrV05+kHj+/Pm2h0yaNKlNmzZHjx617unSpYtYFhQUlJCQYN25ZMkSmbIijK07Hejq1auenp7i/LNmzVJnAAAAAAAbj1rKil41pD/6VQSqjE+hUqVKZ86c+fe/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3nt369YtrtkTTzxx06ZN4QXfyE9+8pPoCUePHh3/ddmyZdvvU/PmzZs0adITTzwRzAEAkk7KAuwSJ510UvyLrC1atIgenLJFXLOdOnV64YUXwgsqaeXKlfXr14+erV+/fkcccUT8zNE/1+pLUT/HwxtuuCG8GAAg4aQswC5RWFgY9WRUkt27d4+TsixlY1F/jho16uOPPw6v/Hoef/zxOlvadcyYMT169GjcuPG2Tx7Jzs7u2bPnM888E14JAJB8UhZgV5k2bVqUlDk5OR06dIjbMvpvly5d+vfvHw3LmjPaDh8+fPbs2eH1X+mcc86Jrj3zzDPLJsuWLZs+ffpLW7z11lurVq3a5jgAQI0iZQF2oXbt2kXBOWzYsGOOOSYO127duqW2fD3PzTffXPbB4FjHjh3vvvvu1atXh89SnubNm0eXTJw4MVwAANQCUhZgFxozZkwUnK1atVq+fHl8H+O6dev+6U9/KjswZ86cW2+9tWvXrmVBu8ceewwePPiTTz7Z5mlC//rXv6KTTZo0WbFiRbgDAKgFpCzALrR48eIGDRpE2fnss89ee+21caxmZWXddNNNJSUl2578+OOPr7vuun333Tc+U79+/QsuuGDBggXbnimzcuXKNm3aDBkyJFwAANQOUhZg1zr11FOjND333HNvvPHG6MH+++8fx2o0X7t2bXB4w4YNDz/88Pe///34TG5u7u23315cXBwc2xkFBQU//OEP77nnnnABAJAcUhZg15o4cWIUpfvtt1+cslHBRg/q1q0bPe7cufPixYvDC7aYOnVq27Zt46Dt3bv3t/hB4vbt20fP2axZs+BtYQCABJGyALvWokWL4iI966yz4pSNhk8++WTDhg2jv7Zu3bqi7+PZuHHjDTfcEN/ruGPHjhVFb2Xdfffd8espLCwMdwAACSFlAXa5Nm3aROl4wAEHlKVs5G9/+1vTpk2jSfPmzd97773tr9jqxRdfbNKkSRy9BQUF4bryioqK4pSdN29euAMASAgpC7DLnX/++XE9bpuykY8++ujAAw+MhnvuuWd+fv42V2xn5syZzZo1i4517do13FVefPfjrKysNWvWhDsAgISQsgC73COPPFJuykYWLlwYf7ts06ZNP/zww21X21q5cuX06dPPO++8cFF548aNi/65Qw45JFwAACSHlAXY5T799NOKUja15Qt7Dj300Dpbvn62Cn5/tX///tG/deGFF4YLAIDkkLIAVeGggw6qKGUj8+bN22effaJtt27dNmzYEK6/VfEv6D7xxBPhAgAgOaQsQFU444wz4pTt169fuNtixowZDRo02NXvlxYUFET/RN26dZctW/bYY4+1bt26Q4cOgwYNev/998OjAAAZTMoCVIV77733q1M29eVvsUbuu+++cPcteeaZZ6Ln33///aPHTz31VOPGjeN/sV69eq+88kp4GgAgU0lZgKowb968OBr79u0b7rZx8cUXR2caNGjwxhtvhLtvw8SJE6Pnb9++ffzXJUuW/PjHP45f2P3337/9WQCAzCVlAapIq1atomLs1atXuNjGxo0bu3XrFh1r0aLFggULwvVOe/jhh6Mn79ChQ/T4z3/+c+vWreOOrYLf0QUA+BZJWYAqcu6550bReOSRR4aL7S1atKhly5bRyU6dOq1bty5c75ypU6dGz9yoUaP4i2ojjRs3HjFihI4FAJJFygJUkcmTJ0fpmJubW1xcHO62N3PmzIYNG0aHBwwYEO52zpo1aw444IA4YuvXr3/ppZcuXrw4PAQAkPGkLEAVWb58edyQH3zwQbjbwaRJk7KysqLDd955Z7jbOfPnz79ji08++STcAQAkhJQFqDpdu3aNAnX27NnhojxDhw6ts+UWUPn5+eEOAKB2k7IAVWflypVf/73QTZs2xbcXbtWq1dKlS8M1AEAtJmUBMlfUvfH9mXr06OHOTAAAZaQsQEabPn16/fr1o5odOHBguAMAqK2kLECme+CBB+L7RY0dOzbcAQDUSlIWIAGGDBkSpWy9evWmT58e7gAAah8pC5AAmzdvPu6446KabdGiRWFhYbgGAKhlpCxAMkQFG3VsVLO9e/cuLi4O1wAAtYmUBUiMl19+OTs7O6rZESNGhDsAgNpEygIkyc033xylbBS0r776argDAKg1pCxAkhQXF/fq1Suq2VatWq1atSpcAwDUDlIWIGEWLlzYtGnTqGbz8vLCHQBA7SBlAZJn0qRJ8TfNPvPMM+EOAKAWkLIAiTRgwID4Y8Zr164NdwAANZ2UBUikwsLCvfbaK6rZoUOHhjsAgJpOygIk1R//+McoZXNyct5///1wBwBQo0lZgKQqKSnp3r17VLPdunWLHodrAICaS8oCJNgHH3xQr169qGYffPDBcAcAUHNJWYBkGzx4cJSy++67r6+ZBQBqDykLkGxRwUYdG9XslVdeGe4AAGooKQuQeOPHj49Stl69erNmzQp3AAA1kZQFSLyy+z917dp18+bN4RoAoMaRsgA1wezZsxs0aBDV7E033RTuAABqHCkLsFOefvrp0aNHFxcXh4sqd+utt8ZfM/vaa6+FOwCAmkXKAnxzDz30UHZ2dr169VavXh3uqlyU08cdd1xUsy1btiwsLAzXAAA1iJQF+CYWLVp0+umn19li0KBB4bqaLFy4sEWLFtFLOvroo4uKisI1AEBNIWUBKmfx4sU33nhjbm5u3LEDBw5ct25deKj6zJgxI/6l2X79+rkFFABQU0lZgP/Za6+9NmvWrAkTJpx66qn169ePI/bAAw+cOnVqeDQDPP7449nZ2dErzMvLKykpCdcAAMknZQHKN3/+/Pvuu++SSy5p2bJl3K5looi96667NmzYEF6TMaJXnpWVVSeTPvwMAPAtkrIAoU8//fSkk06KU3BbrVq1Ou+885599tlEvNV5xx13xC87qvFMuMEyAMC3SMoChCZNmnTggQf26dMnLy+vf//+UQ3m5ubecsst4bmMN3r06Lhm+/btmwn3WAYA+LZIWYCvcskll0QpeNppp4WLhLjzzjvj35tt167dnDlzwjUAQDJJWYCvcthhh0Ud+Pvf/z5cJMdf/vKXxo0bRz9FkyZNnnvuuXANAJBAUhagQsuWLYt/Y/Yf//hHsProo49+/etf5+XlDR8+PKO+jKdcc+bMadeuXfSD5OTk3H///eEaACBppCxAhaZOnRrlX9OmTQsLC8vunPTee++dfvrp8ad2I82bN9+0adP212WilStX9urVK37Nv/nNb8I1AECiSFmACl1zzTVR+PXp06dv375t27YdNmxYz5494xqMHHXUUZMnTy4qKgovy1RRcg8cODB+8aNGjQrXAADJIWUBKvTTn/40qr6RI0feeOONZQUb6d279wsvvBCeTogrrrgi+hHq1q07ZcqUcAcAkBBSFqBCe++9d1R9zz33XFFR0fXXX9+nT58hQ4bk5+eH5xKlpKSkX79+0c/13e9+95NPPgnXAABJIGUByvf555/H78FGD8Ld11NQUPDiiy/ed999L730UrirVqtXrz7kkEOiH+24446LyjZcAwBkPCkLUL5XX321zpYvsAkXX8+qVav22muvss8kT5gwITxRrd58882cnJzohd19993hDgAg40lZgPKNGzeuzpZ7O4WLr23GjBlRwR5//PHR81xwwQXhurpdd9110QvLzc31MWMAIHGkLED5xo8fH2VeXl5euKikKGKjYrz44ovDRXUrKio69NBD62y5RXO4AwDIbFIWoHyFhYWHHXbYtGnTwkVlfPHFF02bNo1y8YEHHgh3GeCVV17JysqKXt4TTzwR7gAAMpiUBai0VatW5efnP/roo7fccsu5557bo0ePQw45JDc394QTTghOjhgxIgrFqGajS4JVhohef/QK999//9WrV4c7AIBMJWUBvkphYeEbb7wxceLEKEoHDhzYrVu3Zs2afXkvp6122223k08++e2339722uXLlzdp0iTa3nHHHdvOM8rSpUvj7xy67LLLwh0AQKaSsgBbFRcX5+fnjx079swzz+zYsWOjRo3CZv1SgwYN2rdvf/rpp99+++2vv/76+vXrw+dKpS699NLo5Pe+972ioqJwl0keeuih6HXWrVs30740CACgIlIWIPXZZ5/dc889J598cm5ubtisdepEQXvkkUf26dNn8ODBd91111//+tf58+eHT7GDmTNnZmdnR5c//PDD4S7z/OxnP6uzpbpXrFgR7gAAMo+UBWqvdevWRZ3Zs2fP+NZHsZycnC5dulxxxRV/+MMf3njjjcLCwvCyr6d79+7Rsx177LElJSXhLvN8/vnn8QenTzvttHAHAJB5pCxQG23cuHHYsGHxL7LGDj744MGDBz/99NNr164NT1fe888/H1fxhx9+GO4y1bRp0+KkHzduXLgDAMgwUhaojX73u9/FBbvnnnsOGjQouF3TzotvC/zzn/88XGS2yy+/vM6WD1QXFBSEOwCATCJlgdrohhtuiJqtb9++u+KGTMXFxfvss0/0/I8++mi4y2zr168//PDDo1feo0ePRHwuGgCotaQsUBu9/fbbUbDVq1dv5syZ4W6nzZ07t86WGwIvXbo03GW8/Pz8nJyc6PXfc8894Q4AIGNIWaCW6tWrVxRsXbt23bx5c7jbObNmzYqeOSsr6+vc6DgDXXPNNdHrz83N9TFjACBjSVmglvrggw8aNGgQNdvIkSPD3c5Zv359+/bt6yTka3h2VPYx46OOOmrTpk3hGgAgA0hZoDZasWJF27Ztjz322PiTwJdddtlTTz01d+7cjRs3hke/kaKiotdee23NmjXhIiHefffduPOHDRsW7gAAMoCUBWqj1atXt2nTpk55mjdv/oMf/KBHxc4+++y8vLyrr756+DbGjh07fvz4CRMmzJgxY9GiReG/l0C33XZb9H8jOzv7/fffD3cAANVNygK11Nq1a/fdd9+ygq1Xr97WnP32tGjRotWXOnfufOyxx55zzjkjRox4/PHHX3rppYKCgnlbrFixInx9GaBnz57Rj3DSSSeFCwCA6iZlgdprzZo148aNK4vYLl265OfnP//88+PHj7/77ru3fdM18Mtf/jIvL+/EE08M3rDt0KHDnnvuuV3Lfm3169dv3bp1VI/nnXfe6NGjJ06c+Prrry9cuDB80VXozTffrLPl/lWzZs0KdwAA1UrKArXdU089tfvuu8c92blz5yVLloQnKmnx4sVz5sx5aXsTJkyICnnMmDG/+tWv+vbte/jhhzdu3Hi7lq1AdnZ2q1atjj766CCbAwcffHD83m/Hjh3jydlnn3311Vffe++9UZGuWrUqfJVfx/MzejRp1mi33ffff//169eHWwCA6iNlAVIzZswoeze1TZs2//znP8MTu9L8+fPnzZuXn58/efLk22+//Yorrjj55JOPOOKIPfbYY/uq3SkHHHDAiSeeeNFFFw0fPvz++++fMmVKFNjTp0+PP+EcmTVrVjR58cUXx28xadKk1Yf3+lud/fbMyj5hz31LPpgTvm4AgOojZQHSZs+e3bJly7j6mjRp8uSTT4YnqsOSJUveeeedadOmRW155513hh903iLq0jg+tzVy5MjrrrvujDPO6NKlS6NGjbav2q+rfZ36m+sclIr/NOuS+nxn368GAPi2SFmAUgsWLOjUqVNccVlZWUOHDq0x36paUFAwZcqUUaNGDRo06JRTTunevXv8aeTox9y+XtM3cD788MN79Ojxs+atnqnTvLRjc49M//f0y8PnBQCoJlIWYKt169bl5eWVdV23bt0+++yz8FBt8NZ7qbqHlHZs9Of/PpL+b9bBqXdmhycBAKqDlAUITZo0ab/99otrdp999pk6dWp4omZbuTrVpufWjo3+LFqcOuGc9IO+F4aHAQCqg5QFKMfatWuvv/76hg0bxkF7/PHHf/rpp+GhGqmkJNXngtKC/W7H0gdfrEvNeCf9oO4hqTkfh5cAAFQ5KQtQoc8++6xXr15lb8++/PLL4Yma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qVmz5sEHH9y+ffuuXbv26dPniSeemDZt2vLly8OflOe//9vw5KeM0ydlVKyePn73n2ecNWfU1HAnAABAQMomz/z587/++utw9Tvr16+fPXv2KwU8+OCDgwcP7t27d8+ePTv/wMknn3zQQQeFN68WYY899mjcuHHUt506derRo8cNN9wQde+4ceNmzZpV/PfxLFy4MPrzw0XfpWz0dcbkjCrpWq5ae9/FixeHBwAAAGxMyiZMVIxRT8Zh+ZOf/KRBgwa/+c1vWudp1apV/fr1N0rPkovOcMghhxx33HFR5Ub1++9///uBBx6Ievijjz5auXJl+NuU3Lvvvrvrrru+9dZb69anKl5WoGa7zCpfLV2z0Y/e9MtsAQAApGzyTJ48+Yorrqhbt26YoQXElZsvqtyTTz45vCCbJ+rVESNGTJgwIb5Yur09/PDD0a93/vnnR9+3GvB9yu5xVWrIY6/Gj4m69968xxkDAAAUQcom2NSpU0ePHj28gKeffvr999/fJpdPt5OuXbtGsfqHP/wh+v7Bdzd0bLUrU+Pnpac9evSIppUqVYr+IRsft1188MEHUeHPnTs3HGy1RYsW5X+/ePHiJ554onfv3jfeeOPMmTML7AIAALaQlGXHue222zIzM6NYve+++6K/5uSm7ngj9bdHU9O+2LBhzZo1rVq1ijZE22655ZaCx24Pp5xySvSzunXrVnBx/fr1UeLm5OQUXCyRRx99NCPvvuIGDRrss88+318rz8ioWrXqjBkzwgMAAIASkrLsIDfddFOcc2effXY4K+Dbb79t3759vPPyyy+PwjLcUbSoP6dNm/bMM89Mnz49nBXmqKOOin7KMcccU3CxZ8+e0WLt2rWvu+66LQva6J9wzjnnVKyYfslQrG7dutFPqVevXvyPCg8AAABKSMqy3UVBeOmll8ZRd9555xXnqU7nnntuvP/AAw8cPnz46tWr80dRKL7++usDBgzonSc684knnti8efMGDRpUrVo1PqpcuXLRD7r++us3/eHh22+/PdrcokWLgotZWVmnn356fJ7WrVvPnj274LT4Pv/886effvqll17K/x169eoVnbNz584bbwQAAEpMyrJ9LVu2rF27dnEZdu/evTgdG4m23XbbbZUrV44P3GuvvaK/LlmyJFpv0qRJvFgcxx57bHjqAh544IFozyGHHBIOUqnrrruufPny0bRixYpRgm7Z5dlAhw4dohNefPHF4QAAACghKct2NGvWrIYNG0b9FmVhnz59wvHmfPLJJ1H41ahRI+7SqGz/+te//vSnP/0+VYvWrFmzjh07jhs3LjxpAZtI2cjrr79++OGHx2fr2bNnOC6h7Ozs+C1Kjz/+eDgDAABKSMqyvYwfP75WrVpRvEUt+uKLL4bjYluxYsXtt9/+s5/9rECoFql69epdu3Z9//33w7MUZvjw4RlFp2wq7+Lw2WefHZ82nJVQFNUZeQ9nXr58eTgDAABKSMqyXYwdO7ZKlSpRvO23334ff/xxOC659evXjxkz5uc//3l+tTZp0uT000+PcvS1116LX0o0YcKENWvWhEcWbeDAgdF5WrZsGQ4K6N69e0bec5uK+dHoosRvIfr9738fDgAAgJKTsmx7//nPfypVqhSV269+9auvvvoqHG+FZ599Nu7Y+KU+kTZt2rz00kvhvuK58cYbozO0b98+HHznkUceKVeuXLTn5ptvDmclkZ2dXbt27eg8999/fzgDAABKTsqyjfXv3z/Ov6OPPnrFihXheOssWLAgLtgjjzzyxBNPjL+P//rmm2+GuzenR48e0bFdunQJB3nGjx8fP3fqlFNO2crHPj3//PMZeff6+nQxAABsE1KWbemf//xn3JZ//OMfC75BZxuKnwLVsGHD6PupU6d27NgxftRw5K9//euSJUvCA4r2t7/9LToqCtpwkErNmTMnvo7661//ukQfWi5U/G6hk046KRwAAABbRMqyzVx//fVxUl5wwQVbeRlzE5o3bx79iFq1auWvzJw5s3379vGPjvpz9OjRBbZvSvx2nGuuuSYcpFJRwWbk3eiblZUVzkoufmbV0KFDwwEAALBFpCzbRt++feOYvPTSS8PZNhW/IKd8+fLr168vuP7EE0/ss88+8e8QNernn39ecFqo0047Ldoc/ebB+muvvRat77LLLsV8EvKmTZgwIf6FFy5cGM4AAIAtImXZBoYMGRI/h6lbt27hbFs7/fTT416dMmVKMFq2bNmZZ54ZT6tXr3733Xdv+rHDzzzzTJs2bX543fXaa6+NztC2bdtgfctccMEF0dl++9vfhgMAAGBLSVm21tixY3fZZZeo1jp16rTpdNwm8m/HHTlyZDjL8+KLLzZq1Cje06pVqw8//DDcsTm33nprdGx0kpUrV4az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0eY999xz4cKF4azYVqxYcdNNN/3sZz+LTtWnT59wDAAAsENI2UTKzc09+uijo55s3rx5cR4g1L9//2hzZmbmc889F86KJzs7++67765Tp07eS3wyatWq5W5bAACgtEjZRBo9enTUk+XLl580aVI4+4Fx48ZVqFAh2n/ZZZeFs81ZtmzZ3LlzhwwZ0qhRozhi99prr759+y5ZsiTcCgAAsKNI2eTJzc094IADoqrs2rVrOPuBmTNn1qxZMyPvltr169eH46JFP6VTp07lypWLCzZSrVq13r17r1y5MtwKAACwY0nZ5Bk1alRG3gt15s+fH842tmjRon333Tfa3KhRo6VLl4bjTRoxYkR+xO6+++7du3ePzhZuAgAAKA1SNmFyc3ObNGkS5WXUluFsY6tWrTriiCOinXXq1Jk9e3Y43qSoYwcPHnzOOedMnz593rx5a9euDXcAAACUHimbMC+88EJUpxUqVPjss8/C2cb+7//+L9pZpUqViRMnhrNNeuedd6IDu3XrFg4AAAB+HKRswvz5z3+OOrNDhw7hYGP5jyweNWpUONucrl27RseeddZZ4WCLfPzxx1ddddVJJ53UokWLli1bPvzww+EOAACAEpKySbJ48eJKlSpFnfnCCy+EswKieoxfOduzZ89wVgxt2rSJju3bt284KGDNmjXhUgFjx4495JBDWrdunZ2d3aBBg/iG21i9evXC3QAAACUkZZOkX79+UQ3Wr19/0++SPeGEE6JtUUxGJRnOiuHggw+ODn/ggQfyV2bMmHHHHXcMHz48auP44cnx+V9++eUCx23wv//9r2LFitGGvffee/78+WPGjPnb3/527bXXtmvXLlps0qRJeAAAAEAJSdkkOeqoo6IavOqqq8JBAc8991xG3keLJ0yYEM6Kp1mzZtEZRo4cmb9y+eWXx/mar2bNmvvtt9/NN99c4LgNTjzxxGhDgwYNvvzyy/zFVatWRWUbrd92220F9gIAAGwJKZsYWVlZ5cuXj2rw7bffDmff+eabb+IP9J5xxhnhrNjilC14U2tubu6dd97ZunXrE044IcrXmTNnFti+kfnz58evon399dcLrt9yyy3RYo0aNZYvX15wHQAAYAtI2cQYOXJkVIN77bVXFJbhLM+6devatm0bXzIteEW0pH6YssU3aNCg6Nj9999/4cKF+R9vjvp2t912i9aj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F9v797//Xa1atejI2bNnh7tdys7Onj59+q6D89JLL41euW3btuEiP3/u3LkZW96d+8ILLxQMZ8yYEX+c7OTJk7cdCgBUOFIWoCL77LPPGjduHKVd165di3oLqIYNG0ZPfPnll8PF9vr165fxndsL74533nkn4zs3cwo0a9YsYyf3dop069Yt2kbJfcUVVzzwwANDhw6tW7duNDnnnHPCQwGAikXKAlRkH3/8cVR38YnKLl26bNiwITxi5/bee+/oWXPmzAkXhSxZsqR69erRYTNmzCgYrl+/fvbs2ePGjbvjjjvefvvtQoeHXnvttejgcFrIJZdccuihhy5btixcbPHVV1/FnwBUWMeOHbOyssJDAYCKRcoCVHDxNcZxzZ511lmFP4V11370ox81bNgwqs1wUcjPf/7z6GWjnoweb968+YknnjjttNPiuI3ttddeu3kP5OLJycmZNGlS9HdFv+2JJ544ZsyYop58BgCSSMoCVHArV66M7+gb1+yjjz4aHrETvXr1qlOnzurVq8PFtxYuXBjfk+mWW2657bbb4o9yjTVq1Khjx459+/bt1q3b916iDABQVFIWoOKbOXNm1LFxdvbs2TNc78S6deuWLFkSTgt57rnnCto1Vrdu3QEDBrzyyivF+zBbAIDdJGUBKoVBgwbFtbnffvuFu+LKzc29+OKLGzVqVL169WOPPXbEiBFffvlleBAAQBpIWYBKYcOGDYcddlhcs3Pnzg3XAACJImUBKou33347MzMzStmGDRvu+tNcAQDKOSkLUIn87ne/i0/Mdu7cOdwBACSHlAWoXNq0aRPX7BNPPBHuAAASQsoCVC6jR4+OU7ZevXoLFy4M1wAASSBlASqX7Ozsm2666aCDDopq9sgjj8zKygqPAAAo96QsQGW0ZMmSBg0aRDXbt2/fcAcAUO5JWYBK6rHHHouvNJ48eXK4AwAo36QsQOXVv3//KGXr1q27aNGicAcAUI5JWYDKa+PGjccee2xUs9H37OzscA0AUF5JWYBKbdGiRbVr145q9sYbbwx3AADllZQFqOzGjh0bpWz16tXfeOONcAcAUC5JWYDKLi8v7+STT45qtm3btps3bw7XAADlj5QFIH/x4sW1atWKavauu+4KdwAA5Y+UBSDlt7/9bZSy9evX//TTT8MdAEA5I2UBSMnOzj788MOjmj3//PPDHQBAOSNlAdjqr3/9a8YW0YNwBwBQnkhZALbp1atXlLJHHnlkTk5OuAMAKDekLADbfPLJJ3Xr1nX/JwCgnJOyAGxn5MiRUco2aNDA/Z8AgHJLygKwnYL7P/Xo0SPcAQCUD1IWgNCsWbOqVq0a1ez9998f7gAAygEpC1COPProo/fee2843RMGDhwYpWy9evUWLVoU7gAA9jQpC1BejB49OqrHfffdNy8vL9yVuY0bNx5zzDHR79OqVausrKxwDQCwR0lZgD3vgw8+6Ny5c/yZrrfeemu43kP+9a9/NWjQIPqVevbsmZubG64BAPYcKQuwJ33yySdXX311zZo1o2KsWrXqkCFDNm/eHB6050yfPj1+0+xll10W7gAA9hwpC1Cm8vLyZs+e/eabb06aNOnMM8/MzMyMT8YeddRRL7/8cnh0OTB27Nj4Nxw6dGi4K7pFixa98MILzvECACUkZQHKwpIlS/7whz/079+/cePGcRkWaNWq1ZQpU8rVydjAzTffHP+qt9xyS7grijlz5tSpUyd6nXvuuSfcAQAUhZQFSK/33nuvU6dOhds1dvjhhw8cOHDu3LnhE8qlIUOGxL92sd/K+8UXXzRp0iR+kWHDhoVrAICikLIA6TVu3LhDDz303HPP7du3b7du3aKQ22+//ZJ4WnLQoEFxiPbr1y87Oztcf5/ofyB+euTpp58O1wAARSFlAcpOz549o5C78sorw0VCXH/99XGLtm/f/rPPPgvXO/f4448XdGyNGjV8ug8AUEJSFqCM5ObmNmzYMGq5v/zlL+EuOSZPnly7du3or2jatOk//vGPcL0jH330UaNGjQpStlOnTuERAABFJGUBysg777wThVxmZubatWuD1YIFC6699tq+ffuOGjWqPN//KRYV7AEHHBD9LXXr1p0xY0a4LmTTpk1XXnllx44dCzo2wz2fAIDSIGUBysh9990XhdwxxxyzYsWKguHLL7/cvXv3gsxr3bp1oWeUX8uXL2/Xrl3GljK///77w/W3pk2bVvCnxapWrRo9NzwOAKCIpCxAGbn44oujlhswYMDxxx/fpk2bG264oUOHDgWNd/rppz/77LPl/5RsgW+++eass86K6/TBBx8M11sUvtVT7KSTTgoPAgAoOikLUEZatmwZtdyUKVMuvfTSgrSrUqVK1Huvv/56eHQSROF9wQUXRH9FzZo1X3311WC7evXqWrVqFfyZ8eO77747OAwAoBikLEBZ2LBhQ2ZmZtRy77333tdffz148OAePXoMGzYs+jE8NFFycnJOOumk6O866KCDgvcAjxkzpqDYa9SoEQftJ598UvgYAIDikbIAZWHBggXx2ctiX0IcRe/MmTMnTpw4b968cLdHLV++fN99943+ut69excMc3NzDznkkIKU3WuvvaLvHTt2LPQ8AIDik7IAZeHRRx+NWu6oo44KF7vn448/LrhYNzMzM2ra8Ig96qmnnop/t+nTp8eTP/7xj99mbEb9+vUbNGgQPZgwYcL2zwMAKCYpC1AWbr755qjlzj333HCx26J8nTp1avv27aPXGT58eLhOpxkzZkT/aJcuXXZxOXSfPn0ytnzY7Nq1a7Ozsw888MCClG3RokX0vV69et/9FCIAgOKRsgBlYdSoUbVr177hhhvCRRF17do1ysIRI0aEi3R6/vnnq1evHndpmzZtrrvuumnTpn344YeFj1mzZs1+++2XseUWzfHHDsVq1qzZrFmz6MFll11W+HgAgJKQsgBlYfHixUccccTf//73cFEUK1asiMowysKyv8B43LhxBXVaoHHjxt27dx8/fnzUsdExjzzySMaWz+bZf//9C45p0qRJ9D0q4WXLloUvCgBQXFIWYA9bvXr1vHnzHn744Ztuuql3796dOnVq3rx57dq1+/XrFxw5YMCAjC3X627atClYpdv8+fMLTsx+V4MGDQYPHhwF9umnn154XvAZPL/+9a/DVwQAKAEpC1B2li9f/sorr0yZMuXmm2+OqrVDhw6NGzcu3H6xevXqXXjhhYsXLy783A8++CCOySeeeKLwvMwsXbo0KNXvqlOnTpSv3x1++umn4csBAJSAlAVIl+zs7Llz5955553nn39+69ata9euHTRegSj22rZt26dPn7Fjxy5YsGCHJ13PPvvs6MjjjjsuLy8v3JWhRx555Jhjjgn/gF0aOnRo+CoAACUjZQFK2dKlS6N87dy5cxSoYdVlZOy9995t2rQ555xzBg8ePH78+FmzZi1fvjx8ie945pln4qe/+OKL4W5PeOGFF7p16/bdE7A75DN4AIBSJ2UBSsfatWsnTpzYoUOHwhVXq1atE0888ZprrpkyZcr8+fNXr14dPm03bNq06bDDDote7aKLLgp3e9SiRYv69u1b+O/doZ/85CfhMwEASkbKApTU+vXrBw4cWPgcbKtWrYYNGzZr1qyNGzeGRxfdgw8+GL1m/fr1V65cGe7KgRkzZtx2220TJkxo06ZNwf9A586d4wc/+9nPdvFptAAAxSNlAUrqqquuirOtSZMm11xzzcKFC8MjSibOwsGDB4eL8mft2rXLly+fN29e9Pjcc8+N/09WrVoVHgcAUDJSFqCk+vXrl7Hl82Z2eLumElq3bl38WbJz5swJd+Xb6tWrmzZtGv3mF154YbgDACgZKQtQUn/6058ytlwA/NFHH4W7Eps9e3bGlg9uTUcnp9vTTz8dn69+6qmnwh0AQAlIWYCSys3NbdWqVRRs3bt3D3clFt+7uFatWllZWeEuCX7xi19Ev/8Pf/hDlxkDAKVIygKUglmzZsWfTDNlypRwVzKrV69u1qxZRrn5GJ6iKrjMuEePHuEOAKC4pCxASS1durRly5bx/XurV68+bNiw559/ftmyZXl5eeGhxZKVlTV37txSuRnyHhH9b8SdP27cuHAHAFAsUhagpD766KP9998/flNo4IADDmjXrl2nnTjllFP6bnH99dcPL+See+554IEHHn744ddee+2LL74I/70Euuaaa6L/jbp163722WfhDgCg6KQsQCmICq1evXoFBVujRo1tOVt6mjVr1vxb7du3P+200/r163f77bdPmzZt9uzZy761bt268Pfb03JycuK3E/fv3z/cAQAUnZQFKB1ZWVm33nprfCVtpHPnzm+99dbzzz//wAMPjB07tvBJ18DAgQP79u175plnBudsjz766Pr162/XsrutTp06RxxxRPQ7ROl45513PvbYY6+//vqXX34Z/tJl6Mknn8zYEvnLly8PdwAARSRlAUrTlClTqlWrFvfk6aefXvLbDq9YsWLRokUvbu+BLUaNGnX11Vd37949qtbC54R3oWbNms2bNz/55JODbA4UnPs9/vjjox9PPfXU+CroyZMnz58/v3h/VN7jTx9Wu361zMzWrVuHOwCAIpKyAKVsxowZtWvXjtOxXbt2ZXwSMr7GeN68eY8//vgdd9xx+eWXd+3atWXLlnXr1t2+akukRYsWPXr0iF58+PDhUVT/+c9/jgJ77ty5BRc5L1iwIJrMnDkzru6npk3fuO9xz2Q0qVOlat+mh+R/XKb/JwBAxSNlAUrfK6+80qhRo7j6mjZt+tJLL4VH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
Non-concurrent forces do not act through the same point.
See also [[concurrent forces|Concurrent Forces]]
Unlike [[value added|Value Added]] this is a process which adds nothing to the value of the product, for example moving the product from one end of the factory to the other costs time and money, but adds nothing of value.
If [[heat energy|Heat Energy]] is being added to a fluid in a system, for example the ignition part of car engine cycle, the heat energy into the air in the cylinder will equal the [[internal energy|Internal Energy]] and the [[flow energy|Flow Energy]].
The flow energy is moving the piston and so is the [[work|Work]] done by the piston. This means that energy is leaving the system and so the work done is subtracted.
If however the fluid is on the compression stroke, work is being done ''to'' the fluid and so would be increasing the internal energy and the work done is added.
The $$\pm$$ sign indicates that the equation it is dependent on whether the work is going in or out.
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Work in a Non-Flow System]]
*The volume of the boundary may change.
*No fluid crosses the boundary.
*Energy may be transferred across the boundary.
**Heat energy can also be transferred into and out of the system.
|Expansion of the fluid does work outside the system. <br><br> e.g. The piston is being pushed down by the expansion of the gas caused by the ignition of the fuel. |[img[http://steacher.droppages.com/diagrams/otto_pwr.svg]]|
|Compression of the fluid needs work to go into the system. <br><br> e.g. The piston is being pshed up by the momentum of the engine. |[img[http://steacher.droppages.com/diagrams/otto_cmp.svg]]|
Images from http://www.animatedengines.com/otto.html
[[Would you like to know more?|Non-Flow Energy Equation]]
The fluid in the system does not flow from one place to another but remains inside fixed boundaries.
e.g. the air in the cylinder of an engine.
[[Would you like to know more?|Non-Flow System Rules]]
Normal to: perpendicular, at right angles to
Normal force is a [[force|Force]] at right angles to another force. It is often used when talking about [[friction|Friction]] and the [[weight|Weight]] of an object in relation to a force pushing it along a flat surface.
{{||$:/template : variable}}
.container_notes {
width: 200px;
margin: auto;
}
.heading_note, .close_note {
background-color: yellow;
font-size: 0.8em;
font-weight: bold;
border-top: solid 2px black;
border-bottom: solid 1px black;
padding: 1px;
text-align: center;
float: left;
}
.heading_note {
width: 170px;
border-left: solid 1px black;
border-right: solid 2px black;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.close_note {
width: 20px;
border-left: solid 2px black;
border-right: solid 1px black;
}
.notes {
background-color: yellow;
font-size: 0.8em;
width: 190px;
border-top: solid 1px black;
border-bottom: solid 2px black;
border-left: solid 2px black;
border-right: solid 2px black;
padding: 4px;
line-height: 1em;
}
{{||$:/template : greek}}
Number of turns in a coil used to generate a magnetic field.
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : variable}}
```
<div class="toctc-table-of-contents">
<<toc-selective-expandable "Table of Contents" "!tag[noshow]nsort[ord]">>
</div>
<div class="tocptc-table-of-contents">
<<tocP-selective-expandable root "!tag[noshow]nsort[ord]">>
</div>
```
{{||$:/template : equation}}
For a perfect resistor Z=R
When voltage and current are in phase:
{{||$:/template : equation}}
{{||$:/template : greek}}
Open and closed systems are also called ''flow'' or ''steady flow'' and ''non-flow'' systems.
<$tidgraph start="Open and Closed Systems" />
```
<p style="page-break-after:always;"></p>
```
<center>
[img[http://steacher.droppages.com/diagrams/Parallel_Lines.svg]]</center><br>
Two lines are said to be parallel when they are the same distance apart and travelling in the same direction. e.g. Train lines.
See here:
https://ch301.cm.utexas.edu/section2.php?target=gases/mixtures/partial-pressure.html
!!NB
There are several different measures of a material's hardness, which can make it difficult to compare one material with another. There are conversion tables around which give approximate equalities:
<iframe src="//www.pearltrees.com/stephenteacher/hardness-conversions/id24423730?embed=2&d=201903191355" width="560" height="200" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/hardness-conversions/id24423730" style=" color:#818181; font-size:13px;" target="_blank">Hardness conversions</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
A description of the Rockwell Hardness Test is [[here|Rockwell Hardness Test]].
<iframe src="//www.pearltrees.com/stephenteacher/further-reading/id12478049?embed=2&d=201507211751" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/further-reading/id12478049" style=" color:#818181; font-size:13px;" target="_blank">Further reading</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
<br>
[[Direct link|http://www.pearltrees.com/stephenteacher/further-reading/id12478049]]
<iframe src="http://docs.google.com/gview?url=http://www.sdplastics.com/peek.pdf&embedded=true" style="width:100%; height:500px;" frameborder="0"></iframe>
<span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.sdplastics.com/peek.pdf" style=" color:#818181; font-size:13px;" target="_blank">{{!!title}}</a> by <a href="http://stephenteacher.tiddlyspot.com/#Ste.W" style=" color:#818181; font-size:13px;" target="_blank">S.Wilson</a></span>
A perfect frame is a [[simple frame|Simple Frame]] with a load which follows the [[beams to joints equation|Simple Frame Joints to Members Equation]] and has no [[redundant members|Redundant Members]].
Dissatisfaction with products currently available on the market will always be a trigger to design improved
versions.
Existing products may:
*be too costly
*be too unreliable
*require too much servicing
*have too short a life
*be too costly to run
*be too heavy
*have too large
[img[http://steacher.droppages.com/diagrams/Periodic Table.png]]
<<<
The degree of magnetisation of a material in response to a magnetic field
<<richlink "https://en.wikipedia.org/wiki/Permeability">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
This equation shows the relationship between [[permeability|Permeability]] and the [[B|Magnetic Flux Density]] and [[H|Magnetic Field Strength]] magnetic fields.
{{||$:/template : equation}}
<<<
In electromagnetism, absolute permittivity, often simply called permittivity, usually denoted by the Greek letter $$\epsilon$$, is the measure of capacitance that is encountered when forming an electric field in a particular medium.
[[Vacuum permittivity|Vacuum Permittivity]] is the lowest value of permittivity.
<<richlink "https://en.wikipedia.org/wiki/Permittivity">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
At right angles to.
At 90° to.
Even today the search continues.
<iframe width="560" height="315" src="https://www.youtube.com/embed/ycs9zDZbdVo" frameborder="0" allowfullscreen></iframe>
[[Would you like to know more?|Press on and all Shall be Revealed]]
{{||$:/template : greek}}
{{||$:/template : greek}}
{{||$:/template : equation}}
*The number of times the diameter of a circle fits into the circumference.
Constant: {{!!variablelatex}}
Value: {{!!value}} {{!!unitlatex}}
The decimal part of $$\pi$$ goes on forever and fits all the criteria for a random number.
Go [[here|http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html]] for $$\pi$$ to 100,000 decimal places.
Picture left
@@.floatleft
[img[http://steacher.droppages.com/diagrams/guitar.svg]]
@@
```
Picture left
@@.floatleft
[img[http://steacher.droppages.com/diagrams/guitar.svg]]
```
Picture Right
@@.floatright
[img[http://steacher.droppages.com/diagrams/guitar.svg]]
@@
```
Picture Right
@@.floatright
[img[http://steacher.droppages.com/diagrams/guitar.svg]]
```
Pin or Articulated joint.
In a [[simple frame|Simple Frame]] we imagine that the joints are are hinges or points the [[members|Members]] could pivot around.
In reality the joints will be firmly secured, welded or bolted.
Please drink legally and responsibly.
A pint is not an [[S.I. Unit|S.I. Units]] nor is it a unit of [[displacement|Displacement]].
It is a unit of volume and is just under half a litre.
[[Would you like to know more?|Timothy Taylor]]
Another word for [[fulcrum|Fulcrum]]
<center>
[img[http://steacher.droppages.com/diagrams/Point_load.svg]]</center><br>
A point load is also called a [[concentrated load|Concentrated Load]]
<<<
Poisson's ratio is a measure of the Poisson effect, the phenomenon in which a material tends to expand in directions perpendicular to the direction of compression. Conversely, if the material is stretched rather than compressed, it usually tends to contract in the directions transverse to the direction of stretching. It is a common observation when a rubber band is stretched, it becomes noticeably thinner. Again, the Poisson ratio will be the ratio of relative contraction to relative expansion and will have the same value as above. In certain rare cases, a material will actually shrink in the transverse direction when compressed (or expand when stretched) which will yield a negative value of the Poisson ratio. <<richlink "https://en.wikipedia.org/wiki/Poisson%27s_ratio">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
Parts can be easily machined from standard metal working tools. No special tools are needed, and finished parts can be polished to a high gloss. Water or water-soluble cutting oils should be used when machining polycarbonate, since some standard cutting oils will attack the material. Polycarbonate can be machined on standard metalworking or woodworking equipment. Its unique properties permit it to be machined without chipping, splitting, or breaking.
The polytropic equation is an equation that can be used to describe a number of different types of changes in pressure and volume of a gas for example, depending on the value of the index (power) $$n$$ it could describe each stage of the [[Otto Cycle]] <<richlink "https://en.wikipedia.org/wiki/Otto_cycle">> (how pressure and volume change in a typical car engine).
For an [[adiabatic change|Adiabatic Change]] the $$n$$ is replaced by $$\gamma$$
This is usually written as:<br><br>
<center>
$$\displaystyle PV^n=\text{Constant}$$
</center>
or
{{||$:/template : equation}}
This is the index, or power, which determines what type of chance to a gas is described by the [[polytropic equation|Polytropic Equation]]
[[Table needed]]
{{||$:/template : variable}}
```
{{||AddNewNotes}}
```
{{||AddNewNotes}}
Power is simply energy per second.
The [[energy|Energy]] in is [[effort|Effort]] and out is [[work|Work]]
As power is Work/ Second and work is force x distance, we know that distance/ second is velocity and so the power equation can also be written in the alternative form below.
{{||$:/template : equation}}
{{||$:/template : variable}}
When doing calculations it is important to use the correct units. Put the correct units into the equation and you will get an answer in the correct units.
''This is important.''
There is a big difference between ''£1k'' and ''£1'' in your bank account. The same is true for your answers.
|!Prefix|!Symbol|!Multiply by |<|!$$\times 10^?$$ |
|Tera|T| 1,000,000,000,000||$$\times 10^{12}$$|
|Giga|G| 1,000,000,000||$$\times 10^9$$|
|Mega|M| 1,000,000||$$\times 10^6$$|
|kilo|k| 1,000||$$\times 10^3$$|
|centi|C||0.01 |$$\times 10^{-2}$$|
|milli|m||0.001 |$$\times 10^{-3}$$|
|micro|$$\mu$$||0.000 001|$$\times 10^{-6}$$|
|nano|n||0.000 000 001 |$$\times 10^{-9}$$|
|pico|p||0.000 000 000 001 |$$\times 10^{-12}$$|
|femto|f||0.000 000 000 000 001 |$$\times 10^{-15}$$|
|atto|a||0.000 000 000 000 000 001 |$$\times 10^{-18}$$|
Original power point can be found [[here|https://www.dropbox.com/s/1rktrzxyfy1t1rn/Pin%20Jointed%20Frame%201.3.pptx?dl=0]] for downloading and opening.
<iframe src="https://docs.google.com/presentation/d/13OqzYm3HYaI4nJ7U14F-AYC8XvpiBxwxkVfNJs6RbPk/embed?start=false&loop=false&delayms=3000" frameborder="0" width="100%" height="749" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vRmVYqkBLqu8UYs9EhPMFx_yrVsvAmUmBL9AOn9V1Iz0JgZ0kYqj-mlkAmAaIQrfMPsf5Sonc4giY6M/embed?start=false&loop=false&delayms=3000" frameborder="0" width="100%" height="749" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
The answer is almost here!
[[Would you like to know more?|To Find the Secret of Free Energy]]
!!Pressing Pedal
A pedal 400mm length and 30mm wide, placed inside a 55mm wide space to restrict the amount of the foot that can be placed onto the pedal.
|!Sex|!Mean ($$Nm$$)|!S.D ($$Nm$$)|!Range ($$Nm$$)|
|Male|329,183|129,99|173,00 - 579.70|
|Female|237,99|106,80|121,50 - 435,60|
Pressure is a [[force|Force]] acting over an area.
For example the pressure of an elephant standing on you might be about the same as the pressure a stiletto heel as although the force being applied by the person wearing the stiletto is much less than that of an elephant, the area of the heel is very much smaller.
From the definition above then:
{{||$:/template : equation}}
$$N/m^2$$ are given the name <b>Pascals</b> ($$Pa$$) after [[Blaise Pascal|https://en.wikipedia.org/wiki/Blaise_Pascal]].
$$1Pa$$ is a very small pressure (imagine a liquidised apple on a $$1m^2$$ table) and so it is common to use $$MPa$$ or $$GPa$$ or [[Bar]].
When talking about the pressure of a gas on something, e.g. a container, the pressure comes from the the molecules bombarding the inside of the container. Each collision produces a [[momentum|Momentum]] force when it bounces.
The total [[force|Force]] of all the molecules bouncing off the container per unit of [[area|Area]] is the pressure of the gas.
Pressure can be given as:
<<list-links "[tag[Pressure]]">>
{{||$:/template : variable}}
Pressure equipment and assemblies subject to an internal pressure greater than 0.5 bar. The Regulations therefore concern manufacturers of items such as shell and water tube boilers, heat exchangers, vessels, pressurised storage containers, industrial pipework and accessories.
The PED has been enacted in UK law. From 29 May 2002 the pressure equipment directive is obligatory throughout the EU.
No clue.<br>
I am guessing it means load forces which are not given in the question.
When something is is [[BURNED|https://youtu.be/en1uwIzI3SE]] the products are what you have at the end, so for example $$\ce{co2}$$ is a product of burning petrol.
It can be thought as the stuff you need to get rid of at the end of the burn, so out of the exhaust of the car for example.
!!Important Notes:
Please check data in these tables against other sources. I have provided links to reputable information sources for this purpose.
!!Notes:
The critical temperature is the maximum temperature at which a gas can be liquified. (above this temperature a liquid cannot exist).
The critical pressure is the pressure to liquify the gas at this temperature.
The critical density is the resulting density at these conditions.
The viscosity values are in $$\mu P$$ to obtain $$\mu Pa = \mu N/m^2$$ divide table values by 10.
The properties marked ** are temperature related.
!!Physical Properties at ST & P
Properties are generally at Standard Temperature and Pressure (273 K, 1 atm)
|scrollable|k
| !Gas | !Chemical Formula | ![[Molecular Weight]] | ![[Density]] ** | !Freezing Temp | !Boiling Temp | ![[Critical Temp]] | ![[Critical Pressure]] | ![[Critical Density]] | ![[Thermal Conductivity]] ** | ![[Dynamic Viscosity]] ** |
| !| !| ! | !$$kg/m^3$$ | !$$K$$ | !$$K$$ | !$$K$$ | !$$\times 10^5 \space Pa$$ | !$$kg/m^3$$ | !$$mW/mK$$ | !$$\mu P$$ |
| [[Acetylene]] | $$\ce{C2H2}$$ | 26.04 | 1.173 | 192.44(melt) 189 (subl.) | 189.04 | 308.36 | 61.39 | 230.41 | 21.3 | 10.22 |
| Air | | 29 | 1.293 | 59.15 | 78.67 | 132.45 | 37.7 | 316.56 | 24.1 | 181 |
| Ammonia | $$\ce{Nh4}$$ | 17 | 0.77 | 83.84 | 87.32 | 150.1 | 112.8 | 235.29 | 24.2 | 10.13 |
| Argon | $$Ar$$ | 39.95 | 1.783 | 84 | 87 | 151 | 48.98 | 531 | 16.2 | 223 |
| n-Butane | $$C_4H_{10}$$ | 58.1 | 2.672 | 134.9 | 272.69 | 425.22 | 37.97 | 227.95 | 13.77 | 69.02 |
| Carbon Dioxide | $$CO_2$$ | 44 | 1.977 | 194,7 sublimes | ** | 304 | 74 | 460 | 14.5 | 147 |
| Carbon Monoxide | $$CO$$ | 28.01 | 1.25 | 68.19 | 81.74 | 132.96 | 34.99 | 270.27 | 24.6 | 177.5 |
| Chlorine | $$Cl_2$$ | 70.9 | 3.214 | 172.16 | 239.16 | 417.19 | 77.1 | 571.43 | 8.034 | 123 |
| Ethane | $$C_2H_6$$ | 30.07 | 1.356 | 90.39 | 184.59 | 305.06 | 48.8 | 203 | 21.18 | 93.76 |
| Ethylene | $$C_2H_4$$ | 28.05 | 1.26 | 104.04 | 169.45 | 282.2 | 50.4 | 214.13 | 17.97 | 93.76 |
| Helium | $$He$$ | 4.03 | 0.178 | 1.89 | 4.26 | 5.24 | 2.3 | 69.93 | 146 | 187 |
| Hydrochloric Acid | $$HCl$$ | 36.5 | 1.639 | 159 | 188 | 324 | 83.1 | 450.45 | 13.43 | 134 |
| Hydrogen | $$H_2$$ | 2.02 | 0.09 | 14 | 20.4 | 33.23 | 13 | 31.4 | 168.4 | 88 |
| Hydrogen Sulphide | $$H_2S$$ | 34.1 | 1.538 | 187.7 | 212.8 | 373.57 | 89.63 | 346.02 | 12.65 | 11.71 |
| Methane | $$CH_4$$ | 16 | 0.716 | 90.71 | 111.7 | 190.6 | 46.04 | 161.58 | 30.01 | 103.3 |
| Methyl Chloride | $$CH_3Cl$$ | 50.5 | 2.308 | 175.49 | 248.97 | 416.29 | 66.8 | 352.86 | 179.2 | 100.4 |
| Natural Gas | | 19.5 | 0.862 | | | | | | | |
| Neon | $$Ne$$ | | 0.902 | 24.59 | 27.13 | 44 | 26.53 | 483.79 | 46.11 | 297 |
| Nitric Oxide | $$NO$$ | 30 | 1.389 | 112.19 | 121.42 | 180.19 | 64.8 | 518.13 | 23.69 | 178 |
| Nitrogen | $$N_2$$ | 28 | 1.25 | | | | 33.9 | 311 | 24.3 | 174 |
| Nitrous Oxide | $$N_2O$$ | 44 | 1.978 | 182.37 | 184.71 | 309.61 | 72.45 | 451.67 | 15.52 | 134.9 |
| Oxygen | $$O_2$$ | 32 | 1.429 | 54 | 90 | 154 | 50.4 | 430 | 24.4 | 200 |
| Propane | $$C_3H_8$$ | 44.1 | 2.019 | 85.56 | 231.15 | 369.86 | 42.49 | 220.36 | 15.91 | 75.98 |
| Sulphur Dioxide | $$SO_2$$ | 64.1 | 2.927 | 200.04 | 263.17 | 430.79 | 78.84 | 524.93 | 8.42 | 117.9 |
<iframe src="//www.pearltrees.com/stephenteacher/properties-gasses/id18642677?embed=2&d=201710061244" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/properties-gasses/id18642677" style=" color:#818181; font-size:13px;" target="_blank">Properties of Gasses</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
!! Important Notes:
Please check data in these tables against other sources. I have provided links to reputable information sources for this purpose.
Thermodynamic Properties at Normal Temperature and Pressure (293 K, 1 atm)
The properties are mostly temperature related
|scrollable|k
| !Gas | !Formula | ![[Molecular Weight]] | ![[Density]] | ![[R (Gas constant)|Gas Constant]] | !$$C_p$$ [[SPHc|Specific Heat Capacity: Constant Pressure]] | !$$C_v$$ [[SPHc|Specific Heat Capacity: Constant Volume]] | !$$C_p/C_v= \gamma$$ [[Adiabatic Index|Adiabatic Change]] |
|! | ! | ! | !$$(kg/m^3)$$ | !$$kJ \text{ or } kg.K$$ | !$$kJ/kg.K$$ | !$$kJ/kg.K$$ |! |
| Acetylene | $$\ce{C2H2}$$ | 26 | 1.0925 | 0.32 | 1.465 | 1.127 | 1.3 |
| Air | - | 29 | 1.2045 | 0.287 | 1.009 | 0.721 | 1.4 |
| Ammonia | $$\ce{Nh4}$$ | 17 | 0.7179 | 0.49 | 2.19 | 1.659 | 1.32 |
| Argon | $$\ce{Ar}$$ | 39.9 | 1.661 | 0.208 | 0.519 | 0.311 | 1.67 |
| n-Butane | $$\ce{C4H10}$$ | 58.1 | 2.4897 | 0.143 | 1.654 | 1.49 | 1.11 |
| Carbon Dioxide | $$\ce{CO2}$$ | 44 | 1.8417 | 0.189 | 0.858 | 0.66 | 1.3 |
| Carbon Monoxide | $$\ce{CO}$$ | 28 | 1.1648 | 0.297 | 1.017 | 0.726 | 1.4 |
| Chlorine | $$\ce{Cl2}$$ | 70.9 | 2.9944 | 0.117 | 0.481 | 0.362 | 1.33 |
| Ethane | $$\ce{C2H6}$$ | 30 | 1.2635 | 0.277 | 1.616 | 1.325 | 1.22 |
| Ethylene | $$\ce{C2H4 }$$| 28 | 1.1744 | 0.296 | 1.675 | 1.373 | 1.22 |
| Helium | $$\ce{He}$$ | 4 | 0.1663 | 2.078 | 5.234 | 3.153 | 1.66 |
| Hydrochloric Acid | $$\ce{HCl}$$ | 36.5 | 1.5273 | 0.228 | 0.8 | 0.567 | 1.41 |
| Hydrogen | $$\ce{H2}$$ | 2 | 0.0837 | 4.126 | 14.319 | 10.155 | 1.41 |
| Hydrogen Sulphide | $$\ce{H2S}$$ | 34.1 | 1.4334 | 0.243 | 1.017 | 0.782 | 1.3 |
| Methane | $$\ce{CH4}$$ | 16 | 0.6673 | 0.519 | 2.483 | 1.881 | 1.32 |
| Methyl Chloride | $$\ce{CH2Cl}$$ | 50.5 | 2.15 | 0.165 | 1.005 | 0.838 | 1.2 |
| Natural Gas | - | 19.5 | 0.8034 | 0.426 | 2.345 | 1.846 | 1.27 |
| Neon | $$\ce{Ne}$$ | 20.18 | 0.84 | | | | |
| Nitric Oxide | $$\ce{NO}$$ | 30 | 1.2941 | 0.277 | 0.967 | 0.691 | 1.4 |
| Nitrogen | $$\ce{N2}$$ | 28 | 1.1648 | 0.297 | 1.034 | 0.733 | 1.41 |
| Nitrous Oxide | $$\ce{N2O}$$ | 44 | 1.8429 | 0.189 | 0.925 | 0.706 | 1.31 |
| Oxygen | $$\ce{O2}$$ | 32 | 1.331 | 0.26 | 0.909 | 0.649 | 1.4 |
| Propane | $$\ce{C3H8}$$ | 44.1 | 1.8814 | 0.188 | 1.645 | 1.43 | 1.15 |
| Sulphur Dioxide | $$\ce{SO2}$$ | 64.1 | 2.727 | 0.129 | 0.645 | 0.512 | 1.26 |
<iframe src="//www.pearltrees.com/stephenteacher/properties-gasses/id18642677?embed=2&d=201710061244" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/properties-gasses/id18642677" style=" color:#818181; font-size:13px;" target="_blank">Properties of Gasses</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
Important Note
The properties below are indicative. I have obtained the properties from a number of sources including
Engineering Tables and Data, A.M. Howatson, et el (Now out of print), Engineering Formulas, Kurt Gieck, 7th Edition, and Perrys Chemical Engineers Handbook 7th Ed.
Many of the properties vary considerable at different temperatures and the pressure .
I note that the first link below "The Engineering Toolbox" has extensive tables of properties.
Properties are generally at (293 K, 1 atm).
Properties at different temperatures shown in brackets (deg. C)
TP = Triple Point
|scrollable|k
| !Liquid | ![[Density]] (**) | ![[Bulk Modulus]] | ![[Freezing]] | ![[Boiling]] | ![[Latent Heat of Boiling]] | ![[Thermal Conduct.]] | ![[Spec.Heat|Specific Heat Capacity]] (at_293K) | ![[Coef of Vol exp]] (**) | ![[Dynamic Viscosity]] |
| !''Unit'' | !$$\times10^3 \space kg/m^3$$ | !$$\times 10^9 \space N/m^2$$ | !$$K$$ | !$$K$$ | !$$KJ/kg$$ | !$$W/m K$$ | !$$kJ/kg K$$ | !$$\times 10^{-3}/K$$ | !$$\times 10^{-2} P \space (cP)$$ |
| !''Symbol'' | !$$\rho$$ | !$$K$$ | !$$t_f$$ | !$$t_b$$ | !$$h_{fg}$$ | !$$k(t)$$ | !$$c_p$$ | !$$\beta$$ | !$$\mu$$ |
| Acetone | 0,79 | 1,2 | 178 | 330 | 560 | 0,16(20) | 2,21 | 1,487 | 0,32 |
| Acetic Acid | 1,08 | - | 289,8 | 391 | 402 | - | 2,18 | 1,071 | 1,155 |
| Ethyl Alchohol ( $$\ce{C2H5OH}$$ ) (ethanol) | 0,79 | 1,06 | 153 | 351 | 850 | 0,17 | 2,500 | 1,12 | 1,095 |
| Benzene($$\ce{C6H6}$$) | 1,049 | 1,1 | 279 | 353 | 400 | 0,137 | 1,80 | 1,237 | 0,647 |
| Carbon Tetrochloride | 1,32/1,6 | 1,1 | 250 | 350 | 215 | 0,11(20) | 0,840 | 1,236 | 0,97 |
| Chloroform | 1,53 | - | 203 | 334 | 247 | - | 1,05 | 1,273 | 0,53 |
| Diesal Oil | 0,88 | - | 268 | 448 | - | 0,13 | - | - | - |
| Ether | 0,73 | - | 156,7 | 307.6 | 377 | 0,13 | 2,21 | 1,656 | 0,223 |
| Glycerol ($$\ce{C3H803}$$) (Glycerin) | 1,262 | 4,03/4,35 | 293 | 563 | 974 | 0,27 | 2,40 | 0,505 | 1495 |
| Hydrofluoric Acid (conc) | 0,99 | - | 180,5 | 292,5 | - | 2,33 | 2,09 | - | - |
| Linseeed Oil | 0,96 | - | 253 | 589 | - | 0,15 | 1,84 | - | 33,1 |
| Machine/Mineral Oil | 0,91 | - | 268 | 633-653 | - | 0,126 (100) | 1,68 | 0,7-0,9 | - |
| Methyl alcohol ( $$\ce{CH3OH}$$ ) | 0,8 | - | 175 | 339 | 1100 | - | 2,51 | 1,199 | 0,56 |
| Mercury | 13,5 | 25 | 234 | 630 | 292 | 8(20) | 0,139 | 0,18 | 1,55 |
| Nitric Acid | 1,51 | - | 232 | 359 | - | 0,26 | 1,72 | - | - |
| Petroleum | 0,8 | 1,07-1,49 | 203 | 423-573 | | 0,16 | 2,09 | 1,0 | - |
| Sea Water | 1,03 | 2,34 | 270,5 | 376 | | | 3,930 | | |
| Sulfuric Acid (conc) | 1,84 | - | 263 | 611 | - | 0,5 | 1,38 | 0,558 | - |
| Sulfuric Acid (50%) | 1.4 | - | - | - | - | - | - | - | - |
| Toluene | 0,88 | - | 178,5 | 383 | 351 | 0,14 | 1,72 | - | 0,55 |
| Water | 1,00 | 2,15 | 273 | 373 | 2260 | 0,61(20) | 4,180 | 0,21 | 1 |
$$**$$ Example actual water density = $$1000kg/m^3$$ , Actual water coefficient of cubical expansion = $$0,00021 /K$$
<iframe src="//www.pearltrees.com/stephenteacher/properties-liquids/id18628567?embed=2&d=20171005918" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/properties-liquids/id18628567" style=" color:#818181; font-size:13px;" target="_blank">Properties of Liquids</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
I have included the steel in this table of elements. The properties of all the elements, but especially steel, should be used only a rough estimates. Alloying and heat treatment can significantly affect the values. The properties are assumed at $$20 ^\circ C$$ unless stated otherwise.
|scrollable|k
| !Metal | ![[Specific Gravity]] | ![[Young's Modulus]] (E) | ![[Shear Modulus]] (G) | ![[Bulk Modulus]] | ![[Poisson's Ratio]] | ![[Thermal Conductivity]] $$0^\circ C$$ | ![[Linear Expansion Coefficient]] | ![[Melting Point]] | ![[Proof/Yield Stress]] | ![[Ultimate. Stress]] | ![[Electrical Resistivity]] $$20^\circ C$$ |
| !- | ! | !$$GPa$$ | !$$GPa$$ | !$$GPa$$ | ! | !$$W / ( m K )$$ | !$$\times 10^{-6}/ ^\circ C$$ | !$$K$$ | !$$\times 10^7Pa$$ | !$$\times 10^7Pa$$ | !$$\times 10^{-8}ohm.m$$ |
| [[Aluminium]] | 2,7 | 68,95 | 26 | 75 | 0,33 | 237 | 25 | 933 | 41699 | 41791 | 2655 |
| Antimony | 6,69 | 77,91 | | | | 18,5 | 9 | 903 | | | 41,8 |
| Beryllium | 1,85 | 289,6? | | | 0,027 | 218 | 12 | 1558 | | | 4,0 |
| Bismuth | 9,75 | 31,72 | | | 0,33 | 8,4 | 13 | 544 | | | 115 |
| Cadmium | 8,65 | 55,16 | | | | 92 | 30 | 594 | | | 7,4 |
| Chromium | 7,2 | 248,2 | | | | 91 | 6 | 2133 | | | 13 |
| Cobalt | 8,9 | 206,8 | | | | 69 | 12 | 1768 | | | 9 |
| Copper | 8,96 | 117,2 | 46 | 130 | 0,36 | 398 | 16,6 | 1357 | 4,7-32 | 20-35 | 1673 |
| Gold | 19,32 | 74,46 | 28 | 167 | 0,42 | 315 | 14,2 | 1336 | 0-21 | 45231 | 2,35 |
| Iridium | 22,42 | 517,1 | | | | 147 | 6 | 2723 | | | 5,3 |
| Iron | 7,87 | 196,5 | 76 | | 0,3 | 80,3 | 12 | 1809 | 16 | 35 | 9,7 |
| Lead | 11,35 | 13,79 | 6 | | 0,43 | 35,2 | 29 | 600,7 | | 1,5-1,8 | 20,6 |
| Magnesium | 1,74 | 44,13 | | | 0,35 | 156 | 25 | 923 | | | 4,45 |
| Manganese | 7,34 | 158,6 | | | | | 22 | 1517 | | | 185 |
| Mercury | 13546 | | | | | 8,39 | | 234,29 | | | 98,4 |
| Molybdenum | 10,22 | 275,8 | | | 0,32 | 138 | 5 | 2893 | | | 5,2 |
| Nickel | 8,9 | 213,7 | 79 | 176 | 0,31 | 90,5 | 13 | 1726 | 14-66 | 48-73 | 6,85 |
| Niobium | 8,57 | 103,4 | | | | 53 | 7 | 2740 | | | 13 |
| Osmium | 22,57 | 551,6 | | | | 61 | 5 | 3298 | | | 9 |
| Platinum | 21,45 | 146,9 | 61 | 240 | 0,39 | 73 | 9 | 2043 | 1,5-18 | 12,5 -20 | 10,5 |
| Plutonium | 19,84 | 96,53 | | | 0,18 | 8 | 54 | 913 | | | 141,4 |
| Potassium | 0,86 | | | | 0,39 | 99 | 83 | 336,5 | | | 7,01 |
| Rhodium | 12,41 | 289,6 | | | | 150 | 8 | 2238 | | | 4,6 |
| Selenium | 4,8 | 57,92 | | | | 0,5 | 37 | 490 | | | 12,0 |
| Silicon | 2,33 | 110,3 | | | | 83,5 | 3 | 1684 | | | 100000 |
| Silver | 10,50 | 72,39 | 28 | 100 | 0,37 | 427 | 19 | 1234 | 5,5-30 | 14-38 | 1,59 |
| Sodium | 0,97 | | | | | 134 | 70 | 370,98 | | | 4,2 |
| Steel (Mild) | 7,8 | 210 | 80 | | 0,3 | 50 | 12 | 1630-1750 | 20-40 | 30-50 | 10 |
| Tantalum | 16,6 | 186,2 | | | 0,35 | 57,5 | 6,5 | 3253 | | 34-93 | 12,4 |
| Thorium | 11,7 | 58,61 | | v | 0,27 | 41 | 12 | 2023 | | | 18 |
| Tin | 7,31 | 41,37 | 17 | 52 | 0,33 | 67 | 20 | 505 | 0,9-1,4 | 1,5-20 | 11,0 |
| Titanium | 4,54 | 110,3 | 41 | 110 | 0,3 | 22 | 8,5 | 1943 | 18295 | 25-70 | 43 |
| Tungsten | 19,3 | 344,7 | 140 | | 0,28 | 178 | 4,5 | 3673 | | 100-400 | 5,65 |
| Uranium | 18,8 | 165,5 | | | 0,21 | 25 | 13,4 | 1405 | | | 30 |
| Vanadium | 6,1 | 131 | | | | 60 | 8 | 2173 | | | 25 |
| Zinc | 7,0 | 82,74 | 36 | 100 | 0,35 | 121 | 35 | 692,7 | | 44136 | 5,92 |
<iframe src="//www.pearltrees.com/stephenteacher/properties-metals/id18708218?embed=2&d=201710131445" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/properties-metals/id18708218" style=" color:#818181; font-size:13px;" target="_blank">Properties of Metals</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
Important Note: The data below are rough average values based on a review of various reference sources. For important work please check against quality information sources.
|scrollable|k
| !Material | ![[Specific Gravity]] | ![[Young's Modulus]] | ![[Poissons Ratio]] | ![[Thermal Conductivity]] | ![[Melting Point]] | ![[Ultimate. Strength]] | ![[Specific Heat|Specific Heat Capacity]] |
| ! | ! | !$$\times10^{10} Pa$$ | ! | !$$W /m/K$$ | !$$K$$ | !$$\times10^6 Pa$$ | !$$KJ/Kg/K$$ |
| [[Alumina]] | 3,9 | 20-40 | 0,24 | 21 | 2323 | 140-200 | 1,05 |
| Bone | 1,8 | 2,8 | - | | | ~150 | 0,8 |
| Brass | 8,45 | 10,5 | 0,35 | 120 | 1200 | 330-550 | 0,37 |
| Brick | 1,4-2,2 | 42856 | 0,6 | 0,4-0,8 | | | 0,8 |
| Concrete | 2,4 | 1,0-1,7 | 0,1-0,2 | 1,0-1,5 | | | 1,1 |
| Constantan | 8,9 | 16,3 | 0,33 | 22 | 1593 | 400-570 | 0,41 |
| Diamond | 3,3 | 120 | | 900 | ~3820 | | 0,5 |
| Dry Ground | ~1,6 | | | | | | |
| Dural | 2,8 | 7 | 0,33 | 150 | 913 | 230-500 | 0,9 |
| Glass | 2,4-3,5 | 42952 | 0,2-0,27 | 0,4-1,1 | ~1373 | 30-90 | 0,5-0,8 |
| Granite | 2,7 | 42920 | | 42827 | | | 0,8 |
| Manganin | 8,5 | 12,4 | 0,33 | 22 | 1233 | 465 | 0,4 |
| Mica | 2,8 | | | ~0,5 | | | 0,84 |
| Nichrome(80/20) | 8,36 | 18,6 | 0,38 | 13 | | 170-900 | 0,43 |
| Nylon 6 | 1,14 | 0,1-0,25 | | 0,25-0,3 | 473-493 | 70-85 | 1,6 |
| Paper Dry | ~1,0 | | | 0,06 | | | |
| Perspex | 1,2 | 0,27-0,35 | | 0,2 | 353-388 | 50-75 | 1,45 |
| Phosphor Bronze | 8,92 | 10 | 0,38 | ~75 | 1323 | 330-750 | 0,38 |
| Polystyrene | 1,06 | 0,25-0,4 | | 0,1 | 353-378 | 35-60 | 1,3 |
| Polythene | 0,93 | 0,01-0,1 | | 0,25-0,5 | 338-403 | 14062 | 2,2 |
| PTFE | 2,2 | 0,04-0,06 | | 0,23-0,270 | ~600 | 17-28 | 1,05 |
| PVC (plasticized) | 1,7 | 0,03 | - | 0,16-0,19 | 343-353 | 0,15-35 | - |
| PVC (rigid) | 1,3 | 0,34 | 0,42 | 0,19 | 373-433 | 35-55 | 0,88 |
| Porcelain | 2,4 | | | 0,8-1,85 | 1823 | | 1,1 |
| Quartz (Fibre) | 2,65 | 7,3 | | 9 | 2293 | | 0,73 |
| Quartz (fused) | 2,2 | | | 1,3 | 2293 | | 0,73 |
| Steel | 7,8 | 21 | 0,3 | 50 | 1626-1733 | 480 | 0,45 |
| Rubber | 1,1 -1,2 | 0,001-0,1 | 0,46-0,49 | ~0,15 | 398 | 14-40 | 1,6 |
| Sandstone | 2,4 | | | 1,1-2,3 | | 1 | 0,9 |
| Timber | 0,4 -0,8 | 0,8-1,3 | | ~0,15 | | 20-110 | 1,6 |
<iframe src="//www.pearltrees.com/stephenteacher/properties-solids/id18628353?embed=2&d=20171005857" width="100%" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/properties-solids/id18628353" style=" color:#818181; font-size:13px;" target="_blank">Properties of Solids</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
Stuff Blah Blah
<iframe src="http://stephenteacher.droppages.com/" style="width: 90%; height: 300px"
scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0">
</iframe>
```
<iframe src="http://stephenteacher.droppages.com/" style="width: 90%; height: 300px"
scrolling="no" marginwidth="0" marginheight="0" frameborder="0" vspace="0" hspace="0">
</iframe>
```
More stuff blah
{{||$:/template : greek}}
!!Pulling Horizontal Bar
|!Horizontal bar $$20mm\varnothing \times 300$$ Long, 1-handed|<|<|<|<|
|!Sex|!Mean ($$Nm$$)|!S.D ($$Nm$$)|!Range ($$Nm$$)|
|Male|477,3|213,75|408,48 - 647,03|
|Female|294,87|96,29|189,75 - 460,09|
!!Pushing Horizontal Bar
|!Horizontal bar $$20mm \varnothing \times 300mm$$ Long, 1-handed|<|<|<|<|
|!Sex|!Mean ($$Nm$$)|!S.D ($$Nm$$)|!Range ($$Nm$$)|
|Male|457,22|99,37|290,65 - 543,61|
|Female|314,47|136,42|215,91 - 500,26|
The primary objective of PUWER is to ensure the provision of safe work equipment and its safe use. This has several components which are inter-linked and complementary. Work equipment should not give rise to risks to health and safety, irrespective of its age place or origin.
The above regulations, (PUWER 98), came into force on December 5th 1998 and affect all work equipment. They update the previous 1992 regulations and this time have an accompanying set of regulations in the form of the LOLER statutes.
The main requirement of PUWER is to plan the intended use of all work equipment. This will take the form of a basic risk assessment identifying what the equipment is to be used for, who will use it, how it will be used and the hazards that may arise from it's use both to the operator and others.
<iframe width="100%" height="400" src="http://steacher.droppages.com/Pythagorus.html" frameborder="0" allowfullscreen></iframe>
Which would you rather have in your bank account?
* £1
* £1k
Why?
If it makes a difference to your bank balance it makes a difference to the calculation.
[[Next|Q2 L1 Intro]]
Write the following in scientific notation.
$$1\times 10^?$$
*100
*1000
*10000
*100000
*1000000
[[Next|Q2 L2 Intro]]
Finally...
Write out in full.
*200GN
*407.49MN
*0.004mm
<br>
Choose an appropriate prefix.
*876447N
*11122233344N
*8743.67N
|[[Previous|Q9 L1 Intro]] | [[Next|Induction Intro lvl 2]]|
Write the following as S.I. Units.
E.g. 7k = 7000
*3kN
*5kN
*1MN
*50kN
*10MN
|[[Previous|Q1 L1 Intro]] | [[Next|Q3 L1 Intro]]|
Write the following in scientific notation.
$$10\times 10^?$$
*100
*1000
*10000
*100000
*1000000
|[[Previous|Q1 L2 Intro]]|[[Next|Q3 L2 Intro]]|
Write the following as S.I. Units.
*1mm
*10mm
*100mm
*1cm
*10cm
*100cm
|[[Previous|Q2 L1 Intro]] | [[Next|Q4 L1 Intro]]|
Write the following in scientific notation.
$$1\times 10^?$$
*100
*10
*1
*0.1
*0.01
|[[Previous|Q2 L2 Intro]]|[[Next|Q4 L2 Intro]]|
Write the following as S.I. Units.
*4MN
*40MN
*400MN
*4000MN
*4GN
|[[Previous|Q3 L1 Intro]] | [[Next|Q5 L1 Intro]]|
Write the following in scientific notation.
$$1\times 10^?$$
*0.01
*0.001
*0.0001
*0.00001
*0.000001
|[[Previous|Q3 L2 Intro]]|[[Next|Q5 L2 Intro]]|
Write the following as S.I. Units.
* 1kN
*1.1kN
*1.11kN
*1.25mm
*1.25Km
|[[Previous|Q4 L1 Intro]] | [[Next|Q6 L1 Intro]]|
Write the following in scientific notation.
$$?\times 10^3$$
*1000000
*100000
*10000
*1000
*100
|[[Previous|Q4 L2 Intro]]|[[Next|Q6 L2 Intro]]|
Write the following as S.I. Units.
*10kg
*10.145km
*0.004mm
*0.357km
*50.356GN
|[[Previous|Q5 L1 Intro]] | [[Next|Q7 L1 Intro]]|
Write the following in scientific notation.
$$?\times 10^3$$
*3000
*5000
*1000000
*50000
*10000000
|[[Previous|Q5 L2 Intro]]|[[Next|Q7 L2 Intro]]|
Choose an appropriate prefix and rewrite the following forces.
E.g. 1944364.68N becomes 1.94MN
*0.001
*0.011
*0.111
*1.111
*1111.1111
|[[Previous|Q6 L1 Intro]] | [[Next|Q8 L1 Intro]]|
Write the following [[prefixes|Prefixes]] in [[standard notation|Standard Notation]] and then [[scientific notation|Scientific Notation]].
*3kN
*5kN
*1MN
*50kN
*10MN
|[[Previous|Q6 L2 Intro]] | [[Next|Q8 L2 Intro]]|
Choose an appropriate prefix and rewrite the following forces.
E.g. 1944364.68N becomes 1.94MN
*0.0056
*34556754
*1234598646
*4567
*45.987
|[[Previous|Q7 L1 Intro]] | [[Next|Q9 L1 Intro]]|
Write the following [[prefixes|Prefixes]] in [[standard notation|Standard Notation]] and then [[scientific notation|Scientific Notation]].
Choose a suitable $$\times 10^?$$.
*0.4mm
*638693kJ
*911.65387MN
*50367388m
*98765GPa
|[[Previous|Q7 L2 Intro]] |
Choose an appropriate prefix and rewrite the following forces.
E.g. 1944364.68N becomes 1.94MN
*200000000000
*500000000
*700000
*0.345
*08654.78
|[[Previous|Q8 L1 Intro]] | [[Next|Q10 L1 Intro]]|
<<list-links "[tag[TQM]]">>
|!Traditional|!Total Quality|
| ''Productivity Vs Quality'' |<|
|The traditional view is that productivity and quality are always in conflict. You cannot have both.|Lasting productivity gains are made only as a result of quality improvements.|
| ''How quality is defined'' |<|
|Solely as meting customer specifications.|Satisfying customer needs and exceeding customer expectations|
| ''In How quality is measured'' |<|
|Quality is measured by establishing an acceptable level of External non conformance and measuring against that benchmark.|Quality is measured by establishing high-performance benchmarks for customer satisfaction and then continually improving performance.|
| ''How quality is achieved'' |<|
|Quality is inspected into the product.|Quality is determined by product and process design and achieved by effective control techniques.|
| ''Attitude toward defects'' |<|
|Defects are an expected part of producing a product. Measuring defects per hundred is an acceptable standard.|Defects are to be prevented using effective control systems and should be measured in defects per million (Six Sigma)|
| ''Quality as a function'' |<|
|Quality is a separate function.|The total quality view is hat quality should be fully integrated throughout the organisation--it should be everybody's responsibility|
| ''Responsibility for quality'' |<|
|Employees are blamed for poor quality.|At least 85% of quality problems are management's fault.|
| ''Supplier relationships'' |<|
|Relationships are short term and cost driven|Relationships are long term and quality oriented.|
From ''Quality Management for Organisational Excellence, Introduction to Quality Control'', Seventh Edition by David L. Goetsch and Stanley Davis.
\define Get_Answer_Text(question)
<$view tiddler="$:/state/answers/$question$" />
\end
\define Edit_Answer_Text(question)
<$edit-text tag="input" tiddler="$:/state/answers/$question$" />
\end
\define
Find_Answer()
<$macrocall $name="Get_Answer_Text" question=<<currentTiddler>> />
\end
How many fingers do you have?
<$macrocall $name="Edit_Answer_Text" question=<<currentTiddler>> />
Hmmm.. ''{{!!sentence}}''
<$reveal type="match" state="$:/state/answers/Question1" text={{!!correctanswer}}>
That is correct!
</$reveal>
<$reveal type="nomatch" state="$:/state/answers/Question1" text={{!!correctanswer}}>
That's good but its not right.
</$reveal>
"""
<<list-links "[tag[Questions]]">>
<<list-links "[tag[Quick Reference]]">>
The radius of the bend applied to a beam under a [[load|Force]].
{{||$:/template : variable}}
Rate of change is a phrase used to describe a value which tells you how fast another value changes.
For example, [[Acceleration|Acceleration]] tells you how fast [[velocity|Velocity]] changes.
Acceleration is the rate of change of velocity.
The multiplier which defines the rate of [[exponential growth or decay|Exponential Growth & Decay]].
{{||$:/template : variable}}
Reactance has two flavours, [[capacitive reactance|Capacitive Reactance]] ($$X_C$$) and [[inductive reactance|Inductive Reactance]] ($$X_L$$)
{{||$:/template : variable}}
Things which which react with each other to produce heat, for example [[fuel|Fuel]] and [[oxygen|Oxygen]]
The total force after two or more forces have been added together.
This can be done either [[graphically|Graphically]] or [[analytically|Analytically]].
A member which, in theory, carries no load in the frame.
Regulations are law, approved by Parliament. These are usually made under the Health and Safety at Work Act, following proposals from HSC. This applies to regulations based on EC Directives as well as 'home-grown' ones
<<list-links "[tag[Regulations]]">>
Remember:
$$h=u+pv$$ and $$H \approx U=mc \Delta T$$.
For low pressures and temperatures:
{{||$:/template : equation}}
<<<
Relative permeability is the ratio of the permeability of a specific medium to the permeability of free space.
<<richlink "https://en.wikipedia.org/wiki/Permeability_(electromagnetism)" >>
<<<
{{||$:/template : variable}}
Some definition
{{||$:/template : equation}}
{{||$:/template : variable}}
The equation for temperature coefficient is $$\displaystyle \alpha = \frac{\Delta R}{R_0 \Delta T}$$ where $$R_0$$ is the initial resistance but is usually written as:
{{||$:/template : equation}}
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : variable}}
To resolve a [[vector|Vectors]] is to split a single vector into it's equivalent [[vertical|Vertical Component]] and [[horizontal|Horizontal Component]] components.
This can be done in two ways;
1. [[Graphically]]
[[Would you like to know more?|Graphical Resolution of Forces]]
2. [[Analytically]]
[[Would you like to know more?|Analytical Resolution of Forces]].
The resultant [[vector|Vectors]] e.g. a [[force|Force]] or a [[velocity|Velocity]], is the vector found after combining two or more vectors together.<br>
This can be done in two ways;
1. [[Graphically]]
[[Would you like to know more?|Graphical Resultant of Forces]]
2. [[Analytically]]
[[Would you like to know more?|Analytical Resultant of Forces]]
```
<<rpn 50 2.5 * 2 p>>
```
<<rpn 50 2.5 * 2 p>>
<$tidgraph start="Reverse Polish" />
{{||$:/template : greek}}
```
<<richlink "...">>
```
*audio
*disqus
*docs
*github
*iframe
*img
*jsfiddle
*soundcloud
*tweet
*txt
*video
*wikipedia
*youtube
<<list-links "[tag[RM]]">>
From http://www.prep.mcneese.edu/engr/engr316/rockwell/rockwell.htm via https://web.archive.org
Hardness of metals is usually determined by measuring the resistance to penetration of a ball, cone, or pyramid.
The Rockwell method (ASTM 18-84 Standard Test Methods for Rockwell Hardness and Rockwell Superficial Hardness of Metallic Materials) employs either a ball or a diamond cone in a precision-testing instrument that is designed to measure depth of penetration accurately. Two superimposed impressions are made, one with a load of 10 kg and the second with a load of 100 kg. The depth to which the major load drives the ball or cone below that depth to which the minor load has previously driven it is taken as a measure of the hardness. The size of the ball generally used is 1/16 inch in diameter, but for hardened steels greater accuracy is obtained by use of a diamond cone (120 degrees with slightly rounded tip) applied under a major load of 150 kg. The method employing the ball is designated as the Rockwell B test, and that using the cone the Rockwell C test. The Rockwell C test can be utilized to measure the hardness of thin pieces since the depth of penetration of the cone is about 0.005 inches.
Concerning hardness conversions, Rockwell C values using the diamond cone are about one-tenth of the Brinell hardness for metals within the range of 300 to 600 Brinell.
To find the penetration (t) use the following:
Rockwell B:
RHB = 130 - 500t
Rockwell C:
RHC = 100 - 500t
<<<
Peak voltage is a voltage waveform which is measured from the horizontal axis (at the 0 height reference mark) to the top of the waveform, called the crest of the waveform.
[[See here|http://www.learningaboutelectronics.com/Articles/What-is-peak-voltage.php]]
<<<
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : variable}}
Kinetic energy is the energy an object has while it is moving and something which moves faster has more kinetic energy.
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Where does the K.E.equation come from?]]<br>
{{||$:/template : equation}}
{{||$:/template : variable}}
The following information was taken from http://roymech.co.uk. All tiddlers from the site are tagged ''[[RM]]''
<<list-links "[tag[RoyMech]]">>
<$tidgraph start="RoyMech Materials Data" />
!! Simple calculations
This is a simple and lightweight solution for basic math operations in TiddlyWiki. It is inspired by formerly popular calculators using Reverse Polish Notation. See [[Wikipedia|https://en.wikipedia.org/wiki/Reverse_Polish_notation]] for more info.
`<<rpn 50 2.5 * 2 p>>` output: <<rpn 50 2.5 * 2 p>>
* takes two operands as input – this may be macros or transclusions
* basic operations: +, -, /, *
* limit digits after comma (decimals), force precision display (p)
* use pi to get π (Math.PI)
* string concatenation (&)
!!! Installation
Drag this tiddler to your wiki: $:/plugins/telmiger/lib/rpn.js – then save and reload. Use at your own risk.
!!! Usage
The following operations can be used on two operands.
|Operation |Description |h
|+ |Addition |
|- |Subtraction |
|* |Multiplication |
|/ |Division |
|& |Concatenation of two strings^^1^^ |
<small>1 – The list of operators found at Stephen Kimmel’s Mathcell project (see below) inspired me to implement this easter egg – it has nothing to do with math.</small>
|Parameter |Description |h
|a |first operand |
|b |second operand |
|operation |see above |
|decimals |digits after comma (number) |
|precision |"p" to show all digits after comma, defaults to "" |
!!! Examples
`<<rpn pi 2 * 3>>` results in <<rpn pi 2 * 3>>
`<<rpn Pi " was the name." &>>`
<<<
<<rpn Pi " was the name." &>>
<<<
Calculate the area of a circle with radius 2:
```
<$macrocall $name="rpn" a=<<rpn 2 2 *>> b=pi operation="*" decimals="4"/>
```
<<<
<$macrocall $name="rpn" a=<<rpn 2 2 *>> b=pi operation="*" decimals="4"/>
<<<
For more examples see [[test rpn]].
!!! Known limitations
* limiting //decimals// does not produce trailing zeros
* using a comma `,` to separate decimals does not work – use `.` instead
!!! Alternatives
* http://mathcell.tiddlyspot.com/ – uses the same operators and tries to replace spreadsheet applications
* http://tobibeer.github.io/tb5/#calc – does calculations based on tiddler fields
* eval, calc and ''math.js'' – a heavy math library
** http://mklauber.github.io/tiddly-mathjs/
** http://tobibeer.github.io/tw5-plugins/#math.js
!READ THE FULL QUESTION
Any other words beginning with F which you place in the above statement is entirely your responsibility.
The merit section starts after the pass section so just keep pressing right!
<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vSYy4EY8XEAFFHSeHniQ1Bj7-zt_5h99SGJ7C4bugd2JFnzOMwuJH2R4bSV6dgwHE1cpddDZc96GHYP/embed?start=false&loop=false&delayms=10000" frameborder="0" width="100%" height="749" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
{{Common S.I. Units}}
<center>
|!Quantity|!Units|!Name|!S.I.Symbol|
|Specific Volume|$$m{^3}/kg$$||$$v$$|
|Volume Flow Rate |$$m{^3}/s$$|||
|Altitude|$$m$$||$$z$$|
|Specific Heat Capacity|$$Nm/kgK$$|$$J/kgK$$|$$c$$|
|Enthalpy|$$Nm$$|$$J \text{(Joule)}$$|$$H$$|
|Internal Energy|$$Nm$$|$$J\text{(Joule)}$$|$$U$$|
|Specific Enthalpy|$$Nm/kg$$|$$J/kg$$|$$h$$|
|SpecificInt Energy |$$Nm/kg$$| $$J/kg$$|$$u$$|
|Mass Flow Rate|$$kg/s$$|||
|Polytropic Index|||$$n$$|
|Adiabatic Index |||$$\gamma$$|
|Heat Transfer|$$Nm$$|$$J\text{(Joule)}$$|$$Q$$|
|Work|$$Nm$$|$$J\text{(Joule)}$$|$$W$$|
|Heat TransferRate|$$Nm/s$$|$$W\text {(Watt)}$$|$$\phi$$|
|Work Rate(power)|$$Nm/s$$|$$W\text {(Watt)}$$|P|
|Char.Gas Const|$$Nm/kgK$$|$$J/kgK$$|$$R$$|
|Universal Gas Constant|$$J/kmolK$$||$$R_o$$|
|Entropy|$$J/K$$||$$S$$|
|Specific Entropy|$$J/kgK$$||$$s$$|
|Absolute Temperature|$$K$$||$$T$$|
|Celsius Temperature|$$^\circ C$$||$$\theta$$|
|Dynamic Viscosity|$$Ns/m^2$$|$$Pa\space s$$|$$\eta$$ or $$\mu$$|
|Kinematic Viscosity|$$m^2/s$$||$$\upsilon$$|
</center>
When designing an engineered component it must stay within the elastic limit.<br>
To ensure that the part/ component/ bridge... remains safe a //safety factor// is used, also known as //Factor of Safety// or //FOS//.
The [[tensile strength|Ultimate Tensile Strength]] is used as this is an easy value to determine. A factor of safety is then used to limit the stress to a safe working level.<br>
$$\displaystyle \text{Safe working stress}=\frac{\text{tensile strength}}{\text{factor of safety}}$$<br>
The value of the factor of safety depends upon several influences, which include;
*Possibility of overload
*Type of load - steady, sudden, reversible, intermittent
*Possibility of defects in the material
*Possibility of defects during manufacture
*Long term effects due to wear or corrosion
*Consequences of failure, both economic and human.
Safety factors will vary from around 3 for static loads, 15 for impact loads or 20 plus for repeated loading unless of course you are designing aircraft.
|!P ($$Pa$$)|!...|!$$h_f$$|!$$h_{fg}$$|!$$h_g$$|...|
|80||1317|1441|2758|...|
|85||1341|1410|2751|...|
|90||1364|1379|2743|...|
|95||1386|1348|2734|...|
|100||1408|1317|2725|...|
|!P ($$Pa$$)|!...|!$$h_f$$|!$$h_{fg}$$|!$$h_g$$|...|
|0.065||158|2412|2570|...|
|0.070||163|2409|2572|...|
|0.075||169|2405|2574|...|
|0.080||174|2402|2576|...|
|0.085||179|2400|2579|...|
|!P ($$Pa$$)|!...|!$$h_f$$|!$$h_{fg}$$|!$$h_g$$|...|
|8||721|2048|2769|...|
|9||743|2031|2774|...|
|10||763|2015|2778|...|
|11||781|2000|2781|...|
|12||798|1986|2784|...|
|scrollable|k
||<|!At $$80 \text{bar}$$|<|<|<||!At $$100 \text{bar}$$|<|<|<|
|!t ($$^\circ C)$$||!V $$(m^3)$$|!u $$kJ/kg$$|!h $$(kJ/kg)$$|!s $$(kJ)$$||!V $$(m^3)$$|!u $$kJ/kg$$|!h $$(kJ/kg)$$|!s $$(kJ)$$|
|320||0.0268|2663|2877|5.949||0.0193|2588|2781|5.710|
|360||0.0309|2773|3020|6.182||0.0233|2729|2962|6.006|
|400||0.0343|2864|3138|6.363||0.0264|2832|3096|6.212|
|450||0.0382|2966|3272|6.555||0.0297|2944|3241|6.419|
|500||0.0417|3065|3398|6.724||0.0328|3046|3374|6.597|
|550||0.0451|3160|3521|6.878||0.0356|3145|3501|6.756|
|600||0.0485|3254|3642|7.020||0.0384|3241|3625|6.903|
|650||0.0517|3349|3762|7.154||0.0410|3338|3748|7.040|
|700||0.0548|3444|3882|7.281||0.0436|3434|3870|7.169|
|750||0.0579|3540|4003|7.402||0.0461|3532|3993|7.291|
|scrollable|k
|!SUPERHEAT TABLE FOR USE WITH STEAM THROTTLES ($$h \text{ in } kJ/kg$$)|<|<|<|<|<|<|
|!Temp $$(^\circ C)$$|!Pressure $$(\text {bar})$$|<|<|<|<|<|
||0.9| 0.95|1.0|1.1|1.2|1.4|
|100|2677.5|2676.9|2676.2|-|-|-|
|110|2697.6|2697|2696.5|2695.3|2694.2|2693|
|120|2717.6|2717.1|2716.6|2715.6|2714.5|2713.5|
|130|2737.5|2737.1|2736.6|2735.7|2734.8|2733.8|
|140|2757.4|2756.9|2756.5|2755.7|2754.9|2754|
|150|2777.1|2776.8|2776.4|2775.6|2774.9|2774.1|
|!SUPERHEAT TABLE FOR USE WITH STEAM THROTTLES ($$h \text{ in } kJ/kg$$)|<|<|<|<|<|<|
|!Temp $$(^\circ C)$$|!Pressure $$(\text {bar})$$|<|<|<|<|<|
||0.9| 0.95|1.0|1.1|1.2|1.4|
|100|2677.5|2676.9|2676.2|-|-|-|
|110|2697.6|2697|2696.5|2695.3|2694.2|2693|
|120|2717.6|2717.1|2716.6|2715.6|2714.5|2713.5|
|130|2737.5|2737.1|2736.6|2735.7|2734.8|2733.8|
|140|2757.4|2756.9|2756.5|2755.7|2754.9|2754|
|150|2777.1|2776.8|2776.4|2775.6|2774.9|2774.1|
Steam that is at the same [[temperature|Temperature]] as the boiling ([[saturated|Saturated Water]]) water.
Only once all the [[water vapour|Water Vapour]] has turned to [[steam|Steam]] will the [[temperature|Temperature]] increase. This is the same as when ice melts, the temperature will remain at zero until all the ice has turned to water. This is call [[latent heat|Latent Heat]].
When we are dealing with steam we have [[internal energy|Internal Energy]] plus [[flow energy|Flow Energy]] which makes it [[enthalpy|Enthalpy]] so instead of latent energy we have [[latent enthalpy|Latent Enthalpy]].
If heat is still added once all the water vapour has turned to steam it is called [[superheated steam|Superheated Steam]].
Water which is [[boiling|Boiling]] is at it's [[saturation temperature|Saturation Temperature]].
The temperature at which water [[boils|Boiling]]. This changes depending on the [[pressure|Pressure]], the higher the pressure, the higher the ~~boiling~~ saturation temperature.
A scalar value, unlike a [[vector|Vectors]], has [[magnitude|Magnitude]] but no direction.<br>
[[Would you like to know more?|Examples of Scalar Quantities]]
@@.floatleft
[img[http://steacher.droppages.com/diagrams/BOMB.svg]]
@@
#A sample of solid or liquid fuel (about 1 gram) is accurately weighed and placed in a crucible. This is fitted inside the bomb with an ignition wire passing though the fuel.
#The lid is screwed on and the bomb is pressurised with oxygen.
#The bomb is placed inside the outer container which contains exactly $$1 kg$$ of water.
#The outer container is placed inside an insulated box to prevent heat loss.
# A very accurate thermometer is placed in the water. The temperature is recorded against time.
# When the temperature is stable, the bomb is fired by passing an electric current through the wire. All the time the water is stirred by an electric stirrer.
#The fuel in the crucible is completely burned and the energy released causes a rapid rise in the temperature of the water. This is recorded until it starts to cool again.@@.floatright
[img[http://steacher.droppages.com/diagrams/Bomb Graph.svg]]<br>@@
#The bomb may be depressurised and the contents examined. A small amount of condensate will be found in it from the water formed during combustion. This may be weighed and used to find the [[L.C.V.|Lower Calorific Value (L.C.V.)]]
#The graph produced is similar to that shown. Because of slow cooling and possibly initial warming, straight lines are drawn as shown to find the true temperature change $$\Delta T$$
#Because the metal of the bomb and container is warmed as well as the water, the manufacturer will certify that the bomb has an equivalent mass of water. The [[effective mass|Effective Mass]] of water heated up is the actual mass of water plus the [[equivalent mass|Equivalent Mass]].
#The [[HCV|Higher Calorific Value (H.C.V.)]] can now be found.
{{Higher Calorific Value (H.C.V.) (Bomb)}}
Usefull for very large or very small numbers.
E.g. $$1000000000$$ becomes $$1\times 10^9$$
[[Would you like to know more?|https://www.mathsisfun.com/numbers/scientific-notation.html]]
For something rotating at constant speed:
<div class="katex-display">
$$\displaystyle \omega=\frac{\theta}{t}$$
</div>
<h3>Step 1</h3>
This can be rearranged to $$\theta=\omega t$$<br>
<h3>Step 2</h3>
If you wanted the find the average angular velocity you could add your start and end velocities and then, because we have two values, divide by two.
<div class="katex-display">
$$\displaystyle Average\space \omega=\frac{\omega_2+\omega_1}{2}$$
</div>
so we could place that equation into Step 1:
<div class="katex-display">
$$\displaystyle \theta=\left( \frac{\omega_2+\omega_1}{2}\right)t$$
</div>
which is usually written as:
{{||$:/template : equation}}
Also known as ''moment of inertia'', ''area moment of inertia'', or ''second area moment''.
It is closely related to, but not to be confused with, the [[mass moment of inertia|Mass Moment of Inertia]] which is used for spinning or twisting things.
As a concept it is a value which takes into account the shape of a beam and how easily it can bend, for example a rule can be bent easily when it's flat on the table but will not bend with the same force if the rule is placed on it's edge.
For various cross section of beams [[standard formulas|Beam Formulas]] are used to find the value of the second moment of area.
For more information on $$I$$ and how the equation below is derived and an example of how the standard beam formulas fall out of it....[[Would you like to know more?|Where the 'I' Equation Comes From]]
It can be found for either the $$x$$ or $$y$$ axis. $$x$$ axis version shown below.
{{||$:/template : equation}}
{{||$:/template : variable}}
This starts from the simple equation for [[speed|Speed]] most people use that is found in km/hr
<div class="katex-display">
$$\displaystyle v=\frac{s}{t}$$
</div>
<h3>Step 1</h3>
This can be rearranged to $$s=vt$$<br>
<h3>Step 2</h3>
If you wanted the find the average velocity you could add your start and end velocities and then, because we have two values, divide by two.
<div class="katex-display">
$$\displaystyle Average\space v=\frac{v+u}{2}$$
</div>
so we could place that equation into Step 1:
<div class="katex-display">
$$\displaystyle s=\left( \frac{v+u}{2}\right)t$$
</div>
which is usually written as:
{{||$:/template : equation}}
\define maketagfilter() tag[$(currentTiddler)$]
<style>
.columns8 { display:block; -moz-column-count:8; -moz-column-gap:1em; -webkit-column-count:8; -webkit-column-gap:1em; font-size:60%; line-height:1em; }
.columns4 { display:block; -moz-column-count:4; -moz-column-gap:1em; -webkit-column-count:4; -webkit-column-gap:1em; font-size:80%; line-height:1.4em; }
</style>
__''SELECT TAGS:''__<br>
@@.columns8
<$list filter="[all[tiddlers+shadows]tags[]sort[]]">
<$checkbox tiddler="selectedTags" index=<<currentTiddler>> checked=<<maketagfilter>>
checkactions="""<$action-setfield $tiddler="selectedTags" $index=<<currentTiddler>> $value=<<maketagfilter>> />"""
uncheckactions="""<$action-setfield $tiddler="selectedTags" $index=<<currentTiddler>> />""">
<$text text=<<currentTiddler>>/>
</$checkbox><br>
</$list>
@@
<$wikify name="filter" text="""[all[tiddlers+shadows]<$list filter="[title[selectedTags]indexes[]]">{{{ [[selectedTags]getindex<currentTiddler>] }}}</$list>]""">
__''RESULTS FOR FILTER: <$text text=<<filter>>/>''__<br>
<$reveal text=<<filter>> type="nomatch" default="[all[tiddlers+shadows]]">
@@.columns4 <$list filter=<<filter>>><$link/><br></$list>@@
</$reveal>
</$wikify>
The amount of [[energy|Energy]] in [[saturated water|Saturated Water]].
As water expands by a small amount sensible energy is the same as [[sensible enthalpy|Sensible Enthalpy]]
{{||$:/template : variable}}
The amount of [[enthalpy|Enthalpy]] in [[saturated water|Saturated Water]].
As water expands by a small amount sensible enthalpy is the same as [[sensible energy|Sensible Energy]].
{{||$:/template : variable}}
The [[volume|Volume]] of water at [[saturation temperature|Saturation Temperature]]
As water expands by a small amount this will not be significantly different from the volume at cooler temperatures.
{{||$:/template : variable}}
A set of numbers written down in an order.
e.g.
$$1, 2, 3, 4, 5, 6, 7, 8...$$
$$2, 4, 6, 8, 10, 12, 14...$$
$$4, 2, 4, 2, 4, 2, 4, 2...$$
The $$...$$ indicates the sequence goes on for ever.
$$2, 4, 6, 8, 10, 12, 14$$ would show the whole sequence (no dots).
<<list-links "[tag[Sequences and Series]]">>
A [[sequence|Sequence]] added up.
e.g.
$$1+2+3+4+5+6+7+8...$$
$$2+4+6+8+10+12+14...$$
$$4+2+4+2+4+2+4+2...$$
The $$...$$ indicates the series goes on for ever.
$$4+2+4+2+4+2+4+2$$ would show the whole series (no dots).
Distance to $$R_a$$ = {{!!sra}}
Distance to $$R_b$$ = {{!!srb}}
<$tidgraph start="SF Definitions" />
[[SHC pressure|Specific Heat Capacity: Constant Pressure]] ($$c_p$$),
[[SHC volume|Specific Heat Capacity: Constant Volume]] and the [[gas constant|Gas Constant]] ($$R$$) are all related by this:
{{||$:/template : equation}}
<$tidgraph start="Shear Force and Bending Moment Diagrams" />
<iframe src="//www.pearltrees.com/t/fe-btec-engineering-new-spec/shear-bending-moment-diagrams/id27966421?embed=2&d=20191120959" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/t/fe-btec-engineering-new-spec/shear-bending-moment-diagrams/id27966421" style=" color:#818181; font-size:13px;" target="_blank">Shear Force and Bending Moment Diagrams</a>, by <a href="http://www.pearltrees.com/t/fe-btec-engineering-new-spec/id18194064" style=" color:#818181; font-size:13px;" target="_blank">team FE BTEC Engineering (New Spec)</a></span>
<center>
[img[http://steacher.droppages.com/diagrams/Shear_strain.svg]]</center><br>
The [[force|Force]] pushes the top edge and [[deflection|Deflection]] occurs. The deflection is the angle $$\gamma$$ measured in radians, but as this is usually very small the angle (which could be found using $$\tan \theta=\frac{\text{Change}}{\text{Original}}$$) is equal to the change in length, as labelled on the diagram above. This change in length is the deflection.<br>
Because shear strain is a distance measurement divided by a distance measurement (most commonly $$\text{meters/meters}$$) the units cancel out and so shear strain is a dimensionless quantity.
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/Shear_stress.svg]]</center><br>
If we imagine the block shown above is stuck down to a table then the force applied to it's top edge would create shear stress.
Note that the area is [[parallel|Parallel]] to the force.
{{||$:/template : equation}}
{{||$:/template : variable}}
<<<
Determine the required parameters for a single [[shear|Shear Stress]] [[lap joint|Lap Joint]] and a double shear [[butt joint|Butt Joint]] for given service conditions.
<<<
<<tabs tabsList:"[[Unit 11 P3 Example Question]] [[Unit 11 P3 Solution (a)]] [[Unit 11 P3 Solution (b)]] [[Unit 11 P3 Solution (b): Working Stress]] [[Unit 11 P3 Solution (b): Area from Stress]] [[Unit 11 P3 Solution (b): Area and Diameter]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 P3 Example Question]]
{{$:/plugins/JR/showpreviewWindow}}
```
<$list filter="[prefix[$:/state/folded/]text[hide]] +[removeprefix[$:/state/folded/]]">
<$link><$view field='title'/></$link>
</$list>
```
{{||$:/template : greek}}
<$button>Clear Form
<$action-setfield $tiddler='$:/Frame Data' f_1='' f_2='' f_3='' a_1='' a_2='' a_3='' u_1='' u_2=''/>
</$button>
Fill in the details for each known force.
Take the angle anticlockwise from the horizontal and work your way around.. Forces in ''compression'' around the joint need to be put in as a ''negative'' number.
If there is no second or third force and or you only need to find one unknown force fill in a zero in those boxes.
<$tiddler tiddler="$:/Frame Data">
<$edit-text class='tc-edit-texteditor' field='f_1' placeholder="Magnitude of first force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='a_1' placeholder="Angle of first force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='f_2' placeholder="Magnitude of second force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='a_2' placeholder="Angle of second force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='f_3' placeholder="Magnitude of third force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='a_3' placeholder="Angle of third force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='u_1' placeholder="Angle of first UNKNOWN force" /><br><br>
<$edit-text class='tc-edit-texteditor' field='u_2' placeholder="Angle of second UNKNOWN force" /><br><br>
First Force is {{$:/Frame Data!!ans1}}
Second Force is {{$:/Frame Data!!ans2}}
,,Uses [[Evans Formula plugin|https://evanbalster.com/tiddlywiki/formulas.html]] and was inspired by a [[BASIC program|BASIC Program for Calculating Force on Joints in Simple Frames]] from Advanced Design and Technology by Eddie Norman, Syd Urry, Joyce Riley and Mike Whittaker.,,
<center>
$$b=2j-3$$
</center>
This equation shows the relationship between the number of [[beams|Beams]] (b) and the number of [[joints|Pin Joints]] (j) in a [[simple frame|Simple Framework]].
A [[perfect frame|Perfect Frame]] is a frame with a load which conforms to this equation.
An [[imperfect frame|Imperfect Frame]] is one which does not conform to this equation.
<iframe src="//www.pearltrees.com/t/fe-btec-engineering-new-spec/unit-27-statics-practice/id25595569?embed=2&d=201911032034" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/t/fe-btec-engineering-new-spec/unit-27-statics-practice/id25595569" style=" color:#818181; font-size:13px;" target="_blank">Unit 27 Statics in Practice</a>, by <a href="http://www.pearltrees.com/t/fe-btec-engineering-new-spec/id18194064" style=" color:#818181; font-size:13px;" target="_blank">team FE BTEC Engineering (New Spec)</a></span>
<center>
{{Next worked example._2.png}}
Find the reaction Forces using [[Magic Moments|10 + 1 Steps to Magic Moments]]:
$$\begin{aligned}
(1\times 8) +(12\times 3) &=4R_{2}\\
8+36&=4R_{2}\\
44&=4R_{2}\\
\dfrac{44}{4}&=R_{2}\\
R_{2}&=11N\\
R_{1}+R_{2}&=8+12\\
R_{1}+11&=20\\
R_{1}&=20-11\\
R_{1}&=9N
\end{aligned}$$
</center>
Lets number the joints:
{{Next worked example._activeArea1.png}}
!!And start at Joint 1:
{{Next worked example._11.png}}
<center>
$$\begin{aligned}
\text{Up}&=\text{Down}\\
9+F_{1}\sin 60&=0\\
F_{1}\sin 60&=-9\\
F_{1}=\dfrac{-9}{\sin 60}&=-10.392N
\end{aligned}$$
</center>
We can now update our zoomed in view, $$F_1$$ is a compresive force and so is acting into the joint:
{{Next worked example._15.png}}
<center>
$$\begin{aligned}
\text{Left}&=\text{Right}\\
10.392\times \cos 60&=F_{2}\\
F_{2}&=5.196
\end{aligned}$$
</center>
!!Onto Joint 2
<center>
{{Next worked example._21.png}}
$$\begin{aligned}
\text{Up}&=\text{Down}\\
10.392\times \sin 60&=8+F_{4}\sin 60\\
9-8&=F_{4}\sin 60\\
\dfrac{1}{\sin 60}&=F_{4}\\
F_{4}&=1.154N\\
\\
\text{Left}&=\text{Right}\\
0&=10.392\times \cos 60+F_{3}+1.155\times \cos 60\\
-( 10.392\times \cos 60) - (1.155\times \cos 60) &=F_{3}\\
F_{3}&=-5.773N
\end{aligned}$$
</center>
!!Next lets jump to Joint 5
<center>
{{Next worked example._35 (1).png}}
$$\begin{aligned}
\text{Up}&=\text{Down}\\
11+F_{6}\sin 60&=0\\
F_{6}\sin 60&=-11\\
F_{6}&=\dfrac{-11}{\sin 60}\\
F_{6}&=-12.702N
\end{aligned}$$
</center>
Update our zoomed in view:
{{Next worked example._activeArea5.png}}
<center>
$$\begin{aligned}
\text{Left}&=\text{Right}\\
F_{7}&=F_{6}\cos 60\\
F_{7}&=12.7\times \cos 60\\
F_{7}&=6.35N
\end{aligned}$$
</center>
!!And finally Joint Number 4
{{Next worked example._46.png}}
$$\begin{aligned}
\text{Up}&=\text{Down}\\
12.7\times \sin 60&=12+F_{8}\sin 60\\
\left( 12.7\times \sin 60\right) -12&=F_{8}\sin 60\\
\dfrac{-1}{\sin 60}&=F_{8}\\
F_{8}&=-1.154N
\end{aligned}$$
We now know ALL the forces in ALL the members and if they are in [[compression|Compression]] or [[tension|Tension]].
<center>
[img[http://steacher.droppages.com/diagrams/Simple Frame.svg]]<br>
</center>
A simple framework is a two dimensional frame which has to fit a number of criteria:
*The members are all on the same plane (Flat on the page).
*Members are rigid.
*Member are connected by [[articulated joints|Pin Joints]]
*The frame is made by 'adding triangles'
*It meets the rule $$b=2j-3$$ [[Would you like to know more?|Simple Frame Joints to Members Equation]]
*It has no [[redundant members|Redundant Members]].
*Are [[statically determinate|Statically Determinate]]
A simple frame is often referred to as ''pin jointed triangulated frames'' and can be described a ''just stiff'' or ''perfect''.
<$tidgraph start="Simple Framework" />
<center>
[img[http://steacher.droppages.com/diagrams/Simply_supported_beam.svg]]</center><br>
The diagram shows a simply supported beam. There will be a reaction force at each support. ^^^^
$$\displaystyle \int _{ a }^{ b }{ f(x) } dx\approx \frac { \Delta x }{ 3 } \left( { x }_{ 0 }+4{ x }_{ 1 }+2{ x }_{ 2 }+4{ x }_{ 3 }+2{ x }_{ 4 }...+4{ x }_{ n-1 }+{ x }_{ n } \right) $$
$$\displaystyle\Delta x=\frac{b-a}{n}$$
Also known as ''The Law of Sines''.
<center>
[img[http://steacher.droppages.com/diagrams/Non right angle triangle.svg]]
</center><br>
Can be used to find missing ''sides'' of a non right angle triangle where
* One angle and two sides are given and the angle is "NOT" between the two given sides.
*Two angles and any side are given.
<div class="katex-display">
$$\displaystyle \frac{a}{\sin A}= \frac{b}{\sin B}= \frac{c}{\sin C}$$
</div>
---
Can be used to find missing ''angles'' of a non right angle triangle where
*One angle and two sides are given.
<div class="katex-display">
$$\displaystyle \frac{\sin A}{a}= \frac{\sin B}{b}= \frac{\sin c}{c}$$
</div>
Where:
Lower case letters are side lengths.
Upper case letters are the angle opposite the side.
Solid fuels are mainly coal of various qualities from [[anthracite|Anthracite]] to [[brown coal|Brown Coal]].
These are normally analysed by [[mass|Mass]] to give the content of [[carbon|Carbon]], [[hydrogen|Hydrogen]], [[sulphur|Sulphur]] and any other elements present.
Often there is [[silica (ash)|Silica]], moisture and [[oxygen|Oxygen]] present in small quantities which have some effect on the process. The silica leaves deposits of [[slag|Slag]] on the heat transfer surfaces in [[boilers|Boiler]].
<center>
[img[http://steacher.droppages.com/diagrams/Space Diagram 2.svg]]</center><br>
A sketch or diagram which shows how the thing actually looks and how and where the forces interact. It can then be redrawn as a [[force diagram|Force Diagram]]
Quantity per $$kg$$ e.g. [[Energy|Energy Introduction]] needed per $$kg$$ or [[volume|Volume]] needed per $$kg$$.<br>
A specific quantity is always a lower case letter such as $$v$$ for [[specific volume|Specific Volume]] $$(m^3/kg)$$ and $$h$$ for specific [[enthalpy|Enthalpy]] $$(J/kg)$$.<br>
A specific quantity can be found by dividing the property (e.g. [[energy|Energy]]) by the [[mass|Mass]].
The [[energy|Energy]] which is needed to turn water into steam, o is released as steam turns into water.
For a table of values see ''The Engineers Toolbox'' [[here|https://www.engineeringtoolbox.com/saturated-steam-properties-d_101.html]]
{{||$:/template : variable}}
<<<
Specific gravity is the ratio of the density of a substance to the density of a reference substance; equivalently, it is the ratio of the mass of a substance to the mass of a reference substance for the same given volume.
<<<
<<richlink "https://en.wikipedia.org/wiki/Specific_gravity">>
!!This is the recipe factor...
Let's talk [[cake|http://img03.deviantart.net/a90a/i/2011/311/6/3/portal___the_cake_is_a_lie__by_caycowa-d4f8x5o.png]].
Simplified perfect cake that doesn't burn or fail to raise and will always taste amazing because it's [[hot chocolate fudge|http://www.bbcgoodfood.com/recipes/6652/naughty-chocolate-fudge-cake]].
If I make a $$1kg$$ cake and it takes 1 hour at $$200^\circ C$$ how long would it take to bake a $$2kg$$ cake?
If my oven is broken and only goes to $$100^\circ C$$ how long would $$1kg$$ cake take?
So we have a relationship between the size of cake (its [[mass|Mass]]) and the [[temperature|Temperature]] it's been baked at.
This is essentially the [[specific|Specific]] heat capacity.
For example:
The specific heat capacity of water is $$4181 J/kg/^\circ C$$ this means that to heat $$1kg$$ of water by $$1^\circ C$$ we need $$4181 \text{ Joules}$$ of [[energy|Energy]].
How much energy would we need to raise $$2kg$$ of water by $$1^\circ C$$?
How much energy would we need to raise $$1kg$$ of water by $$2^\circ C$$?
Specific Heat Capacity is represented by the letter $$c$$ and contrary to popular belief $$c$$ is [[not for anything else!|https://youtu.be/Ye8mB6VsUHw]]
For gasses there are two values of specific heat capacity.
*Gas is at constant volume $$c_v$$ <br> [[Would you like to know more?|Specific Heat Capacity: Constant Volume]]
*Gas is at constant pressure $$c_p$$<br>[[Would you like to know more?|Specific Heat Capacity: Constant Pressure]]
All materials have their own specific heat capacity.
[[Would you like to know more?|Typical Values of Specific Heat Capacity]]
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/Hflame.svg]]
</center>
The [[pressure|Pressure]] of the gas does not change as the [[temperature|Temperature]] changes. Looking back at our [[gas laws|Gas Laws]] this means that the gas, and therefore it's container, have to expand or contract.
In order to move anything we use energy. Where does the energy to move the gas/ change container size come from?
If the container increases in size, gas moves into it extra space, remember, when a fluid moves from one place to another there is [[flow energy|Flow Energy]] involved and also [[internal energy|Internal Energy]] . We know that flow energy and internal energy together is called [[enthalpy|Enthalpy]].
So the ''heat energy'' in is equal to the ''enthalpy''.
<center>
$$\displaystyle \Delta H= \Delta Q$$
</center>
So some of the the [[heat energy|Heat Energy]] goes to internal energy as [[before|Specific Heat Capacity: Constant Volume]] and some to changing the [[volume|Volume]] of the gas and the container.
As <b>NOT ALL</b> the heat energy goes to internal energy that means we need more energy per kg to change the temperature than for a container where the volume of the gas <b>CAN'T</b> change. i.e. we need a larger [[specific heat capacity|Specific Heat Capacity]].
The total energy need then is the enthalpy (Internal + Flow)
[[Would you like to know more?|Specific Heat Capacity: Constant Volume]]
[[Typical Values of Specific Heat Capacity]]
{{||$:/template : equation}}
{{||$:/template : variable}}
<center>
[img[http://steacher.droppages.com/diagrams/QFlame.svg]]
</center>
The [[volume|Volume]] of the gas does not change so all the [[heat energy|Heat Energy]] goes to [[internal energy|Internal Energy]].
If a gas is in a box which can not change shape (constant [[volume|Volume]]) and we [[heat|Heat Energy]] that [[gas|Gas]] then the only place the heat energy can go is into the internal energy of the gas.
<br>
We ignore the fact that the box would also be heated up and assume all the energy gets transferred to the gas.
So the [[internal energy|Internal Energy]] will be <b>THE SAME</b> as the heat energy going into the system.
<center>
$$\displaystyle \Delta Q= \Delta U$$
</center>
As <b>ALL</b> the heat energy goes to internal energy that means we need less energy per kg to change the [[temperature|Temperature]] than for a container where the volume of the gas <b>CAN</b> change. i.e. we need a smaller [[specific heat capacity|Specific Heat Capacity]].
[[Would you like to know more?|Specific Heat Capacity: Constant Pressure]]
[[Typical Values of Specific Heat Capacity]]
{{||$:/template : equation}}
{{||$:/template : variable}}
Specific volume is mainly used for [[gases|Gas]] and [[vapours|Vapours]].
If specific volume is $$\displaystyle \frac{\text{vol}}{\text{mass}}$$ then we can see that [[density|Density]] $$\displaystyle \frac{\text{mass}}{\text{vol}}$$ is the inverse of it.
It is hard to overemphasise the importance of being completely aware of what you are trying to achieve. Writing a specification is the best way of clarifying your ideas, and updating it regularly will ensure that you remain on the required route as the project progresses. The specification is a statement of the characteristics that a design must possess in order to be a solution to the human need, and is more properly known as a product design specification (PDS). By itself the word 'specification' can have several meanings; consider the following passage from PD 6112 Guide to the preparation of specifications produced by the British Standards Institution in 1967.
<<<
A specification is essentially a means of communicating the needs or intentions of one party to another. It may be a user's description, to a designer, of his requirements for purpose or duty: or it may be a designer's description, to a manufacturer, of an embodiment of these requirements; or it may be a manufacturer's detailed description, to his operator, of the components, materials, methods, etc., necessary to achieve that embodiment: or it may be a statement, by a seller, describing suitability for a purpose to satisfy a need or even a potential need, of a user or a possible user. It may. of course, be some or all of these in one.
<<<
In order to prevent confusion different words have been adopted to refer to these kinds of specification. A user's description to a designer is called a brief, a designer's description is the product design specification and the manufacturer's technical description to a purchaser is the product specification. The word specification by itself needs to be interpreted with reference to its context.
@@.floatright
[img[http://steacher.droppages.com/diagrams/Drawing Board Carrier.svg]]
The photo shows two designs resulting from the same [[brief|Drawing Board Brief]] which illustrate the significance of the specification phase to a designer. The differences which exist can be largely attributed to the detailed contents of the product design specifications that the students developed. The specification for the lower of the two units emphasised aesthetics, equipment security and the avoidance of overcrowding when the pupils or students were getting and returning boards, compasses etc., and, at the same time, trying to meet the needs for a compact form, mobility, low cost, stability and robustness. The taller design emphasised the overall weight and width in order to facilitate the movement of the unit up and down staircases, and through narrow doorways, whilst. trying to meet the other requirements. In the lower unit the detachable trays for the storage of extra items like compasses and stencils are a direct result of the desire to spread them out and avoid overcrowding. In the taller unit the trays are placed very low down to give greater stability. The castors chosen for the low unit and the larger wheels selected for the taller one clearly indicate the differences in their intended use. The selection of MDF (medium density fibreboard) for the low unit and plastic sheet panels on the taller one show the relative significance attached to security and weight. Such decisions are a result of differences in the content of various aspects of the PDS and the different emphases made by the two designers.
[[Would you like to know more?|Example Specification]]
<br><br><br><br><br><br><br><br><br><br>
The rate of change of distance with time.
For our English speaking listeners:
Moving slowly you move a fewer (or is it less?) meters in the same amount of time than if you move quickly.
Speed is a [[scalar|Scalar]] quantity.
```
<$edit-socialcalc tiddler="SocialCalc/Demos/field" height=400/>
```
<$edit-socialcalc tiddler="SocialCalc/Demos/field" height=400/>
All conventional welding methods are applicable here. Filler metal of similar composition, or of standard 18-8 stainless steels may be used. 201 is sensitive to intergranular attack along weld boundaries. If heavy welding is required, many producing mills can provide a low carbon version of the alloy.
Writing numbers normally.
E.g. $$1000000$$ ''NOT'' $$1\times 10^6$$
[[Would you like to know more?|http://www.mathsisfun.com/definitions/standard-notation.html]]
They change from a [[solid|Solid]] to a [[liquid|Liquid]] or a liquid to a [[gas|Gas]].
!!!Static strength (isometric strength)
This is a steady force exerted while the limbs are in a stationary or static position.
We can determine all the [[forces|Force]] in the frame!
The [[force|Force]] in each [[member|Members]] can be found and whether it is in [[compression|Compression Force]], (this is called a [[tie|Tie]]), or in [[tension|Tensile Force]], (this is called a [[strut|Strut]])
In order for a structure to be
Use the slider to show more levels!
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="5" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="Statics" maxdepth=<<depth>> />
</$set>
<center>
|scrollable|k
|!Quantity|!Units|!Name|!S.I.Symbol|
|[[Force]]|$$kg\space m/s{^2}$$|$$N\text{(Newton)}$$| $$F$$|
|[[Mass]]|$$kg$$|$$\text{kilogram}$$|$$m$$|
|[[Weight]]|$$kg\space m/s{^2}$$| $$N\text{(Newton)}$$|W|
|[[Displacement]]|$$m$$|meters|s|
|Angle|$$^\circ$$(Degrees)||$$\theta$$|
!Stephen Wilson <br>
!!Engineering Lecturer <br>
!!!Email: Stephenteacher@hotmail.com
----------------------------------------------
<br>
If you want to use this feel free but drop me a line to let me know. I'm just curious to know who's using this resource.<br>
If you want to contribute to this engineering guide give me a shout aswell.
For a [[steady flow|Flow Systems]] or open system there will be a set amount of fluid flowing past a point every second.
Because of this we need to look at the [[energy|Energy]] per second which is [[power|Power]]
This means that [[heat energy|Heat Energy]] per second $$Q/s$$ becomes $$\Phi$$ and [[work|Work]] $$W$$ becomes power $$P$$
The total work per second ($$P$$) and the thermal energy per second are the two forms of energy being provided to do work (e.g. in superheated steam used to turn a turbine) the turbine is outputting work in changes in [[potential|Gravitational or Potential Energy]], [[kiinetic|Kinetic Energy]] and [[enthalpy|Enthalpy]].
Putting that all together gives:
{{||$:/template : equation}}
For a [[heat exchanger|Heat Exchanger]] the [[steady flow energy equation|Steady Flow Energy Equation]] can be simplified.
As there is no [[work|Work]] being done we can lose the $$P$$.
The [[velocity|Velocity]] of the fluids is usually low so we can ignore $$\Delta K.E$$.
The in and out pipes might be at different heights but this is usually small and compared to the rest of the energy in the system it's small and so we can ignore $$\Delta P.E$$
Putting that all together gives:
<$latex text="\Phi =\Delta H/s" displayMode="true"></$latex>
and so for [[specific enthalpy|Enthalpy]] becomes:
{{||$:/template : equation}}
Steam is almost always formed at constant [[pressure|Pressure]].
If a mass of water is heated in a container, let’s call it a [[boiler|Boiler]], as the [[temperature|Temperature]] increases there will be a small change in [[volume|Volume]]. Eventually small bubbles will form on the heating surface which will rise up through the water and pop. These are steam bubbles. They pop because the temperature of the water at the top is slightly less than that at the heating surface and so they cool on the way up (the cooler water takes heat energy from the hot bubbles).
Eventually the water is hot enough that the steam bubbles escape from the water surface. This is called [[boiling|Boiling]]. At this point the temperature will remain constant until there is no water left to boil. This is called [[latent heat|Latent Heat]]. The boiling temperature is called [[saturation temperature|Saturation Temperature]] and the water can be called [[saturated water|Saturated Water]]. Remember saturation temperature changes with [[pressure|Pressure]], you can’t get a quality [[cuppa|Cuppa]] on top of Mount Everest.
As the steam breaks away from the water surface it will carry small droplets of water. This is [[wet steam|Wet Steam]] or [[saturated steam|Saturated Steam]]. The water droplets are what we see as steam when we boil a kettle of pan of water. As long as there is some water left the steam will always be wet. Once all the water has been turned to wet steam the temperature will remain at the saturation temperature (boiling point). Continuing to add heat to the wet steam will heat the water droplets suspended in the wet steam and turn them into steam. When all the water in the wet steam has been changed to steam this is [[dry steam|Dry Steam]] or [[dry saturated steam|Dry Steam]]. Only when all the water has turned to [[vapour|Water Vapour]] will the temperature start to rise again. Continuing to heat dry steam will produce [[superheated steam|Superheated Steam]]
<$tidgraph start="Steam"/>
<$tidgraph start="Steam Definitions" />
This is an example of a simple steam power plant showing the main elements. Most of the plant items are heat exchangers of one kind or other. The boiler is a series of heat exchangers that evaporates the feed water and then superheats it. The source of heat may be from the combustion of fossil fuel or hot gas from a nuclear reactor. The steam passes to a turbine where it gives up its energy (enthalpy) to mechanical power that drives the alternator and produces electric power. The steam leaving the turbine is condensed in the condenser. This is another heat exchanger that uses cooling water. The cooling water is circulated to a cooling tower (or another source of cooling such as the sea, river or lake). The condensate is pumped back to the boiler but it is heated in another heat exchanger called an economiser. This uses the hot gas (usually flue gas) exiting the boiler.
<iframe src="//www.pearltrees.com/t/fe-btec-engineering-2010-spec/steam-tables/id13717930?embed=2&d=201905141634" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/t/fe-btec-engineering-2010-spec/steam-tables/id13717930" style=" color:#818181; font-size:13px;" target="_blank">Steam tables</a>, by <a href="http://www.pearltrees.com/t/fe-btec-engineering-2010-spec/id15069788" style=" color:#818181; font-size:13px;" target="_blank">team FE BTEC Engineering (2010 Spec)</a></span>
<<list-links "[tag[Steam Tables]]">>
!!Step 1
Write down the formula/s which you think might be use full.
!!Step 2
Write down what you know. Remember [[RTFQ]].
!!!Step 2a
As you list the values given in the question check that they are in [[S.I.|International System of Units]] units and write the correct value next to the value given in the question.
*''Remember [[prefixes|Prefixes]]''
*Temp should always be in [[Kelvin]]
!!Step 3
If needed transpose the formula to give 'missing value='
*In some cases it may be easier to do some of the calculation before transposing.
!!Step 4
Ensure that you show your working and lay work out clearly.
The theoretically correct quantity of air required to just exactly burn the fuel. This is expressed as a ratio of air to the fuel burned.
In practice it is found that not all the oxygen in the reactant reaches the fuel elements and that [[excess air|Excess Air]] is required in order to ensure complete combustion. If too little air or oxygen is supplied, the result is [[incomplete combustion|Incomplete Combustion]].
[[Would you like to know more?|The four steps for the Stoichiometric Ratio of Combustion]]
<<<
Capacitance is the ability of a body to store an electric charge.
<<<
<<richlink "https://en.wikipedia.org/wiki/Capacitance">>
{{||$:/template : equation}}
{{||$:/template : variable}}
Strain is a measure of how much something changes length when under a tensile (stretching) or compressive (squashing) [[load|Force]].
Because strain is a measurement divided by a measurement (most commonly $$\text{meters}/\text{meters}$$) the units cancel out and so strain is a dimensionless quantity.
{{||$:/template : equation}}
$$x$$ is also sometimes written as $$\Delta l$$ to signify the change in length.<br>
{{||$:/template : variable}}
[[Would you like to know more?|Stress and Strain]]
There are three basic categories of strength:
<<list-links "[tag[Strength Categories]]">>
<center>
[img[http://steacher.droppages.com/diagrams/Stress_and_Strain_Def.svg]]</center><br>
If a bar is stretched or squashed it experiences tensile or compressive stress respectively.<br>
These are [[direct stresses|Direct Stress]].
Load is divided by the area through which it acts.
As used with most mechanical tests, stress is based on original cross section area without taking into account changes in area (Imagine stretching Plasticine) due to applied load. This sometimes is called conventional or engineering stress. True stress is equal to the load divided by the instantaneous cross sectional area.
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Stress and Strain]]
!Direct
<h2>[[Young's Modulus]]</h2>
<div class="katex-display">
$$\displaystyle E=\frac{\sigma}{\epsilon}$$
</div>
<h2>[[Stress]]</h2>
<div class="katex-display">
$$\displaystyle \sigma=\frac{F}{A}$$
</div>
<h2>[[Strain]]</h2>
<div class="katex-display">
$$\displaystyle \epsilon=\frac{x}{l} \text{ or } \epsilon=\frac{\Delta l}{l}$$
</div>
Combining all three gives:
<h2>Combined</h2>
<div class="katex-display">
$$\displaystyle E=\frac{Fl}{\Delta l A}$$
</div>
Where: <br>
$$\sigma$$=[[Stress]] <br>
$$F$$=[[Force]]<br>
$$A$$=[[Area|http://www.math.com/tables/geometry/areas.htm]] perpendicular to the force.<br>
$$E$$=[[Young's Modulus]]<br>
$$\epsilon$$=[[Strain]]<br>
$$x$$=[[Extension]] length of the material. $$x$$ is can also be written as $$\Delta l$$ to signify the change in length.<br>
$$l$$=original length of the material<br> <br>
!Shear
<h2>[[Modulus of Rigidity]]</h2>
<div class="katex-display">
$$\displaystyle G=\frac{\tau}{\gamma}$$
</div>
!![[Shear Stress]]
<div class="katex-display">
$$\displaystyle \tau=\frac{F}{A}$$
</div>
!![[Shear Strain]]
<div class="katex-display">
$$\displaystyle \gamma=\frac{\text{Deflection}}{\text{Original Length}}$$
</div>
Combining all three gives:
<h2>Combined</h2>
<div class="katex-display">
$$\displaystyle G=\frac{F \times \text{Original Length}}{\text{Deflection} \times A}$$
</div>
Where:
$$G$$=[[Modulus of Rigidity]]<br>
$$\tau$$=[[Shear Stress]]<br>
$$\gamma$$=[[Shear Strain]]<br>
$$F=$$ [[Force]]<br>
$$A=$$ Area parallel to the force<br>
!Other Useful Equations
<div class="katex-display">
$$\displaystyle \pi=\frac {\text{circumference}}{\text{diameter}}$$<br><br>
</div>
!!Area of a circle
<div class="katex-display">
$$\pi \times r^2$$ or $$\displaystyle \frac{\pi \times d^2}{4}$$
</div>
<$tidgraph start="Stress and Strain"/>
[[Stress]] and [[strain|Strain]] are related to each other and for many materials proportional.<br>
You would expect that a material which can withstand a higher stress ([[force|Force]] per unit of [[area|http://www.math.com/tables/geometry/areas.htm]]) would stretch less (have a lower strain value).<br>
Stress and strain come in two main flavours.
!!!Direct
*[[Stress]]
*[[Strain]]
!!!Shear
*[[Shear Stress]]
*[[Shear Strain]]
The relationship between a materials stress and strain is its [[Young's Modulus]] for direct and the [[Modulus of Rigidity]] for shear.
This question calculates the stresses caused by the expansion for two materials joined in parallel under an axial load.
<<tabs tabsList:"[[Axial Stress in a Parallel Compound Bar Question 1]] [[Axial Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]] [[Axial Stress in a Parallel Compound Bar Question Example 1 Solution Second Method (Part 1)]] [[Axial Stress in a Parallel Compound Bar Question Example 2 Solution (Part 2)]] [[Axial Stress in a Parallel Compound Bar Question Example 2 Solution (Part 3)]]" class:"tc-vertical">>
This question calculates the internal stresses caused by the different distances of expansion for two materials joined in parallel.
<<tabs tabsList:"[[Stress in a Parallel Compound Bar Question 1]] [[Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]] [[Stress in a Parallel Compound Bar Question Example 1 Solution (Part 2)]]" class:"tc-vertical">>
A solid bar of steel $$80 mm$$ diameter is placed inside a brass tube $$80 mm$$ inside diameter, $$10 mm$$ thick, and of equal length. The two ends of the bar and tube are firmly fixed together and the whole is heated through $$100 ^\circ C$$. Find the stress in the steel and brass taking the values:
Coefficient of linear expansion for steel $$= 11 \times 10^{- 6} per ^\circ C$$
Coefficient of linear expansion for brass $$= 19 \times 10^{-6} per ^\circ C$$
Modulus of elasticity for steel $$= 206 GN/m^2$$
Modulus of elasticity for brass $$= 103 GN/m^2$$
[[Would you like to know more?|Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]]
First it's a good idea to find the areas of the two components:
The area of the steel is just $$\frac{\pi d^2}{4}$$ but the brass needs to be the area of the outer diameter minus the area of the inner diameter.
From the [[question|Stress in a Parallel Compound Bar Question 1]]:
$$d_\text{steel}=80mm=80 \times 10^{-3}m$$
$$d_\text{brass in}=80mm=80 \times 10^{-3}m$$
$$d_\text{brass out}=100mm=100 \times 10^{-3}m$$
Steel:
<center>
$$A_\text{steel}=\dfrac{\pi d^2}{4}$$
$$A_\text{steel}=\dfrac{\pi \times 80 \times 10^{-3}}{4}$$
$$A_\text{steel}=5.026 \times 10^{-3}m^2$$
</center>
Brass:
<center>
$$A_\text{brass}=\dfrac{(\pi \times 100 \times 10^{-3})^2}{4}-\dfrac{(\pi \times 80 \times 10^{-3})^2}{4}$$
$$A_\text{brass}=7.83 \times 10^{-3} - 5.026 \times 10^{-3}$$
$$A_\text{brass}=2.827 \times 10^{-3}m^2$$
</center>
Using the equation for the forces in the bar due to the different expansions :$$\sigma_\text{brass} \times A_\text{brass} = σ_\text{steel} \times A _\text{steel}$$ ([[Would you like to know more?|Where do the Equations for the Internal Stress in a Parallel Compound Bar Come From?]])
Rearrange to give:
<center>
$$\sigma_\text{brass}=\dfrac{ σ_\text{steel} \times A _\text{steel}}{A_\text{brass} }$$
$$\sigma_\text{brass}=\dfrac{σ_\text{steel} \times 5.026 \times 10^{-3}}{2.827 \times 10^{-3}}$$
$$\sigma_\text{brass}=1.77σ_\text{steel}$$
</center>
[[Would you like to know more?|Stress in a Parallel Compound Bar Question Example 1 Solution (Part 2)]]
We now use the equation
$$\left (\dfrac{\sigma_\text{brass}}{E_\text{brass}} \right )+\left (\dfrac{\sigma_\text{steel}}{E_\text{steel}} \right )=(\alpha_\text{brass} – \alpha_\text{steel})\times \Delta T$$ ([[Would you like to know more?|Where do the Equations for the Internal Stress in a Parallel Compound Bar Come From?]])
From the [[previous section|Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]] we know $$\sigma_\text{brass}=1.77σ_\text{steel}$$ so we can substitute $$\sigma_\text{brass}$$ for $$1.77σ_\text{steel}$$
From the [[question|Stress in a Parallel Compound Bar Question 1]]:
$$E_\text{steel} = 206 GN/m^2= 206 \times 10^9 N/m^2$$
$$E_\text{brass} = 103 GN/m^2= 103 \times 10^9 N/m^2$$
$$\alpha_\text{steel}= 11 \times 10^{- 6} per ^\circ C$$
$$\alpha_\text{brass}= 19 \times 10^{-6} per ^\circ C$$
$$\Delta T=100$$
<center>
$$\left (\dfrac{1.77σ_\text{steel}}{103 \times 10^9} \right )+\left (\dfrac{\sigma_\text{steel}}{206 \times 10^9} \right )=(19 \times 10^{-6} – 11 \times 10^{- 6})\times 100$$
$$\left ( 0.01718 \times 10^{-9} +0.004854 \times 10^{-9}\right)$$<<HelpButton h1>> $$ \times σ_\text{steel}$$ $$=(19 \times 10^{-6} – 11 \times 10^{- 6})\times 100$$
$$\left ( 0.01718 \times 10^{-9} +0.004854 \times 10^{-9}\right)\times σ_\text{steel}$$ $$=800 \times 10^{-6}$$
$$0.022 \times 10^{-9} \times \sigma_\text{steel}=800 \times 10^{-6}$$
$$\sigma_\text{steel}=\dfrac{800 \times 10^{-6}}{0.022 \times 10^{-9}}$$
$$\sigma_\text{steel}=36.36 MN/m^2$$
</center>
From the [[previous section|Stress in a Parallel Compound Bar Question Example 1 Solution (Part 1)]]
$$\sigma_\text{brass}=1.77σ_\text{steel}$$
So the value of $$σ_\text{steel}$$ can now be substituted into the equation.
<center>
$$\sigma_\text{brass}=1.77 \times 36.36 \times 10^6$$
$$\sigma_\text{brass}=64.36MN/m^2$$
</center>
$$\sigma_\text{steel}$$ is taken out side of the brackets. <br><br> $$0.01718 \times 10^{-9}$$ is the result of dividing $$1.77$$ by $$103 \times 10^9$$ and taking $$\sigma_\text{steel}$$ outside of the brackets <br><br>The second value of comes from taking $$\sigma_\text{steel}$$ out of the second fraction. This would leave $$\frac{1}{206 \times 10^9}$$ which gives $$0.004854 \times 10^{-9}$$
<center>
[img[http://steacher.droppages.com/diagrams/Stress_Strain_Curve.svg]]</center><br>
Graph from [[here|http://physics.stackexchange.com/questions/16698/yield-strength-versus-ultimate-strength]]<br>
This graph is typical of a sample piece of steel being stretched while the load and extension of the sample are measured.
From the origin of the graph to the yield strength the stress is proportional to the strain and is said to follow [[Hooke's Law]].
The ratio of stress to strain ($$\text{stress}/\text{strain}$$), i.e. the gradient, is the [[Young's Modulus]].
Just before the yield point the line stops being straight and this is [[the limit of proportionality]]. This is also the area of the [[elastic limit]], before this point the material will return to it's original length, after this point [[plastic deformation]] occurs and the stretching is permanent.
The point marked the ''Ultimate strength'' is also called the //Ultimate Tensile Stress (UTS)//, [[Ultimate Tensile Strength]] or //tensile strength//.
After this point the test piece will start to narrow at the middle or //'neck'//.
The curve continues downwards as the original cross-sectional area of the sample is used, in actual fact because the cross section is reducing the local stress increases.
<center>
[img[http://steacher.droppages.com/diagrams/Strut.svg]]</center><br>
A strut is a [[member|Members]] of a [[simple framework|Simple Framework]] which is in [[compression|Compression Force]]
See also [[tie|Tie]]
The [[product|Products of Combustion]] of burning sulphur is sulphur dioxide and is a pollutant gas.
<center>
$$\ce{S}+\ce{O2=SO2}$$
$$\text{Mass ratio: } 32 +32=64$$
$$\text{So: } 32kg \space \ce{S}+32kg \space \ce{O2}=64kg \space \ce{SO2}$$
$$1kg \space \ce{S2}+1kg \space \ce{O2}=2kg \ce{SO2}$$
</center>
$$\text{So for }1kg \text{ of } \ce{S} \text{ we need } 1kg \text{ of } \ce{O2} \text{ and produce } 2kg \text{ of } \ce{SO2}$$
This is [[steam|Steam]] which continues to be heated after it has become $$100 \%$$ [[dry steam |Dry Steam]].
<center>
[img[http://steacher.droppages.com/diagrams/See_saw.svg]]</center><br>
If we have a see-saw the see-saw does not float. The see-saw is supported by the pivoty springy thingy in the middle.
From [[Newton's Third Law]] the [[weight|Weight]] of the see-saw and the weight of anybody sitting on it must be supported by an equal and opposite force from the pivoty springy thingy. This is the support reaction.
The SUVAT equations are the four equations commonly used in calculations involving bodies moving in a straight line.
Where:<br>
$$s=$$[[Displacement]]<br>
$$u=$$[[initial velocity|Velocity]]<br>
$$v=$$[[final velocity|Velocity]]<br>
$$a=$$[[acceleration|Acceleration]]<br>
$$t=$$[[time|Time]]<br>
[[Would you like to know more?|SUVAT Equations]]
The four equations commonly used for the movement of bodies in a straight line are:
<center>
<div class="katex-display">
$$\displaystyle v=u+at$$
</div>
</center>
[[Would you like to know more?|First SUVAT Equation]]
<center>
<div class="katex-display">
$$\displaystyle s= \frac{(v+u)t}{2}$$
</div>
</center>
[[Would you like to know more?|Second SUVAT Equation]]
<center>
<div class="katex-display">
$$s=ut+\frac{1}{2}at^2$$<br>
</div>
</center>
[[Would you like to know more?|Third SUVAT Equation]]
<center>
<div class="katex-display">
$$v^2=u^2+2as$$
</div>
</center>
[[Would you like to know more?|Fourth SUVAT Equation]]
Where:<br>
$$s=$$[[Displacement]]<br>
$$u=$$[[initial velocity|Velocity]]<br>
$$v=$$[[final velocity|Velocity]]<br>
$$a=$$[[acceleration|Acceleration]]<br>
$$t=$$[[time|Time]]<br>
1. A train starts from rest and accelerates uniformly to a speed of 110 km/hr in a time of 2 minutes. It then travels at constant [[speed|Speed]] for the next 32 km and is brought to rest at the next station with uniform deceleration of $$0.62 m/s^2$$. Draw a velocity-time graph for the journey and determine;
#The total time for the journey,
#The distance between stations.
|![[Element|Elements]]|!Symbol|![[Atomic Mass|Molar Mass]]|!Molecular Mass|![[Product|Products of Combustion]]|
|Carbon| $$\ce{C}$$ | 12 | $$-$$ | $$\ce{CO2}$$ |
|Hydrogen| $$\ce{H2}$$ | 1 | 2 | $$\ce{H2O}$$ |
|Sulphur| $$\ce{S}$$ | 32 | $$-$$ | $$\ce{SO2}$$ |
|Oxygen| $$\ce{O2}$$ | 16 | 32 | $$-$$ |
|Nitrogen| $$\ce{N2}$$ | 14 | 28 | $$-$$ |
<div class="tc-table-of-contents">
[[Welcome]]
<<list-links filter:"[Table of Contents[Table of Contents]]">>
<<toc-selective-expandable 'Table of Contents'>>
</div>
```
<<tabs tabsList:"[[Unit 14 M2 Example Question]] [[Unit 14 M2 Steps]] [[Unit 14 M2 Solution: Step 1]][[Unit 14 M2 Solution: Step 2]] [[Unit 14 M2 Solution: Step 3]] [[Unit 14 M2 Solution: Step 4]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
```
<<tabs tabsList:"[[Unit 14 M2 Example Question]] [[Unit 14 M2 Steps]] [[Unit 14 M2 Solution: Step 1]][[Unit 14 M2 Solution: Step 2]] [[Unit 14 M2 Solution: Step 3]] [[Unit 14 M2 Solution: Step 4]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
```
\define calcFontSize() font-size:calc(0.5em + (0.2em * ($(count)$ / 5) ) );
<$list filter="[tags[]]" variable="thistag">
<$vars count={{{ [<thistag>tagging[]count[]] }}}>
<span style=<<calcFontSize>>>
<$link to=<<thistag>> tooltip=<<count>>>
<$text text=<<thistag>> />
</$link>
</span>
</$vars>
</$list>
```
{{||$:/template : greek}}
Technology push refers to the development of new designs made possible by the
introduction of new processes or technologies. In the case of manufacturing, it may
mean that products can be produced much more cost-effectively, reliably or to a
greater precision than was previously possible. Technological advances may also allow
new features and functions to be incorporated into a product. For example, advances
in electronics. sensors and touchscreens have led to the emergence of a completely
new market in smartphones and tablets since 2010.
Technology push products are often highly innovative and can mark a step change
in a particular area of the market or even stimulate the creation of brand new market
sectors.
However, care does have to be taken. Developing a new technology into a product
does not guarantee commercial success in the market. 30 television is an example of
technology push where an upgrading of television design and broadcasting capabilities
made the innovation possible, but customer demand did not match expectations.
The measure of heat in an object.
A hot object has a high temperature.
[[Would you like to know more?|Temperature Scales]]
<$tidgraph start="Temperature" />
{{||$:/template : variable}}
The change in temperature is the final temperature minus the starting temperature, $$T_2-T_1$$, ( because something getting hot is not the same as something getting cold and you are not [[The Dr|http://www.thedoctorwhosite.co.uk/]]) which is often written as $$\Delta T$$ where $$\Delta$$ means 'Change in'.
This means changes where cooling occurs will be negative.
Heat transfer (and therefore a change in temperature) occurs because one place is hotter than another. Under normal circumstances heat will only flow from a hot body to a cold body. There are 3 mechanisms for this; [[conduction|Conduction]], [[convection|Convection]] and [[radiation|Radiation]]. <br>
A quantity of energy transferred as heat is given the symbol [[Q|Heat Energy]] and it's basic unit is the [[Joule|Energy]].<br>
The quantity transferred in one second is the heat transfer rate and this has the symbol $$\Phi$$ and the unit is the [[Watt|Power]].
N.b. For a temperature change ''AND ONLY FOR A CHANGE'' the temperature does not have to be converted to [[Kelvin]] first as the ''change'' will be the same.
{{||$:/template : equation}}
{{||$:/template : variable}}
The most commonly used scale is the [[Centigrade|Celsius or Centigrade]] or [[Celsius|Celsius or Centigrade]] scale $$(^\circ C)$$ (unless you are an American or old, in which case the [[Fahrenheit]] scale $$(^\circ F)$$ is used.)<br>
In science and engineering we also use the [[Kelvin]] scale $$(K)$$.
```
{{||$:/template : equation}}
{{||$:/template : variable}}
```
Stretchering force. See also [[compression force|Compression Force]]
Tests for [[rpn – Basic Math in Reverse Polish Notation]]
!!! Decimals
Three digits after comma: 1 * 1 = <<rpn 1 1 * 3 p>>
Three digits after comma: 1 + 1.3456 = <<rpn 1 1.3456 + 3>>
Many digits after comma `<<rpn pi 1 * 20>>`: <<rpn pi 1 * 20>> – I get only a precision of 17 digits on my computer (16 after the comma)
Force 20 digits after comma `<<rpn pi 1 * 20 p>>`: <<rpn pi 1 * 20 p>> – there are errors in the last 5 digits on my computer
---
!!! Tiddler Fields
<<rpn {{!!example-1}} 5 &>>
<$macrocall $name="rpn" a={{!!example-1}} b="5" operation="/"/>
<$macrocall $name="rpn" a={{test rpn!!example-1}} b="5" operation="*"/>
<$set name="a" value={{test rpn!!example-1}}>
<$macrocall $name="rpn" a=<<a>> b="5" operation="+"/>
</$set>
<$wikify name="a" text="{{!!example-1}}">
<$macrocall $name="rpn" a=<<a>> b="5" operation="-"/>
</$wikify>
!!! Zero-Values
0 / 5 = <<rpn 0 5 />>
5 / 0 = <<rpn 5 0 />>
0 * 0 = <<rpn 0 0 *>>
0 / 0 = <<rpn 0 0 />>
---
!!! High Five
5 - 5 = <<rpn 5 5 ->>
5 + 5 = <<rpn 5 5 +>>
5 * 5 = <<rpn 5 5 *>>
5 / 5 = <<rpn 5 5 />>
---
!!! Comma on
50 - 5.5 = <<rpn 50 5.5 ->>
5.55 * 2 = <<rpn 5.55 2 *>>
5.5 * 2.5 = <<rpn 5.5 2.5 *>>
5.5 / 5.5 = <<rpn 5.5 5.5 />>
---
!!! Negativity
0.5 plus -0.5 = <<rpn 0.5 -0.5>>
-1 * -2 = <<rpn -1 -2 *>>
-100 / 10 = <<rpn -100 10 />>
---
!!! Concatenate
foo & bar = <<rpn foo bar &>>
cold & " beer bar" = <<rpn cold " beer bar" &>>
---
!!! Digits after comma
One digit after comma: 1 / 3 = <<rpn 1 3 / 1>>
No digit after comma: 0 + 1.5 = <<rpn 0 1.5 decimals:0>>
Careful: use . not , ! 0 + 1,5 = <<rpn 0 1,5 decimals:0>>
Two digits after comma: 1 / 3 = <<rpn 1 3 / 2>>
Two digits after comma: 1.555 = <<rpn 1 1.555 * 2>>
Three digits after comma: 1 / 3 = <<rpn 1 3 / 3>>
Products meeting the requirements of all appropriate directives must carry the CE mark.
Under whichever route a manufacturer has chosen to follow, he/she is required to complete a Declaration of Conformity and place the CE marking on the equipment.
The Marking should be affixed to one of the following:
*the equipment itself
*the packaging of the equipment
*the instructions for use
*the guarantee certificate
By affixing the CE marking to the equipment a manufacturer is making a statement that their equipment meets the requirement of all relevant directives. It is for the manufacturer to decide which directives are applicable.
For the engineer the equation becomes:
<center>
$$\displaystyle \frac{PV}{T}=Rm$$
</center>
But is usually written:
{{||$:/template : equation}}
It is also called:
*Characteristic equation of a gas
*Equation of state
*Perfect gas equation
*Ideal gas law.
R is measured in J/kg K and is different for each gas. R for air is 287J/kg K.
[[Would you like to know more?|Gas Constant]]
Since $$\frac{m}{V}=\rho$$ ($$\rho$$=[[Density]]) with a little maths moving around the equation can be written:
$$\displaystyle \rho=\frac{P}{RT}$$
And, since $$\displaystyle \frac{V}{m}=v$$ ($$v$$=[[specific|Specific]] volume) with a little more moving about the equation can be written:
$$\displaystyle v=\frac{RT}{p}$$
The evolution of the guitar as a [[product|Product]], and more recently as a [[system|System]], provides an excellent example of the way in which human need resulted in a significant [[demand pull|Market Pull]], and the invention of the electromagnetic pickup gave a major [[technology push|Technology Push]]. The first instrument with all of the general characteristics of the guitar appeared in a Hittite stone carving of around 1300 BC.<br>During the following centuries many instrument makers experimented with different shapes and woods in an attempt to influence the tone and the projection of the sound. Instruments were made with varying numbers of strings, sometimes paired, with live becoming standard in the sixteenth century and a sixth eventually being added. The guitar's rise to popularity in the sixteenth century is often associated with the poet Vincente Espinel, and many similarities can be observed between the events then and the explosion of interest in the electric guitar in the period after the Second World War. Consider the following quotation.
<<<
Soon (the Spanish guitar) seemed to be everywhere rapidly overshadowing the
fragile and more complicated Iute. Alarmed purists and lute lovers condemned
the guitar trying to give it a bad name by associating it with undignified
frolicking in the streets, unrestrained body movements and a general spirit of
joyful, sensual abandon. The more the guitar was identified with such pursuits.
the more it dominated folk music in Europe.. Romantics loved to serenade with it,
ladies loved to hear it, painters loved to paint it. Those were grim days for lute
makers.
(Tom Wheeler 1981 The gutiar book)
<<<
@@.floatleft
[img[http://steacher.droppages.com/diagrams/guitar.svg]]
The Spanish guitar had achieved a cult following, and the associated demand led to a degree of freezing in the design development. To be associated with the folk culture the guitar had to be of a certain form, soft feminine curves at the waist, a flat top and a long fretted neck. The first guitar to have six single strings tuned to the present arrangement appeared in 1810- the Carulli guitar, and from here on advances in design have been a matter of refinement. The guitar's width was increased, the fret board narrowed and the
ornate decoration dropped in favour of the functional appearance now associated with the guitar aesthetic.
Performers required greater volumes for larger audiences and in order to achieve this ever thinner sound boards (the
front face) were used. Without support the front face would simply collapse under the pressure produced by the tension in the strings and consequently different forms of strutting have been introduced.
A modern concert guitar is a very sophisticated and critical structure. Great luthiers (guitar makers) must understand the technology - how the sound is produced and how the forces are carried - in order to make their instruments. It is essential to know that the sound of the treble and base strings will not be balanced unless the sound board is thinner on the treble side, that the sound board vibrates less near the neck, that the sounds produced by the front and back faces must be in phase and that close grained timbers produce greater volume. There is a great deal of knowledge required in addition to the considerable craft skills.
The events concerning the evolution of the electric guitar since the 1930s echo these earlier happenings to a surprisingly large degree. Guitarists in big bands had always found that the guitar was swamped by other instruments. Steel strings had been used to increase the volume with consequential reinforcement to the neck (with a steel bolt) and the body but it was only
when the first electromagnetic pickup was developed in 1931 that this situation changed. The technology push led to a revitalising of guitar design, this time as a system, incorporating both the sound production and its amplification. A period of rapid and varied development occurred between 1930 and the early 1950s primarily associated with two men Leo Fender and Les Paul.
Although many radical designs were produced, notably by Leo Fender himself and despite the fact that the guitar body shape has little influence on the tone of the electric guitar, two designs Leo Fender's Stratocaster and the Les Paul series produced by Gibson came to dominate the market. Like the Spanish guitar these designs had achieved a cult following after their adoption by popular folk heroes such as rock musicians Jimi Hendrix, Eric Clapton and Jimi Page. With television to boost the impact, these two designs have come to dominate the perception of the electric guitar concept and it is difficult for designers to break away from these images.
In recent years, many manufacturers have tried different materials, and radical shapes and colours, but guitarists wish to imitate their heroes and this
cultural influence has led to a major difficulty in getting the new forms accepted. When competitors wished to enter the market they did so by copying Gibson and Fender designs.
Cynics might suggest that this was because they had no ideas of their own but, because of the cultural influence on the guitar market, it was thc only realistic course to take. Now that the patent has expired on the Fender Stratocaster, it is produced all over the world to a design very like the original despite recent refinements in the detailed design of the pickup and bridge assemblies for example. They sell in
thousands because they look right. Even with the advent of the new synthesiser technology these two forms are still dominating guitar design, despite their complete irrelevance to the sound produced.
Lets work out the amount of air needed if a fuel contained 88% [[carbon|Carbon]], 10% [[hydrogen|Hydrogen]] and 2% [[sulphur|Sulphur]].
!!Step 1
The equations for [[solid and liquid fuels|Combustion Equations for Solid and Liquid Fuels]] can be used, for example:
$$\text{For }1kg \text{ of } \ce{C} \text{ we need }2.6\dot{6}kg \text{ of } \ce{O2}$$, at this stage we aren't concerned about the [[product|Products of Combustion]].
!!Step 2
We multiply the amount of [[oxygen|Oxygen]] needed to burn $$1kg$$ of the element being considered by the percentage of it in the fuel.
for carbon:
$$2.66\dot6 \times 0.88=2.346kg$$
for hydrogen:
$$8 \times 0.1=0.8kg$$
and for sulphur
$$1 \times 0.02=0.02kg$$
!!Step 3
Total up your answers in step 2.
This is the total oxygen needed.
Total=$$3.16\dot6kg$$ of oxygen.
!!Step 4
Divide your total by 0.23. As oxygen is only 23% of air this final step will give you the mass of ''AIR ''needed for combustion of $$1kg$$ of the fuel.
$$\frac{3.16\dot6}{0.23}=13.768kg $$ of air.
The LVD ( 2006/95/EC ) regulates the safety of electrical equipment (including the non-electrical aspects of safety). It came into force in September 1974, but was amended by Directive 93/68/EC to make it consistent with the other CE Marking Directives in the European Union. As a result of this, CE marking for the safety of electrical equipment became mandatory on 1 January 1997. The amendment also introduced new documentation requirements. Issue 2006/95/EC is the latest version of this document.
The LVD applies to any electrical apparatus or device for use between 50 and 1000VAC or between 75 and 1500VDC. The Directive covers electrical equipment with a voltage between 50 and 1000 V for alternating current, and between 75 and 1500 V for direct current. It should be noted that these voltage ratings refer to the voltage of the electrical input or output, not to voltages that may appear inside the equipment.
Exemptions include equipment covered by other Directives such as:
*Electrical equipment for use in a potentially explosive atmosphere.
*Electrical equipment for radiology and medical purposes.
*Electrical parts for goods and passenger lifts.
*Electricity meters.
*Plugs and socket outlets for domestic use.
*Electric fence controllers.
The Noise at Work Regulations came into force in 1990 and they aim to protect workers from the risk of hearing damage due to excessive noise.
The Noise at Work Regulations, 2005 define the responsibilities of employers and employees in noisy or potentially noisy workplaces. They also specify the duties of manufacturers, suppliers, designers or importers of machinery likely to give rise to a noisy workplace, although these duties have been more comprehensively defined by the European Machinery Directive and its consequent legislation. The Noise at Work Regulations extend the general duty of care to safeguard employees' health (including their hearing) arising from the Health and Safety at Work Act, 1974. The Regulations cover not only the obviously noisy industrial environments, but virtually all workplaces with few exceptions.
The Regulations are based on the "daily personal noise exposure", LEP,d (technically equivalent to LEX,8h in International Standards), of each worker or category of worker. The daily personal noise exposure is a measure of the total amount of noise received during a working day taking into account the noise levels and the amount of time the person spends in each noise level. Noise levels should be measured in the undisturbed sound field, that is without the local effects of the worker's head and body.
The economic value of a product or service - how much is it 'worth' - is not simply equal to its price. It is a measure of how much benefit the product or or service provides to the customer relative to it's cost. Poor [[value|Value]] could be due to lack of [[innovation|Innovation]], high costs incurred during certain parts of the project or [[inefficiencies|Inefficiencies]] in [[production processes|Prosuction Processes]], among other factors. In an engineering organisation, value management is used to increase the value of outcomes, which can be done by reducing waste and unnecessary costs while improving the efficiencies of activities along the process.
Value management begins with conducting a [[value analysis exercise|Value Analysis Exercise]] for a particular product or service. To do this, you first identify the [[value-added|Value Added]] and [[non-value added|Non Value Added]] activities associated with the product or service and then analyse all the processes involved in producing the outcome. Consider where wastes, [[redundancies|Redundancies]] or inefficiencies occur in the current process, and generate alternatives that could offer better value. The results of this functional analysis are used to identify improvements that could be made to the process to enhance [[efficiency|Efficiency]] and produce a lower-cost outcome.
<div class="katex-display">
$$\displaystyle \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$
</div>
Where:
a, b and c come from a standard quadratic equation of the form $$y=ax^2+bx+c$$
Many have hunted for the secret of perpetual motion for many hundreds of years and some have come close.
[[Orffyreus|http://www.orffyre.com/overview.html]] being perhaps the most famous.
[[Would you like to know more?|Perpetual Motion Revealed]]
<<list-links "[tag[Thermo Definitions]]">>
<iframe src="//www.pearltrees.com/t/fe-btec-engineering-2010-spec/unit-14-thermodynamics/id9665098?embed=2&d=201901301619" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/t/fe-btec-engineering-2010-spec/unit-14-thermodynamics/id9665098" style=" color:#818181; font-size:13px;" target="_blank">Unit 14: Thermodynamics</a>, by <a href="http://www.pearltrees.com/t/fe-btec-engineering-2010-spec/id15069788" style=" color:#818181; font-size:13px;" target="_blank">team FE BTEC Engineering (2010 Spec)</a></span>
Use the slider to show more levels!
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="10" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="Thermodynamics" maxdepth=<<depth>> />
</$set>
{{Thermodynamics Worked Examples}}
!Thermodynamics Worked Examples
<<list-links "[tag[Thermodynamics Worked Examples]]">>
Depth: {{$:/Range}}
<$range tiddler="$:/Range" min="1" max="4" default="1" increment="1"/>
<$set name="depth" value={{$:/Range}}>
<$tidgraph start="Thermodynamics Worked Examples" maxdepth=<<depth>> />
</$set>
{{||$:/template : greek}}
We can now put the [[first equation|First Angular 'SUVAT' Equation]] ($$\omega_2=\omega_1+\alpha t$$) into the [[second equation|Second Angular 'SUVAT' Equation]] ($$\theta = \frac{(\omega_2+\omega_1)t}{2}$$)<br>
Which gives:
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$\theta$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{((\omega_1+\alpha t)+\omega_1)t}{2}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$\theta$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{(\omega_1+\alpha t+\omega_1)t}{2}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$\theta$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{(2\omega_1+\alpha t)t}{2}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$\theta$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{2\omega_1 t+\alpha t^2}{2}$$ </td>
</tr>
<tr>
<td colspan="3">
Dividing by the two means the $$2\omega_1t$$ will become $$\omega_1 t$$ and $$\alpha t^2$$ will become $$\frac{1}{2}\alpha t^2$$ or $$\frac{\alpha t^2}{2}$$ which gives:</td>
</tr>
</table>
</center>
{{||$:/template : equation}}
We can now put the [[first equation|First SUVAT Equation]] ($$v=u+at$$) into the [[second equation|Second SUVAT Equation]] ($$s= \frac{(v+u)t}{2}$$)<br>
Which gives:
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$s$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{((u+at)+u)t}{2}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$s$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{(u+at+u)t}{2}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$s$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{(2u+at)t}{2}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$s$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{2ut+at^2}{2}$$ </td>
</tr>
<tr>
<td colspan="3">
Dividing by the two means the $$2ut$$ will become $$ut$$ and $$at^2$$ will become $$\frac{1}{2}at^2$$ or $$\frac{at^2}{2}$$ which gives:</td>
</tr>
</table>
</center>
{{||$:/template : equation}}
<<i18n disclaimer_common $:/plugins/sycom/g-analytics>>
<$reveal type="match" stateTitle="$:/temp/GoogleAnalyticsDNT" text="yes">
<<i18n disclaimer_dnt $:/plugins/sycom/g-analytics>>
</$reveal>
<$reveal type="nomatch" stateTitle="$:/temp/GoogleAnalyticsDNT" text="yes">
<$reveal type="nomatch" stateTitle="$:/temp/GoogleAnalyticsGDPRoption" text="no">
<<i18n disclaimer_gdpr $:/plugins/sycom/g-analytics>>
</$reveal>
<$reveal type="match" stateTitle="$:/temp/GoogleAnalyticsGDPRoption" text="no">
<<i18n disclaimer_nogdpr $:/plugins/sycom/g-analytics>>
<$reveal type="match" stateTitle="$:/plugins/sycom/g-analytics/settings/track_all" text="yes">
<<i18n disclaimer_internal $:/plugins/sycom/g-analytics>>
</$reveal>
<<i18n disclaimer_settings $:/plugins/sycom/g-analytics>>
</$reveal>
</$reveal>
```
<$tidgraph start="Thermodynamics" />
```
<center>
[img[http://steacher.droppages.com/diagrams/Tie.svg]]</center><br>
A tie is a [[member|Members]] of a [[simple framework|Simple Framework]] which is in [[tension|Tensile Force]]
See also [[strut|Strut]]
The passing of the future into the past through the ever changing ''NOW''.<br>
The hubward [[Trolls|http://wiki.lspace.org/mediawiki/index.php/Trolls]] of course think that we are moving through time backwards.
<<<
If you can see where you have been but not where you are going you are facing the wrong way.
<<<
{{||$:/template : variable}}
<<<
Physically, the time constant represents the elapsed time required for the system response to decay to zero if the system had continued to decay at the initial rate....
In a Resistor/ Capacitor circuit composed of a single resistor and capacitor, the time constant in seconds is:
<<<
<<richlink "https://en.wikipedia.org/wiki/Time_constant">>
{{||$:/template : equation}}
{{||$:/template : variable}}
When used in relation to waves and [[frequency|Frequency]] $$T$$ is the [[time|Time]] of one wave, i.e. the time it takes to go from peak to peak or trough to trough.
{{||$:/template : variable}}
See [[Time]]
{{||$:/template : variable}}
A beverage you say? Why thank you kindly...
As a family, titanium and its alloys have developed a mystique as a nightmare to machine. This is simply not the case. Experienced operators have compared its characteristics to those found in 316 stainless steel. Recommended practice includes high coolant flow(to offset the material's low thermal conductivity), slow speeds and relatively high feed rates. Tooling should be tungsten carbide designations C1-C4 or cobalt type high speed tools.
You might have heard that perpetual energy is a myth!
Not true!
The truth however needs to be hidden.
Follow the link.
[[Would you like to know more?|The Secret of Perpetual Motion]]
The torque is the [[force|Force]] about a point (F) $$\times$$ perpendicular distance (d) from the point. It differs from a [[moment|Moments or Bending Moments]] only in that when talking about wheels, gears, flywheels etc the term torque is used.
When talking about leavers, bars, beams etc the term moment is used.
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Moments Explained]]
A total (the total amount in the [[system|Isolated or Closed System]] being looked at).<br>
A total quantity is always a higher case letter such as $$V$$ for [[volume|Volume]] $$(m^3)$$ and $$H$$ for [[enthalpy|Enthalpy]] $$(J)$$.
The total energy released by [[BURNING|https://youtu.be/en1uwIzI3SE]] something in a [[Boy's|Boy's Calorimeter]] or [[Schole's|Schole's Bomb Calorimeter]] Calorimeter.
I.e. The amount of [[heat energy|Heat Energy]] you divide by [[volume|Volume]] or [[mass|Mass]] to find the [[HCV|Higher Calorific Value (H.C.V.)]].
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : equation}}
<center>
$$\displaystyle C_T=C_1+C_2+C_3$$
</center>
<center>
$$\displaystyle \frac{1}{C_T}=\frac{1}{C_1}+\frac{1}{C_2}+\frac{1}{C_3}...$$
</center>
<center>
$$\displaystyle k_e=\frac{1}{4 \pi \epsilon_0}$$
</center>
<center>
$$\displaystyle F=k_e \frac {q_1q_2}{r^2}$$
</center>
<center>
$$\displaystyle I=\frac{Q}{t}$$
</center>
<center>
$$P=IV$$
</center>
<center>
$$P=I^2R$$
</center>
<center>
$$\displaystyle P=\frac{V^2}{R}$$
</center>
<center>
$$\displaystyle I=I_1+I_2+I_3$$
</center>
<center>
$$\displaystyle V=V_1+V_2+V_3$$
</center>
<center>
$$\displaystyle V=IR$$
</center>
<center>
$$\displaystyle \frac{1}{R_T}=\frac{1}{R_1}+\frac{1}{R_2}+\frac{1}{R_3}...$$
</center>
<center>
$$\displaystyle R_T=R_1+R_2+R_3$$
</center>
<center>
$$\displaystyle R=\frac{\rho l}{A}$$
</center>
<center>
$$\displaystyle V_c=Ve^{-t/ \tau}$$
</center>
No [[robots in disguse here|http://www.80scartoons.co.uk/transformers2.php]]. :(
Ratio of voltages to the number of turns.
{{||$:/template : equation}}
An untidy zoomable web version can be found [[here|https://coggle.it/diagram/V9qkIc1nLLNM9I8I/971e5876a2820e5835bce4e394786d4204463940e1e54c15e7c94202e6870fec]].
A nice neat PDF can be seen below.
A direct link is at the bottom of the tiddler.
<iframe src="http://docs.google.com/gview?url=http://steacher.droppages.com/diagrams/transposition_flow_diagramme.pdf&embedded=true" style="width:100%; height:500px;" frameborder="0"></iframe>
<span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="https://drive.google.com/file/d/0B342tqu39yngSV9TaXNjcmcwSXc/view?usp=sharing" style=" color:#818181; font-size:13px;" target="_blank">{{!!title}}</a> by <a href="http://stephenteacher.tiddlyspot.com/#Ste.W" style=" color:#818181; font-size:13px;" target="_blank">S.Wilson</a></span>
Tribology...the study of the interaction of sliding surfaces. It includes three subjects: Lubrication, friction, and wear;
<<list-links "[tag[Tribology]]">>
<iframe src="//www.pearltrees.com/stephenteacher/tribology/id31004361?embed=2&d=202004021459" width="400" height="310" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/tribology/id31004361" style=" color:#818181; font-size:13px;" target="_blank">Tribology</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
!For right angled triangles
!!Sine
$$\sin \theta = \frac{\text{opp}}{\text{hyp}}$$
<$graph color='blue' thickness='1' minX="0" minY="-6" maxY="6" equation="5 * Math.sin(x)">
</$graph>
!!Cosine
$$\cos \theta = \frac{\text{adj}}{\text{hyp}}$$
<$graph color='red' thickness='1' minX="0" minY="-6" maxY="6" equation="5 * Math.cos(x)">
</$graph>
!!Tangent
$$\tan \theta = \frac{\text{opp}}{\text{adj}}$$
<$graph color='purple' thickness='1' minX="0" minY="-6" maxY="6" equation="5 * Math.tan(x)">
</$graph>
!For Non Right Angle Triangles
!!Cosine Rule
<div class="katex-display">
$$\displaystyle c^2=a^2+b^2-2ab \cos C$$
</div>
[[Would you like to know more?|Cosine Rule]]
!!Sine Rule
<div class="katex-display">
$$\displaystyle \frac{a}{\sin A}= \frac{b}{\sin B}= \frac{c}{\sin C}$$
</div>
[[Would you like to know more?|Sine Rule]]
<iframe src="//www.pearltrees.com/stephenteacher/trig/id18240445?embed=2&d=20170829935" width="100%" height="413" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/stephenteacher/trig/id18240445" style=" color:#818181; font-size:13px;" target="_blank">Trig</a>, by <a href="http://www.pearltrees.com/stephenteacher" style=" color:#818181; font-size:13px;" target="_blank">stephenteacher</a></span>
This about being able to find unknown [[angles|Angles]] or sides of triangles.
It is recommended that you read some [[websites|Trig Maths help and Practice]] and do the practice exercises and worksheets until you are comfortable doing them as this will aid you going forward.
[[Would you like to know more? |Trig Cheat Sheet]]
All three phases of water can be found together (Ice, Water, Steam). In [[steam tables|Steam Tables]] $$h$$ and $$u$$ are taken as zero from this point, not $$0^\circ C$$
{{Tripple Point of Water (Temperature)}}
{{Tripple Point of Water (Pressure)}}
This can be a [[partial pressure|Partial Pressure]].
{{||$:/template : constant}}
{{||$:/template : constant}}
!!Turning Circular Knob
|!Smooth $$40mm \varnothing \times 20mm$$ deep in the horizontal axis.|<|<|<|<|
|!Sex|!Mean ($$Nm$$)|!S.D ($$Nm$$)|!Range ($$Nm$$)|
|Male|4,48|1,69|56 -6,08|
|Female|3,89|1,32|1,45 – 6,13|
!!Twisting Lid
|!knurled Lid $$65mm \varnothing$$|<|<|<|<|
|!Sex|!Mean ($$Nm$$)|!S.D ($$Nm$$)|!Range ($$Nm$$)|
|Male|7,94|1,67|5,29-11,5|
|Female|4,75|1,72|1,22 - 6,93|
!Solids/ Liquids
|!Material|![[Specific Heat Capacity]] $$(J/kgK)$$|
|Water | 4187 |
|[[Aluminium]]| 921 |
|Cast iron| 544 |
|Steel| 494 |
|Wrought iron| 473 |
|Copper| 385 |
|Mercury| 138 |
|Lead| 130 |
!Gasses
|!Gas|![[Const Pressure|Specific Heat Capacity: Constant Pressure]] C,,p,, $$(kJ/kgK)$$|![[Constant Volume|Specific Heat Capacity: Constant Volume]] C,,v,, $$(kJ/kgK)$$|
|Air|1.005|0.718|
|Carbon dioxide|0.84|0.65|
|Carbon Monoxide|1.046|0.754|
|Hydrogen|14.4|10.4|
|Nitrogen|1.046|0.754|
|Oxygen|0.92|0.76|
|Methane|2.22|0.17|
|Sulphur dioxide|0.796|0.67|
<<<
[[Analytically]] determine the
[[magnitude|Magnitude]] and nature of the
[[support reactions|Support Reactions]] and primary
forces acting in the members of
a [[framed structure|Framed Structure]] with at least
four pin-jointed members.
<<<
<<tabs tabsList:"[[Unit 11 M1 Example Question]] [[Unit 11 M1 Solution]] [[Unit 11 M1 Solution:The Details]] [[Unit 11 M1 Solution:Reaction Forces]] [[Unit 11 M1 Solution:Joint 1]] [[Unit 11 M1 Solution:Joint 3]] [[Unit 11 M1 Solution:Joint 2]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 M1 Example Question]]
<<<
Determine the applied [[torque|Torque]], [[work done|Work]] and [[power|Power]] dissipated in a uniformly accelerated complex rotating system in which both linear and rotational motion is present, to overcome the effects of [[inertia|Inertia]], [[friction|Friction]] and [[gravity|Gravity]].
<<<
<<tabs tabsList:"[[Unit 11 M3 Example Question]] [[Unit 11 M3 Solution (1)]] [[Unit 11 M3 Solution (1) Step 1 Part 1]] [[Unit 11 M3 Solution (1) Step 1 Part 2]] [[Unit 11 M3 Solution (1) Step 2]] [[Unit 11 M3 Solution (1) Step 3]] [[Unit 11 M3 Solution (2)]] [[Unit 11 M3 Solution (3)]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 M3 Example Question]]
<<<
determine the performance of a complex rotating
system due to the effects of [[centripetal acceleration|Centripetal Acceleration]].
<<<
<<tabs tabsList:"[[Unit 11 M4 Example Question]] [[Unit 11 M4 Solution]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 M4 Example Question]]
<<<
Determine graphically the
[[magnitude|Magnitude]] and nature of
the [[support reactions|Support Reactions]] and
[[primary forces|Primary Forces]] acting in
the members of a [[framed structure|Framed Structure]] at least four
[[pin-jointed|Pin Joints]] members.
<<<
<<tabs tabsList:"[[Unit 11 P1 Example Question]] [[Unit 11 P1 Definitions]] [[Funicular Polygon]] [[Bow's Notation]] [[Presentation for Solving a Simple Frame]] [[Presentation for Solving a Simple Frame (New and Improved presentation)]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 P1 Example Question]]
!!P2
<<<
Determine the distribution
of [[shear force|Shear Force Diagram]] and [[bending moment|Bending Moment Diagram]] for a [[simply supported beam|Simply Supported Beam]] without
overhang carrying at least three
concentrated loads.
<<<
!!M2
<<<
Determine the distribution
of [[shear force|Shear Force Diagram]] and [[bending moment|Bending Moment Diagram]] locate a point
of [[contraflexure|Contraflexure]] for a [[simply supported beam|Simply Supported Beam]] with
overhang carrying at least
two [[concentrated loads|Concentrated Load]]
and a continuous [[uniformly distributed load|Uniformly Distributed Load]].
<<<
[[Would you like to know more?|S.F & B.M Presentation]]
<<<
Determine the applied [[torque|Torque]], [[work done|Energy]] and [[power|Power]] dissipated in a [[uniformly accelerated|Uniform Acceleration]] [[simple rotating system]] to overcome the effects of [[inertia|?]] and [[friction|Friction]].
<<<
<<tabs tabsList:"[[Unit 11 P5 Example Question]] [[Unit 11 P5 Solution Part 1]] [[Unit 11 P5 Solution Part 1 Step 1]] [[Unit 11 P5 Solution Part 1 Step 2]] [[Unit 11 P5 Solution Part 1 Step 3]] [[Unit 11 P5 Solution Part 2]] [[Unit 11 P5 Solution Part 3]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 P5 Example Question]]
<<<
Determine [[centripetal acceleration|Centripetal Acceleration]] and [[centripetal force|Centripetal Force]] in a [[simple rotating system|simple rotating system]].
<<<
<<tabs tabsList:"[[Unit 11 P6 Example Question]] [[Unit 11 P6 Solution a]] [[Unit 11 P6 Solution b]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 P6 Example Question]]
<<<
Determine the kinetic and dynamic parameters of operation of two different lifting machines from given data.
<<<
<<tabs tabsList:"[[Unit 11 P7 Example Question]] [[Unit 11 P7 Example Solution Part 1]] [[Unit 11 P7 Example Solution Part 2]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 11 P7 Example Question]]
<<<
Evaluate the work done and [[thermal energy|Heat Energy]] transfer that occurs when a fixed [[mass|Mass]] of [[gas|Gas]] undergoes a given increase in [[volume|Volume]] according to [[Boyle's Law]] and according to [[Charles’s Law]] from the same initial conditions.
<<<
<<tabs tabsList:"[[Unit 14 D1 Example Question]] [[Unit 14 D1 Steps]]" default:"[[Unit 14 D1 Example Question]]" class:"tc-vertical">>
[[Would you like to know more|Unit 14 D1 Example Question]]
<<<
Prepare a complete analysis by [[mass|Mass]] of the [[products of combustion|Products of Combustion]] when unit mass of a given fuel is completely burned with an [[excess air|Excess Air]] supply.
<<<
[[Would you like to know more|Calculating Products of Combustion: Example Steps]]
<<<
M1 Determine the [[polytropic process index|Polytropic Index]] ‘n’ from the initial and final condition parameters of a gas.
<<<
<<tabs tabsList:"[[Unit 14 M1 Example Question]] [[Unit 14 M1 Solution]] [[Unit 14 M1 Solution: Characteristic Gas Law]] [[Unit 14 M1 Solution: Polytropic Equation]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
[[Would you Like to know more?|Unit 14 M1 Example Question]]
<<<
Determine the [[specific heat capacities|Specific Heat Capacity]] at [[constant volume|Specific Heat Capacity: Constant Volume]] $$c_v$$, and [[constant pressure|Specific Heat Capacity: Constant Pressure]] $$c_p$$, for a [[gas|Gas]] from given values of the [[adiabatic index|Adiabatic Change]] $$\gamma$$, the [[universal gas constant|Universal Gas Constant]] and its [[molecular weight|Molecular Weight]].
<<<
<<tabs tabsList:"[[Unit 14 M2 Example Question]] [[Unit 14 M2 Steps]] [[Unit 14 M2 Solution: Step 1]][[Unit 14 M2 Solution: Step 2]] [[Unit 14 M2 Solution: Step 3]] [[Unit 14 M2 Solution: Step 4]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 14 M2 Example Question]]
<<<
Determine the [[gross|Higher Calorific Value (H.C.V.)]] and [[net calorific values|Lower Calorific Value (L.C.V.)]] of a gaseous fuel from given test data obtained using a [[Boys’ gas type calorimeter|Boy's Calorimeter]].
<<<
[[Would you like to know more|Unit 14 M3 Worked Example]]
<<<
Determine the [[efficiency|Efficiency]] of a [[boiler|Boiler]] from given feed water and output steam conditions and the fuel consumption rate.
<<<
[[Would you like to know more?|Unit 14 M4 Example Question and Solution]]
<<<
P1 Calculate the [[mass|Mass]] of a gas and its final condition parameters after undergoing a given [[polytropic process|Polytropic Equation]] process.
<<<
<<tabs tabsList:"[[Unit 14 P1 Example Question]] [[Unit 14 P1 Solution Q1]] [[Unit 14 P1 Solution Q2]] [[Unit 14 P1 Solution Q3]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 14 P1 Example Question]]
<<<
Determine the [[work done|Work]] and [[thermal energy|Heat Energy]] transfer during thermodynamic processes in a [[closed system|Non-Flow Systems]].
<<<
[[Would you like to know more|Unit 14 P2 Example Question]]
<<tabs tabsList:"[[Unit 14 P2 Example Question]] [[Unit 14 P2 Solution Part 1]] [[Unit 14 P2 Solution Part 1: Step 1]] [[Unit 14 P2 Solution Part 1: Step 2]][[Unit 14 P2 Solution Part 2]] [[Unit 14 P2 Solution Part 2: Step 1]] [[Unit 14 P2 Solution Part 2: Step 2]]" default:"[[Unit 14 P2 Example Question]]" class:"tc-vertical">>
<<<
Determine the [[work done|Work]] and [[thermal energy|Heat Energy]] transfer during thermodynamic processes in a [[open system|Flow Systems]].
<<<
<<tabs tabsList:"[[Unit 14 P3 Example Question]] [[Unit 14 P3 Solution]] [[Unit 14 P3 Solution Working Out]]" default:"[[Unit 14 P3 Example Question]]" class:"tc-vertical">>
[[Would you like to know more|Unit 14 P3 Example Question]]
<<<
Use [[stoichiometric equations|Combustion Equations for Solid and Liquid Fuels]] to determine the theoretical mass of air required for complete combustion of a given mass of [[fuel|Fuel]].
<<<
[[Would you like to know more|The four steps for the Stoichiometric Ratio of Combustion]]
<<<
Determine the [[gross calorific value|Higher Calorific Value (H.C.V.)]] of a solid or liquid fuel from given test data obtained using a [[bomb type calorimeter|Schole's Bomb Calorimeter]].
<<<
[[Would you like to know more|Unit 14 P5 Worked Example]]
<<<
Determine the rates of thermal energy transfer in a [[boiler|Boiler]] and [[superheater|Superheater]] from given feed water and output [[steam|Steam]] conditions and steam flow rate.
<<<
<<tabs tabsList:"[[Unit 14 P6 Example Question]] [[Unit 14 P6 Solution Part 1]] [[Unit 14 P6 Solution Part 2]] [[Sample of Steam Tables for Superheated Steam]] [[Sample of Steam Tables for Saturated Water and Steam]]" default:"[[Unit 14 D1 Example Question]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 14 P6 Example Question]]
<<<
Determine the thermal [[efficiency|Efficiency]] of a [[steam turbine|Steam Turbine]] from given input and output steam conditions, steam flow rate and power output.
<<<
<<tabs tabsList:"[[Unit 14 P7 Example Question]] [[Unit 14 P7 Solution]] [[Sample of Steam Tables for Saturated Water and Steam]] [[Sample of Steam Tables for Superheated Steam]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 14 P7 Example Question]]
<<<
Determine the dryness fraction of a steam sample from test data obtained using a simple throttling calorimeter.
<<<
<<tabs tabsList:"[[Unit 14 P8 Example Question]] [[Unit 14 P8 Solution]] [[Sample of Steam Tables for Saturated Water and Steam]] [[Sample of Superheat Table for Use With Throttles]]" default:"[[Unit 14 M2 Example Question]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 14 P8 Example Question]]
<<<
Calculate the [[factor of safety|Safety Factor]]
in operation for a component
subjected to combined direct
and shear loading against given
failure criteria.
<<<
<<tabs tabsList:"[[Unit 5 M1 Example Question]] [[Unit 5 M1 Solution]] [[Unit 5 M1 Solution: Shear Stress]] [[Unit 5 M1 Solution: Shear Stress FOS]] [[Unit 5 M1 Solution: Direct Stress]] [[Unit 5 M1 Solution: Direct Stress FOS]]" default:"[[Unit 5 M1 Example Question]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 M1 Example Question]]
<<<
[[M2|Unit 5 M2]]:- Determine the retarding force on a freely falling body when it impacts upon a stationary object and is brought to rest without rebound.
<<<
<<<
[[D1|Unit 5 D1]]:- Compare and contrast the use of [[D'Alembert's principle|D’Alembert’s Principle]] with the [[principle of conservation of energy|Conservation of Energy]] to solve an engineering problem.
<<<
[[Would you like to know more?|Unit 5 M2 D1 Example Question]]
<<<
Calculate the [[magnitude|Magnitude]], direction and position of the line of action of the [[resultant|Resultant]] and [[equilibrant|Equilibrant]] of a [[non-concurrent|Non Concurrent Forces]], [[coplanar|Coplanar Forces]] force system containing a minimum of four forces acting in different directions.
<<<
<<tabs tabsList:"[[Unit 5 P1 Example Question]] [[Unit 5 P1 Worked Example]]" class:"tc-vertical">>
<br>
[[Would you like to know more?|Unit 5 P1 Example Question]]<br>
[[Further Reading|Pearltrees Unit 5 P1 and P2]]
<<<
Calculate the [[support reactions|Support Reactions]] of a [[simply supported beam|Simply Supported Beam]] carrying at least two [[concentrated loads|Concentrated Load]] and a [[uniformly distributed load|Uniformly Distributed Load]].
<<<
<<tabs tabsList:"[[Unit 5 P2 Example Question]] [[Unit 5 P2 Solution]] [[Magic Moments Step 1]] [[Magic Moments Step 2]] [[Magic Moments Step 3]] [[Magic Moments Step 4]] [[Magic Moments Step 5]] [[Magic Moments Steps 6 & 7]] [[Magic Moments Steps 8-10]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 P2 Example Question]]<br>
[[Further Reading|Pearltrees Unit 5 P1 and P2]]
<<<
Calculate the induced direct [[stress|Stress]], [[strain|Strain]] & [[dimensional change|Dimensional Change]] in
a component subjected to direct [[uniaxial|Uniaxial]] loading and the [[shear stress|Shear Stress]] and [[shear strain|Shear Strain]] in a component subjected to [[shear loading|Shear Stress]].
<<<
<<tabs tabsList:"[[Unit 5 P3 Example Question]] [[Unit 5 P3 (a) Solution]] [[Unit 5 P3 (a) Solution:Stress]] [[Unit 5 P3 (a) Solution:Strain]] [[Unit 5 P3 (a) Solution:Extension]] [[Unit 5 P3 (b) Solution]] [[Unit 5 P3 (b) Solution: Shear Stress]] [[Unit 5 P3 (b) Solution: Shear Strain]] [[Unit 5 P3 (b) Solution: Deflection]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 P3 Example Question]]
<<<
Solve three or more problems that require the application of kinetic & dynamic principles to determine unknown system parameters
<<<
<<tabs tabsList:"[[Unit 5 P4 Example Question]] [[Unit 5 P4 Solution Q1]] [[Unit 5 P4 Solution Q2]] [[Unit 5 P4 Solution Q3]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 P4 Example Question]]
<<<
Calculate the resultant [[thrust]]
and [[overturning moment]] on
a vertical rectangular retaining
surface with one edge in the
[[free surface|Free Surface]] of a liquid.
<<<
<<tabs tabsList:"[[Unit 5 P5 Example Question]] [[Unit 5 P5 Solution]] [[Unit 5 P5 Solution Step 1]] [[Unit 5 P5 Solution Step 2]] [[Unit 5 P5 Solution Step 3]] [[Unit 5 P5 Solution Step 4]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 P5 Example Question]]
<<<
Determine the [[up-thrust|Up Thrust]] on an
immersed body.
<<<
<<tabs tabsList:"[[Unit 5 P6 Example Question]] [[Unit 5 P6 Solution]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 P6 Example Question]]
<<<
Use the [[continuity of volume|Continuity of Volumetric Flow]] and [[mass flow|Continuity of Mass Flow]] for an [[incompressible fluid|Incompressible Fluid]] to determine the design characteristics of a gradually tapering pipe.
<<<
<<tabs tabsList:"[[Unit 5 P7 Example Question]] [[Unit 5 P7 Solution]]" class:"tc-vertical">>
[[Would you like to know more?|Unit 5 P7 Example Question]]
<center>
[img[http://steacher.droppages.com/diagrams/Stress_Strain_Curve.svg]]</center><br>
Graph from [[here|http://physics.stackexchange.com/questions/16698/yield-strength-versus-ultimate-strength]]<br>
This is the point at which the maximum load is applied, if the load increases after this point the part will fail (break).
Loading along one axis only. For direct loading this is usually down the centre of the length of the bar. The [[area|http://www.math.com/tables/geometry/areas.htm]] is [[perpendicular|Perpendicular]] to the load.
Constant [[acceleration|Acceleration]] e.g. $$3m/s^2$$ for 30 seconds.
<center>
[img[http://steacher.droppages.com/diagrams/simply%20supported%20udl%20sfbm.svg]]
</center>
{{Uniformaly Distributed Load Dia}}
$$\begin{aligned}
\displaystyle
&R=V &=&\frac{wl}{2}\\ \\
&V_x &=& w \bigg(\frac{l}{2}-x \bigg) \\ \\
&M_{\text{max}} \text{ (at centre)} &=& \frac{wl^2}{8}\\ \\
&M_x &=& \frac{wx}{2}
(l-x) \\ \\
&\Delta_{\text{max}} \text{ (at centre)} &=&\frac{5wl^4}{384EI} \\ \\
&\Delta_x &=& \frac{wx}{24EI}(l^3-2lx^2+x^3)\\ \\
\end{aligned}$$
A uniformly distributed load or U.D.L is a little trickier than a [[point load|Concentrated Load]] but don't panic.
<center>
[img[http://steacher.droppages.com/diagrams/UDL.svg]]</center><br>
Our aim is to make it a nice simple point load.
If the load in the diagram were one meter long it would weigh six Newtons. If it were two meters it would weigh 12N.
So multiply the number of Newton's per meter by the number of meters. This is the ''EQUIVALENT POINT LOAD''.
This is then placed at ''THE MID POINT OF THE UDL''<br>
[[Would you like to know more?|Magic Moments Step 2]]
!!A1 Algebraic methods
*Solve, transpose and simplify equations.
*Indices and logarithms:
** laws of indices:
***$$a^m \times a^n = a^{m+n}$$
***$$\frac{a^m}{a^n}= a^{m−n}$$
***$$(am)^n = a^{mn}$$
**laws of logarithms:
***$$\log A + \log B = \log AB$$
***$$\log A^n = n \log A$$
***$$\log A – \log B =\log \frac {A} {B}$$
**common logarithms (base 10), natural logarithms (base e).
*Application to problems involving exponential growth and decay.
*Linear equations and straight line graphs:
**linear equations of the form $$y = mx + c$$
**straight-line graph (coordinates on a pair of labelled Cartesian axes, positive or negative gradient, intercept, plot of a straight line)
**pair of simultaneous linear equations in two unknowns.
*Factorisation and quadratics:
**multiply expressions in brackets by a number, symbol or by another expression in a bracket
**extraction of a common factor $$ax + ay, a(x + 2) + b(x +2)$$
**grouping $$ax – ay + bx – by$$
**quadratic expressions $$a^2 + 2ab + b^2$$
**roots of an equation, including quadratic equations with real roots by factorisation, and by the use of formula.
!!A2 Trigonometric methods
*Circular measure:
**radian
**conversion of degree measure to radian measure and vice versa
**angular rotations (multiple number ($$n$$) of radians)
**problems involving areas and angles measured in radians
**length of arc of a circle $$s = r \theta$$
**area of a sector $$A =\frac{1}{2} r^2 \theta$$
*Triangular measurement:
**functions ($$\sin, \cos \text{and} \tan$$)
**sine/cosine wave over one complete cycle
**graph of $$\tan A$$ as $$A$$ varies from $$0^\circ$$ and $$360^\circ$$ confirming $$\tan A =\frac {\sin A} {\cos A}$$
**values of the trigonometric ratios for angles between 0° and 360°
**periodic properties of the trigonometric functions
**the sine and cosine rule
**application of vectors:
***calculation of the phasor sum of two alternating currents
***diagrammatic representation of vectors
***resolution of forces/velocities.
*Mensuration:
**standard formulae to solve surface areas and volumes of regular solids
***volume of a cylinder $$V = πr^2h$$
***total surface area of a cylinder $$\text{TSA} = 2\pi rh + 2\pi r^2$$
***volume of sphere $$V = \frac{4}{3} \pi r^3$$
***surface area of a sphere $$A = 4 \pi r^2$$
***volume of a cone $$V = \frac{1}{3} \pi r^2h$$
***curved surface area of cone $$\text{CSA} = πrl$$
!!B1 Static engineering systems
Recall, perform procedures, demonstrate an understanding of and analyse information and systems, involving:
*Non-concurrent coplanar forces:
**representation of forces using space and free body diagrams
**moments
**resolution of forces in perpendicular directions $$F_x = F \cos \theta, F_y = F \sin \theta $$
**vector addition of forces – resultant, equilibrant and line of action
**conditions for static equilibrium $$\Sigma F_x = 0, \space \Sigma F_y = 0,\space \Sigma M = 0$$
*Simply supported beams:
**concentrated loads
**uniformly distributed loads (UDL).
*Reactions:
**support reactions
**pin reaction forces
**roller reaction forces.
!!B2 Loaded components
Recall, perform procedures, demonstrate an understanding of and analyse information and systems involving:
*direct stress and strain:
**direct stress $$\sigma = \frac{F} {A}$$
**direct strain $$\epsilon = \frac {\Delta L}{L}$$
*shear stress and strain:
**shear stress $$\tau = \frac{F} {A}$$
**shear strain $$\gamma = \frac {a}{b}$$
*tensile and shear strength
*elastic constants:
**Young’s Modulus (modulus of elasticity) $$E = \frac{\sigma}{\epsilon}$$
**Modulus of rigidity $$G = \frac{\tau}{\gamma}
!!C1 Dynamic engineering systems
Recall, perform procedures, demonstrate an understanding of and analyse information and systems involving:
*kinetic parameters and principles:
**displacement ($$s$$)
**velocity – initial velocity ($$u$$), final velocity ($$v$$)
**acceleration ($$a$$)
**equations for linear motion with uniform acceleration:
***$$v = u + at$$
***$$s = ut + \frac{1}{2}at^2$$
***$$v^2 = u^2 + 2as$$
***$$s = \frac{(u + v)t}{2} $$
*dynamic parameters and principles:
**force
**inertia
**torque ($$T$$)
**mechanical work $$W = Fs$$, mechanical power (average and instantaneous)
**mechanical efficiency
**energy:
***gravitational potential energy $$\text{PE} = mgh$$
***kinetic energy $$\text{KE} =\frac{1}{2}mv^2$$
**Newton’s Laws of Motion
**principles of conservation of momentum
**principles of conservation of energy.
*angular parameters:
**angular velocity (ω)
**centripetal acceleration $$a = \omega^2r = \frac {v^2}{r}$$
**uniform circular motion power $$P = T \omega$$
**rotational kinetic energy $$KE = \frac{1}{2} I \omega ^ 2$$
*lifting machines, including:
** inclined planes
**scissor jacks
**pulleys:
**velocity ratio
**mechanical advantage
**effort and load motion
**friction effects.
!!D1 Fluid systems
*Recall, perform procedures, demonstrate an understanding of and analyse information and systems involving:
**Submerged surfaces in fluid systems:
***Hydrostatic pressure and hydrostatic thrust on an immersed plane surface $$F = \rho gAx$$.
***Centre of pressure of a rectangular retaining surface with one edge in the free surface of a liquid.
**Immersed bodies:
***Archimedes’ principle.
***Determination of density using floatation methods.
***Relative density
**Fluid flow in a gradually tapering pipe:
***Flow rate (volumetric and mass).
***Flow velocities (input and output).
***Input and output pipe diameters.
***Incompressible fluid flow (continuity of volumetric flow $$A_1v_1 = A+2v+2$$ and mass flow $$ρA_1v_1 = ρA_2v_ 2)
!!E1 Static and direct current electricity
*Recall, perform procedures, demonstrate an understanding of and analyse information and systems, in the context of electrical circuits (networks) and devices, including:
**Conductance
**Conventional current flow
**Charge/electron flow $$I= \frac{q}{t}$$
**Voltage
**Coulomb’s law $$F=\frac{q_1q_2}{4 \pi \varepsilon_0 r^2}$$.
**Factors affecting resistance, including conductor length, cross sectional area, resistivity, and temperature coefficient of resistance, $$R=\frac{\rho l}{A}$$, $$\frac{\Delta R}{R_0}= \alpha \Delta T$$
**Resistors, including function, fixed, variable, values
**electric field strength, including uniform electric fields, $$E=\frac{F}{q}$$, $$E=\frac{v}{d}$$.
**Factors affecting capacitance, including plate spacing, plate area, permittivity $$C=\frac{\varepsilon A}{d}$$.
**Capacitors – typical capacitance values and construction, including plates, dielectric materials and strength, flux density, permittivity.
!!E2 Direct current circuit theory
*Recall, perform procedures, demonstrate an understanding of and analyse information and systems involving:
**Ohm’s law $$I=\frac{V}{R}$$
**Power $$P = IV$$, $$P = I^2R$$, $$P =\frac{V^2}{R}$$
**Efficiency $$(\eta)=\frac{P_{out}}{P_{in}}$$
**Kirchhoff voltage and current laws $$V = V_1 + V_2 + V_3$$ or $$\Sigma PD = \Sigma IR$$, $$I = I_1 + I_2 + I_3$$.
**Charge, voltage, capacitance and energy stored in capacitors $$Q = CV$$, $$W =\frac{1}{2}CV^2$$
**RC transients (capacitor/resistor), charge and discharge, including exponential growth and decay of voltage and current, and time constant $$\tau = RC$$
**Diodes, including forward and reverse bias characteristics:
***Forward mode applications, including rectification, clamping, circuit/component protection.
***Reverse mode applications, including zener diode for voltage regulation.
!!E3 Direct current networks
*Recall, perform procedures, demonstrate an understanding of and analyse information and systems involving:
**DC power sources, including cells, batteries, stabilised power supply, photovoltaic cell/array and internal resistance.
**At least five resistors in series and parallel combinations $$RT = R_1 + R_2 + R_3$$, $$\frac{1}{R_t}=\frac{1}{R_1}+\frac{1}{R_2}+\frac{1}{R_3}$$
**DC circuits containing resistors and two power sources.
**DC power source with at least two capacitors connected (series, parallel, combination).
<$tidgraph start="Unit 1 Engineering Principles" />
!!AO1
Recall basic engineering principles and mathematical methods and formulae.
Command words: calculate, describe, explain, identify, name
Marks: ranges from 1 to 5 marks.
!!AO2
Perform mathematical procedures to solve engineering problems.
Command words: calculate, convert, find, solve.
Marks: ranges from 1 to 10 marks.
!!AO3
Demonstrate an understanding of electrical, electronic and mechanical principles to solve engineering problems.
Command words: find, calculate, describe, draw, explain.
Marks: ranges from 1 to 5 marks.
!!AO4
Analyse information and systems to solve engineering problems.
Command words: calculate, draw.
Marks: ranges from 1 to 5 marks
!!AO5
Integrate and apply electrical, electronic and mechanical principles to develop an engineering solution.
Command words: calculate, draw, explain.
Marks: ranges from 1 to 10 marks.
<$tidgraph start="Unit 1 Section A" />
<$tidgraph start="Unit 1 Section B" />
<$tidgraph start="Unit 1 Section C" />
<$tidgraph start="Unit 1 Section D" />
Develop a three-dimensional computer-aided model of an engineered product that
can be used as part of other engineering processes.
!!!Recommended assessment approach
A practical drawing activity to produce a 3D model of a product and determine the material properties of components. A portfolio of drawings should include: orthogonal, 3D shaded or solid model, parts list/bill of material and a detail view.
[[Unit 10 A (All)]]
<$tidgraph start="Unit 10 A" />
{{Unit 10 A}}
{{Unit 10 A1: 3D Parametric Modelling}}
{{Unit 10 A2: Develop 3D Components}}
{{Unit 10 A3: Develop a 3D Model}}
{{Unit 10 A4: Output of Drawings from a Model}}
{{Unit 10 A Pass}}
{{Unit 10 A Merit}}
{{Unit 10 A Distinction}}
!10A.D1
Refine models and drawings to an international standard of an accurate and correctly orientated 3D assembled product that is fit for purpose, applying appropriate materials to all components and create a drawing template.
!!For distinction standard
Learners will show consistently accurate components with a material
applied correctly to every component, for example, an engine/cylinder block material could be
made from either aluminium or cast iron. The components should be assembled into a model, for
example a model Formula 1® racing car or a model aircraft landing gear, with all the components
orientated correctly.
A drawing template should be created and used so that a professional portfolio of drawings can be
output. The evidence should include orthogonal drawings, a 3D shaded/solid model, and a detail
view.
Overall, the drawings should be to an international standard, such as BS 8888, and the model
should fully meet its purpose, for example to display accurate visualisation to a potential customer,
and be clear for a third party to understand.
!10A.M1
Produce accurate models and drawings that mainly meet an international standard of an assembled 3D product containing at least seven well orientated components and apply a material to all components.
!!For merit standard,
Learners will accurately draw at least seven components, for example they
should be the correct size and compatible when assembled. At least five of the components should
be correctly orientated when assembled, for example an incorrectly orientated component could be
orientated correctly from one angle but not another. A material should be applied to all
components.
A drawing template from the standard library should be used to output a portfolio of drawings that
should generally be to an international standard, such as BS 8888. Specifically, orthogonal
drawings may contain at most a couple of missing dimensions and/or a couple of dimensions may
be inappropriately positioned or inconsistent, and a detail view that may have minor errors, for
example an incorrect scale applied, or incorrectly labelled. The 3D shaded/solid model should
contain no inaccuracies in the drawing layout and title block and an accurate parts list/bill of
materials should be given.
Overall, the evidence should provide an appropriate 3D model that generally meets its purpose.
!10A.P1
Create models and drawings of at least five 3D components from an assembled product, and apply a material to two or more components.
!10A.P2
Create a model and drawings of an assembled product containing at least five components with two or more components well orientated.
!!For pass standard
Learners will draw at least five components but they may not all be fully
accurate, for example an incompatibility in a male and female thread, or incorrect depth of thread
could be used, causing a bolt not to seat correctly. Components such as pins, washers and basic
fasteners do not contribute towards the component count. The components should be assembled
into a model with at least two components orientated correctly and a material will be applied to at
least one component.
A drawing template from the standard library should be used to output a portfolio of drawings.
Specifically, orthogonal drawings, which may contain some missing dimensions and/or some
dimensions may be inappropriately positioned or inconsistent, and a 3D shaded/solid model
may have some minor errors within the drawing layout and/or title block.
Overall, the evidence should demonstrate a 3D model that partially meets its purpose.
!A1
*Configure the parametric modeller, including origin, units, snap and grid, correct format, project files, selection of file types and planes, e.g. XY, XZ and YZ.
*Sketching commands, including line, arc, centre line, construction line, circle, fillet, and dimension.
*Display commands, including pan, zoom, and orbit.
*Editing commands, including erase, extend, trim, and rotate.
*Construction commands, including:
**3D primitives, e.g. cube, cylinder
**3D creation, e.g. extrude, revolve
**3D modify, e.g. hole, move face, chamfer
**3D Boolean, e.g. intersect, addition, subtraction
**3D assembly, e.g. place, constrain
**3D analysis, e.g. stress, mass.
!A2
*Creation of 2D sketches, including basic shape, dimensioning, modifications, and geometric constraints.
*2D sketch to a 3D model, including rotate about an axis, revolve, extrude, and Boolean manipulation.
*3D features, including:
**Threads, male and female
**Holes, including plain, drilled
**Threads, countersunk, counterbore, fillet, chamfer, rectangular or circular copy.
*Combination of solid objects, including Boolean operations.
*2D sketching on 3D faces.
*Modification of the 3D model, including addition of features to existing geometry, e.g. cut-outs, projected geometry and new holes and extrusions.
*Application of materials to include:
**mass based on common engineering materials, e.g. aluminium and carbon steel
**Surface area of the whole or part of a component
**Volume of the whole or part of a component
**Density mass per unit volume of material
**Principal moments, moments of inertia of a body about its principal axis.
!A3
*Placement of 3D components, including degrees of freedom, XYZ translational freedom and XYZ rotational freedom.
*Assembly constraints and the relationships between components, including mate constraint and angle constraint assembly relationships, insert constraint and tangent constraint assembly relationships.
*Modification to 3D components due to assembly constraints.
*Consideration of assembly, including storyboarding, component relationship.
!A4
Drawings to be produced to British Standard BS 8888 or other relevant international equivalents:
*2D paper space, including drawing template, scale, size, title block, editing
*Creation of component drawings, including an orthogonal base view and projected views, 3D solid model/surface model, appropriate scale, detail views, dimensioning, and centre lines
*Creation of an assembly drawing, including parts list or bill of materials (BOM).
Develop two-dimensional detailed computer-aided drawings of an engineered product that can be used as part of other engineering processes.
!!!Recommended assessment approach
A practical drawing activity to produce 2D drawings for an assembled product. A portfolio of drawings should
include: orthogonal, an assembly drawing, parts list/bill of material and a sectional view.
[[Unit 10 B (All)]]
<$tidgraph start="Unit 10 B" />
{{Unit 10 B}}
{{Unit 10: B1 2D Drawing Commands}}
{{Unit 10: B2 Development of 2D Engineering Drawings}}
{{Unit 10: B3 Output of 2D Drawings}}
{{Unit 10 B Pass}}
{{Unit 10 B Merit}}
{{Unit 10 B Distinction}}
!10B.D2
Refine, using accurate layers from a master layer, drawings to an international standard of an accurate and correctly orientated 2D assembled product that is fit for purpose.
!!For distinction standard,
Learners will show ''accurate components'' that form an ''assembly ''and all
components should be orientated correctly. ''Layers ''should be used so that component attributes are
grouped on one layer, for example, hatching is contained on a single layer and should be used to
create different assemblies and/or components possessing similar attributes from the master layer.
Another example would be a series of brackets with common attributes, such as a bar with a
differing series of holes on a pitch circle diameter (PCD), which would be created from one
master layer with the PCDs on separate layers to enable the output of several drawings.
A ''drawing template'' should be created to output professional drawings, to include a ''general
arrangement'', ''component drawings'', and a'' sectional view''. Overall, the portfolio of drawings should
be to an international standard, such as BS 8888, and they should demonstrate a clear and
accurate 2D model that fully meets its purpose, for example to manufacture the component(s),
and is clear for a third party to understand.
!10B.M2
Produce, using accurate layers, drawings that mainly meet an international standard of an assembled product
containing at least ten accurate and well orientated components.
!!For merit standard,
Learners will draw ten components, which may have minor inaccuracies,
for example external dimensions are created incorrectly but they do not affect final assembly,
or components may not be fully compatible. Layers should be used to create components and
they should be well oriented to create the assembly.
A drawing template from the standard library should be used to output professional drawings, to
include a general arrangement, component drawings, and a sectional view. These drawings should
be to an appropriate international standard.
Overall, the evidence should provide an appropriate 2D model that generally meets its purpose.
!10B.P3
Create, using layers, drawings of at least six 2D components from an assembled product.
!10B.P4
Create a 2D assembly drawing containing at least six components, with at least two components well orientated.
!!For pass Standard,
learners will draw six components, which may have some inaccuracies, such as errors in sizes and compatibility. Components such as pins, washers and basic fasteners do not contribute towards the component count. Also, the assembly should contain at least two correctly orientated components. Layers should be utilised so that components are created using layers, with some minor errors, for example layers may have been left frozen, or only partially printed. A drawing template from the standard library should be used to output a professional portfolio of drawings, to include a general arrangement and orthogonal drawings. The orthogonal drawings may contain some minor errors within the drawing layout, title block and dimensioning. Overall, the evidence should demonstrate a 2D model that partially meets its purpose.
Develop a three-dimensional computer-aided model for a thin walled product and a
fabricated product that can be used as part of other engineering processes.
!!Recomended Assesment approach
A practical drawing activity to produce a rendered 3D model of a thin walled and fabricated product. A portfolio of drawings should include: orthogonal, 3D shaded or solid model, parts list/bill of material, a detail view, rendered output and flat patterns.
[[Unit 10 C (All)]]
<$tidgraph start="Unit 10 C" />
{{Unit 10 C}}
{{Unit 10: C1 3D Modelling Commands}}
{{Unit 10: C2 Develop 3D Components}}
{{Unit 10: C3 Development of a 3D Model}}
{{Unit 10: C4 Output of Product Drawings}}
{{Unit 10 C Pass}}
{{Unit 10 C Merit}}
{{Unit 10 C Distinction}}
!10C.D3
Refine drawings to an international standard of two accurate and correctly orientated 3D models with realistic rendering that are both fit for purpose.
!For distinction standard,
Learners will show in their portfolios accurately modelled fabricated and thin walled components. The fabricated components together should contain a minimum of four folds, two bends and four slots. The components should be assembled into a model that contains a minimum of six components that are orientated correctly, containing a minimum of three fabricated components, plus rods, dowels and shafts may be included, for example a lever and linkage system or a scissor lifts. The thin walled components should be assembled together to create one assembly with no inaccuracies, for example a small hairdryer or a computer mouse. Both models should be rendered to show a realistic product. A drawing template should be created to output a professional portfolio of drawings, including orthogonal drawings, a 3D shaded/solid model, a sectional view of the thin walled components and a detail view of the fabrication. Overall, the portfolio should provide 3D models that fully meet their purpose, for example to display accurate visualisation to a potential customer, and are clear for a third party to understand.
!10C.M3
Produce an accurate model and drawings, that mainly meet an international standard of at least two well orientated and fully rendered 3D components from a thin walled assembled product.
!10C.M4
Produce an accurate model and drawings, that mainly meet an international standard of at least four well orientated and fully rendered 3D components from a fabricated assembled product.
!!For merit standard,
learners will show accurate, fabricated and thin walled components. The
fabricated components should contain a minimum of two folds, two bends and two slots, containing
a minimum of two fabricated components, plus rods, dowels and shafts may be included. The
components should be assembled into a model that contains a minimum of four components that
are orientated correctly. The thin walled components should be assembled together to create one
assembly, which may contain minor inaccuracies, for example minor misalignments, but correctly
orientated. Both models should be rendered but it may not be fully realistic, for example, there may
be minor errors in shadows, lighting, reflections, and views.
A drawing template from the standard library should be used to output a professional portfolio of
drawings, including orthogonal drawings, a 3D shaded/solid model, a sectional view of the thin
walled components and a detail view of the fabrication. Drawings may contain minor dimensioning
errors or missing dimensions.
Overall, the evidence should provide an appropriate 3D model that generally meets its purpose.
!10C.P5
Create partially rendered models and drawings of at least two 3D components from a thin walled assembled product.
!10C.P6
Create partially rendered models and drawings of at least four 3D components from a fabricated assembled product.
!!For pass standard,
learners will show generally accurate, fabricated and thin walled components.
The fabricated components should contain a minimum of one fold, one bend and one slot. The
components should be assembled into a model that contains a minimum of three components and
some may be orientated incorrectly. The thin walled components should be assembled together to
create one assembly, with some inaccuracies, for example inaccuracies in component orientation or
alignment. Components such as split pins and washers do not contribute towards the component
count. One component may be rendered, with some errors in shadows, lighting, reflections,
and views.
A drawing template from the standard library should be used to output a professional portfolio of
drawings, including orthogonal drawings, a 3D shaded/solid model, a sectional view of the thin
walled components and a detail view of the fabrication. Drawings may contain minor dimensioning
errors or some missing dimensions.
Overall, the evidence should provide an appropriate 3D model that partially meets its purpose.
!Learning aim A
{{Unit 10 EIAD Pass}}
{{Unit 10 EIAD Merit}}
{{Unit 10 EIAD Distinction}}
!B1
Configuration of a 2D CAD system, including format units, snap and automatic snaps,
grid, precision, angular, drawing limits, layers, user coordinate system, world coordinate
system, and file systems.
*Use of drawing commands, including line, arc, circle, polyline, absolute, relative, and polar.
*Use of display commands, including pan, zoom.
*Use of modify commands, including erase, trim, mirror, move, array, copy, undo and stretch.
!B2
Drawing commands, including line types, centre line, dashed, text, offset, hatching and
editing of hatching.
*Use of layers, including manipulation, creation, switching on/off, frozen and locked.
*Use of blocks/symbols, including creation of blocks/symbols, symbols library, insertion of blocks.
*Use of modify commands, including mirror, pan, scale, chamfer, and fillet.
*Use of dimensioning, including dimension styles, dimensions, and editing of dimensions.
!B3
Drawings to be produced to British Standard BS 8888 or other relevant international equivalents:
set up of output parameters, including paper size, units, plot area, scale, orientation,
*Paper space, model space, model and layout drawing, and template.
*Creation of component drawings, including orthogonal views, appropriate scale,
*Sectional view, dimensioning, and centre lines.
*Creation of an assembly drawing, including general arrangement, parts list or bill of materials (BOM).
!C1
Configuration of the parametric modeller, including origin, units, snap and grid, correct format, project files, selection of file types, and planes, e.g. XY, XZ and YZ.
*Creation of 2D sketches, including basic shape, dimensioning, modifications, and geometric constraints.
*2D sketch to a 3D model, including rotate about an axis, revolve, extrude, and Boolean manipulation.
*Sheet metal parameters, including folding rule, bending rule, corner reliefs.
*Use of sketching commands, including line, arc, centre line, construction line, circle, fillet, and dimension.
*Use of construction sheet metal commands, including face, material thickness, bends, flange, holes, slots, 3D modify, e.g. hole, move, face, chamfer.
*Use of construction thin walled commands, including 3D creation, imprint/shell,
*Boolean manipulation, sweep, loft, shell, work planes, emboss, 3D modify, e.g. hole, move, face, chamfer.
!C2
*Create 2D sketches, including basic shape, dimensioning, modifications, and geometric constraints.
*2D sketch to a 3D component and sheet metal fabrication, including folding, bending, slots, revolve, extrude, and Boolean manipulation.
*3D features of the components, including:
**threads – male and female.
**holes – plain, drilled, threads, countersunk, fillet, chamfer .
**combination of solid objects, including Boolean operations.
*3D features of the thin walled components, including shell/imprint, loft, fillet, chamfer, array (rectangular or circular), and combination of solid objects, including Boolean operations.
!C3
*Placing 3D components, including degrees of freedom, XYZ translational freedom and XYZ rotational freedom.
*Assembly constraints and the relationships between components, including mate constraint and angle constraint assembly relationships, insert constraint and tangent constraint assembly relationships.
*Modification to 3D components due to assembly constraints.
*Consideration of assembly, including storyboarding, component relationship.
*Use of rendering, including render, shadows, reflections, lights, materials, textures, ray tracing.
!C4
Drawings to be produced to British Standard BS 8888 or other relevant international equivalents:
*2D paper space, including drawing template, scale, size, title block, editing.
*creation of component drawings, including an orthogonal base view and projected views, 3D solid model/surface model, appropriate scale, detail views, rendered models, dimensioning, flat patterns, and centre lines.
Using the simple frame from [[P1|Unit 11 P1 Example Question]] calculate the forces in the frame.
[[Would you like to know more?|Unit 11 M1 Solution]]
<center>
[img[http://steacher.droppages.com/diagrams/U11M1.svg]]
</center>
#Find the reaction forces using the [[10+1 Steps to Magic Moments|Unit 5 P2 Solution]]
#Take each joint at time. For each joint
##Up [[forces|Force]] = Down forces
##Left forces = Right forces
##Clockwise [[moments|Moments]] = Anti clockwise moments.
[[Would you like to know more?|Unit 11 M1 Solution:The Details]]
<center>[img[http://steacher.droppages.com/diagrams/U11M1.svg]]
</center>
!!Step 1<br>
<center>
@@.no-border
| Up forces| $$=$$ |Down Forces |
| $$30+F_{bd} \sin60$$| $$=$$ |$$0$$ |
| $$30+F_{bd} 0.866$$| $$=$$ |$$0$$ |
| $$F_{bd} 0.866$$| $$=$$ |$$-30$$ |
| $$F_{bd}$$| $$=$$ |$$\displaystyle \frac{-30}{0.866} $$ |
| $$F_{bd}$$| $$=$$ |$$-34.64N$$|
| $$\text{(Compression)}$$ |<|<|
@@
</center>
!!Step 2
<center>
@@.no-border
| Left Forces| $$=$$ |Right Forces |
| $$0$$| $$=$$ |$$F_{da}+F_{bd} \cos 60$$ |
| $$0$$| $$=$$ |$$F_{da}+F_{bd} \times 0.5$$ |
|$$\text{Substituting } F_{da} \text{ into the equation:}$$|<|<|
| $$0$$| $$=$$ |$$F_{da}+-34.64\times 0.5$$ |
| $$0$$| $$=$$ |$$F_{da}+-17.32$$ |
| $$F_3$$| $$=$$ |$$17.32N\space \text{(Tension)}$$ |
@@
</center>
We don't need to proceed to step 3 as all the forces at this joint are now known.
[[Would you like to know more?|Unit 11 M1 Solution:Joint 3]]
<center>[img[http://steacher.droppages.com/diagrams/U11M1.svg]]
</center>
!!Step 1
@@.no-border
|scrollable|k
| $$\text{Up forces}$$| $$=$$ |$$\text{Down forces}$$ |
| $$0$$| $$=$$ |$$40+F_{db} \sin 60 + F_{ed} \sin 60+F_{ce} \sin 30$$ |
|$$\text{Substituting known forces into the equation:}$$|<|<|
| $$0$$| $$=$$ |$$40+(-34.64\times 0.866)+(F_{ed} 0.866)+(-20\times 0.5)$$ |
| $$0$$| $$=$$ |$$40-30+0.866 F_{ed} -10$$ |
| $$-40+30+10$$| $$=$$ |$$0.866 F_{ed}$$ |
| $$F_{ed} $$| $$=$$ |$$\displaystyle \frac{0}{0.866}$$|
| $$F_{ed} $$| $$=$$ |$$0 \text{ or redundant}$$ |
@@
We now know all the forces around joint 3.
<center>[img[http://steacher.droppages.com/diagrams/U11M1.svg]]
</center>
!!Step 1
<center>
@@.no-border
| Up forces| $$=$$ |Down forces|
| $$R_2+F_{ec} \sin 30$$| $$=$$ |$$0$$ |
|$$\text{Substituting } R_{2} \text{ into the equation:}$$|<|<|
| $$10+F_{ec} 0.5$$| $$=$$ |$$0$$ |
| $$F_{ec}$$| $$=$$ |$$\displaystyle \frac{-10}{0.5}$$ |
| $$F_{ec}$$| $$=$$ |$$-20N \space \text{(Compressive)}$$ |
@@
</center>
We don't need to proceed to steps two and steps three as we now know all the forces at Joint 3.
[[Would you like to know more?|Unit 11 M1 Solution:Joint 2]]
<center>
[img[http://steacher.droppages.com/diagrams/U11M1.svg]]</center><br>
The [[reaction forces|Support Reactions]] can be found by treating the frame as a [[simply supported beam|Simply Supported Beam]] and taking [[moments|Moments]] about $$R_1$$
<center>
@@.no-border
| $$\text{CW}$$|$$=$$|$$\text{ACW}$$ |
| $$40\times 1$$|$$=$$|$$R_2\times 4$$ |
| $$40$$|$$=$$|$$4R_2$$ |
| $$\displaystyle \frac{40}{4}$$|$$=$$|$$R_2$$|
| $$R_2$$|$$=$$|$$10N$$ |
@@
</center>
The up forces must equal the down forces so:
<center>
@@.no-border
| $$\text{Up}$$|$$=$$|$$\text{Down}$$|
| $$R_1+R_2$$|$$=$$|$$40$$ |
| $$R_1+10$$|$$=$$|$$40$$ |
| $$ R_1$$|$$=$$|$$40-10$$ |
| $$R_1$$|$$=$$|$$30$$ |
@@
</center>
[[Would you like to know more?|Unit 11 M1 Solution:Joint 1]]
#[[Reaction Forces|Unit 11 M1 Solution:Reaction Forces]]
#[[Joint 1|Unit 11 M1 Solution:Joint 1]]
#[[Joint 3|Unit 11 M1 Solution:Joint 3]]
#[[Joint 2|Unit 11 M1 Solution:Joint 2]]
[[needs diagram]]
The winding drum of a hoist has a mass of $$200 kg$$, an outer diameter of $$800 mm$$ and a radius of gyration $$300 mm$$.
A light cable wound around the drum, carries a load of $$150 kg$$, this is accelerated from an initial speed of $$1.25 m/s$$ to a final speed of $$2.5 m/s$$ whilst travelling upwards through a distance of $$7.5 m$$.
The frictional resistance to the linear motion of the load is $$200 N$$ and the friction torque in the bearings of the drum is $$8 N m$$.
Determine:
# Input torque applied.<br>[[Would you like to know more?|Unit 11 M3 Solution (1)]] <br> <br>
# The work done.<br>[[Would you like to know more?|Unit 11 M3 Solution (2)]] <br> <br>
# Maximum input power delivered by the driving motor.<br>[[Would you like to know more?|Unit 11 M3 Solution (3)]] <br> <br>
<$tidgraph start="Unit 11 M3 Example Question" />
<$tidgraph start="Unit 11 M3 Solution (1)" />
!!Introduction
In order to find the torque we can use
$$T=I \alpha + Fr+T_f$$
To do this we need to find $$F$$ and $$\alpha$$. All other values are given in the question.
$$I$$ ([[The Moment of Inertia]])$$=mk^2$$ and these values are also given.
!!Step 1
Lets start by finding $$F$$ using $$F=mg+ma+F_f$$
[[Would you like to know more?|Unit 11 M3 Solution (1) Step 1]]
!!Step 2
Using the linear acceleration we calculated in [[Step 1|Unit 11 M3 Solution (1) Step 1 Part 1]] we can now find the angular acceleration.
[[Would you like to know more?|Unit 11 M3 Solution (1) Step 2]]
!!Step 3
If we now calculate $$I$$ we can put all the numbers in $$T=I \alpha + Fr+T_f$$ to find the torque.
[[Would you like to know more?|Unit 11 M3 Solution (1) Step 3]]
Lets start by finding $$F$$ using $$F=mg+ma+F_f$$
!!Part 1
In order to do this we need to find $$a$$. All other values are given in the question.
Lets use a [[SUVAT Equation|SUVAT Equations]].
[[Would you like to know more?|Unit 11 M3 Solution (1) Step 1 Part 1]]
!!Part 2
Plug in the numbers in to find $$F$$ using $$F=mg+ma+F_f$$
[[Would you like to know more?|Unit 11 M3 Solution (1) Step 1 Part 2]]
Lets use a [[SUVAT Equation|SUVAT Equations]].
$$v^2=u^2+2as$$ should do the job.
From the question:
$$s=7.5m$$
$$u=1.25m/s$$
$$v=2.5m/s$$
<center>
@@.no-border
| $$v^2$$| $$=$$ |$$u^2+2as$$ |
| $$2.5^2$$| $$=$$ |$$1.25^2+2 \times a \times 7.5$$ |
| $$6.25$$| $$=$$ |$$1.5625+15a$$ |
| $$6.25-1.5625$$| $$=$$ |$$15a$$ |
| $$4.6875$$| $$=$$ |$$15a$$ |
| $$a$$| $$=$$ |$$\displaystyle \frac{4.6875}{15}$$ |
| $$a$$| $$=$$ |$$0.3125m/s^2$$ |
@@
</center>
$$F=mg+ma+F_f$$
From the [[previous calculation|Unit 11 M3 Solution (1) Step 1 Part 1]]:
$$a=0.3125m/s^2$$
From the [[Question|Unit 11 M3 Example Question]]:
$$m=150kg$$
$$F_f=200N$$
From your general engineering knowledge:
$$g=$$ accelration due to [[gravity|Gravity]] $$=9.81m/s^2$$
<center>
@@.no-border
| $$F$$| $$=$$ |$$mg+ma+F_f$$ |
| $$F$$| $$=$$ |$$(150 \times 9.81)+(150 \times 0.3125)+200$$ |
| $$F$$| $$=$$ |$$1471.5+46.875+200$$ |
| $$F$$| $$=$$ |$$1718.375N$$|
@@
</center>
Looking back at our [[cheat sheet|Angular Motion Cheat Sheet]] we can see that for linear to angular acceleration $$a= \alpha r$$.
Rearranging to find $$\alpha$$:
$$\displaystyle \alpha=\frac{a}{r}$$
From the [[previous section|Unit 11 M3 Solution (1) Step 1 Part 1]]:
$$a=0.3125m/s^2$$
From the [[question|Unit 11 M3 Example Question]]:
ø $$=800mm$$
$$r=800/2=400mm=0.4m$$
<center>
@@.no-border
| $$\alpha$$| $$=$$ |$$\displaystyle \frac{a}{r}$$ |
| $$\alpha$$| $$=$$ |$$\displaystyle \frac{0.3125}{0.4}$$ |
| $$\alpha$$| $$=$$ |$$0.78 \text{ rads}/s^2$$|
!!First
The first step is to find $$I$$.
We can then put in all the numbers to $$T=I \alpha + Fr+T_f$$ to find the torque.
!!!$$I$$
$$I=mk^2$$
From the [[question|Unit 11 M3 Example Question]]:
$$m=200kg$$
$$k=300mm=0.3m$$
<center>
@@.no-border
| $$I$$| $$=$$ |$$200 \times 0.3^2$$ |
| $$I$$| $$=$$ |$$18kgm$$ |
@@
</center>
!!Next
From the [[last step|Unit 11 M3 Solution (1) Step 2]]:
$$\alpha=0.78 \text{ rads}/s^2$$
From the [[first step|Unit 11 M3 Solution (1) Step 1]]:
$$F=1718.375N$$
From the [[question|Unit 11 M3 Example Question]]:
$$r=0.4$$
$$T_f=8Nm$$
<center>
@@.no-border
| $$T$$| $$=$$ |$$I \alpha + Fr+T_f$$ |
| $$T$$| $$=$$ |$$(18 \times 0.78)+(1718.375\times 0.4)+8$$ |
| $$T$$| $$=$$ |$$14.04+687.35+8$$ |
| $$T$$| $$=$$ |$$709.39Nm$$|
@@
</center>
The equation for work done for angular motion is:
$$W=T \theta$$
We need to calculate $$\theta$$ which is the angular distance moved while lifting the load. From the [[cheat sheet|Angular Motion Cheat Sheet]] $$\theta=s/r$$
From the [[question|Unit 11 M3 Example Question]]:
$$s=7.5m$$
$$r=0.4m$$
So:
$$\theta=s/r$$
$$\theta=7.5/0.4$$
$$\theta=18.75 \text{rad}$$
From [[1|Unit 11 M3 Solution (1) Step 3]]
$$T=709.39Nm$$
So:
$$W=T \theta$$
$$W=709.39 \times 18.75$$
$$W=32625J \text{ or } 32.625kJ$$
The equation for Power for angular motion is:
$$P=T \omega$$
We need to calculate $$\omega$$ which is the angular velocity while lifting the load. From the [[cheat sheet|Angular Motion Cheat Sheet]] $$v=r \omega$$
From the [[question|Unit 11 M3 Example Question]]:
$$r=0.4m$$
$$v=2.5m/s$$
So:
$$\displaystyle \omega=\frac{v}{r}$$
$$\displaystyle \omega=\frac{2.5}{0.4}$$
$$\displaystyle \omega=6.25 \text{rads}/s$$
From [[1|Unit 11 M3 Solution (1) Step 3]]
$$T=709.39Nm$$
So:
$$P=T \omega$$
$$P=709.39 \times 6.25$$
$$P=4433.687W$$
The track between the wheels of a truck is 1.52m and its centre of gravity is 0.9m above the ground. Find the speed at which it will overturn when travelling around a bend of 25m radius.
Note, 'Track' is the the distance between the wheels across the car (not the distance front to back).
[[Would you like to know more?|Unit 11 M4 Solution]]
Overturning will occur when:
<center>
@@.no-border
| $$\text{overturning moment}$$| $$=$$ |$$\text{stabilising moment}$$ |
| $$\text{centrifugal force} \times h$$| $$=$$ |$$\text{weight} \times \frac{1}{2} \text{track}$$ |
| $$\frac{mv^2}{r} \times h$$| $$=$$ |$$mg \times \frac{1}{2} \text{track}$$ |
|>| The mass cancels |<|
| $$\frac{v^2}{r} \times h$$| $$=$$ |$$g \times \frac{1}{2} \text{track}$$ |
|>| Rearange to find v gives: |<|
| $$\displaystyle v$$| $$\displaystyle =$$ |$$\displaystyle \sqrt{\frac{rg \times \frac{1}{2} \text{track}}{h}}$$ |
| $$\displaystyle v$$| $$\displaystyle =$$ |$$\displaystyle \sqrt{\frac{25 \times 9.81 \times 0.76}{0.9}}$$ |
| $$\displaystyle v$$| $$\displaystyle =$$ |$$\displaystyle \sqrt{\frac{186.39}{0.9}}$$ |
| $$\displaystyle v$$| $$\displaystyle =$$ |$$\displaystyle \sqrt{207.1}$$ |
| $$\displaystyle v$$| $$\displaystyle =$$ |$$\displaystyle 14.4m/s$$ |
|Converting to $$km/h: \space 14.4 \times 3.6$$|<|<|
| $$v$$| $$=$$ |$$51.8km/h$$ |
@@
</center>
<<list-links "[tag[Unit 11 P1 Definitions]]">>
*[[reciprocal diagram]]
*[[redundant member]]
*[[statically indeterminate]]
*[[Complex Frame]]
*[[Method of sections]]
*[[Maxwell Diagram]]
The original power point can be found [[here|https://www.dropbox.com/s/10z2dmtu5lfidg9/Pin%20Jointed%20Frame.pptx?dl=0?dl=0]] to download.
Because life is too short the powerpoint does not link back to this wiki so here is a list of key terms (with associated links) for your edification.
{{SF Definitions}}
[[Would you like to know more?|Presentation for Solving a Simple Frame]]
<center>
[img[http://steacher.droppages.com/diagrams/U11 P3 Diagram.svg]]</center><br>
(a) For the simple lap joint shown, determine the shear stress in each rivet, if the load applied is $$2kN$$ and each rivet is $$6mm$$ diameter.
[[Would you like to know more?|Unit 11 P3 Solution (a)]]
<center>
[img[http://steacher.droppages.com/diagrams/
Double_butt_Joint.svg]]</center><br>
(b) The double-cover butt-joint shown, is to carry a pull of $$200kN$$. If the joint consists of ten rivets and the ultimate shear stress of the material is $$360MN/m^2$$, determine the rivet diameter, if the factor of safety is 4.
[[Would you like to know more?|Unit 11 P3 Solution (b)]]
!!Shear stress in the lap joint
---
There are three rivets resisting the [[shear|Shear Stress]] so that will be three times the area of one rivet. Remember the area is parallel to the force. We then simply apply the numbers to the shear stress equation.
Area of one rivet:
<div class="katex-display">
$$\displaystyle \frac{\pi d^2}{4}$$<br><br>
$$\displaystyle \frac{\pi 6^2}{4}$$<br><br>
$$\displaystyle \frac{\pi \times 36^2}{4}$$<br><br>
$$\text{Area}=28.274mm^2$$
</div>
So for three rivets:
<div class="katex-display">
$$3 \times 28.274=84.823mm^2$$
</div>
The equation for Shear stress is:
<div class="katex-display">
$$\displaystyle \tau=\frac{F}{A}$$
</div>
Plug in the numbers:
<div class="katex-display">
$$\displaystyle \tau=\frac{2 \times 10^3}{84.823}$$<br><br>
$$\tau=23.57N/mm^2 \text{ or } 23.57MN/m^2$$
</div>
#First find the working Stress<br>[[Would you like to know more?|Unit 11 P3 Solution (b): Working Stress]]
#Using the stress we have just found we can find the area. <br>[[Would you like to know more?|Unit 11 P3 Solution (b): Area from Stress]]
#From the total area the area per rivet can be found and then the diameter. <br>[[Would you like to know more?|Unit 11 P3 Solution (b): Area and Diameter]]
!!Finding the diameter of one rivit from the total area needed
---
From the [[previous calculation|Unit 11 P3 Solution (b): Area from Stress]]:
Area$$=0.0022m^2=2222.22mm^2$$
This is the area of 10 rivets
so each rivet will have an area of $$222.22mm^2$$
As it is in double shear this is halved so becoming $$111.11mm^2$$
Area of each rivet:
$$\displaystyle \frac{\pi d^2}{4}$$
Rearranging gives:
$$\displaystyle d=\sqrt{\frac{4\times area}{\pi}}$$<br>
$$\displaystyle d=\sqrt{\frac{4\times 111.11}{\pi}}$$<br>
$$\text{Diameter}=11.89mm$$
So put in an order for 12mm rivets.
!!Finding the total area needed to take the shear stress on the butt joint
---
We know [[shear stress|Shear Stress]] $$(\tau) =\frac{F}{A}$$ so rearranging gives: <br>
$$\displaystyle \text{Area}=\frac{F}{\tau}$$<br>
From the question $$F=200\times10^3N$$ and we have [[just found|Unit 11 P3 Solution (b): Working Stress]] that the stress is $$90\times 10^6 N/m.$$
Total Area:
$$\displaystyle \frac{200\times10^3}{90\times 10^6}=0.0022m^2 \text{or} 2222.22mm^2$$
This is the area for 10 rivets.
[[Would you like to know more?|Unit 11 P3 Solution (b): Area and Diameter]]
!!Finding the working Stress in the but joint
---
From the question:
$$\text{USS}=360MN/m^2$$<br>
$$\text{Load}=200kN$$<br>
$$\text{FoS}=4$$
$$\text{FoS}=\frac{\text{USS}}{\text{Working Stress}}$$<br>
rearrange to give:
$$\text{Working Stress}=\frac{\text{USS}}{\text{FoS}}$$<br>
$$\displaystyle \text{Working Stress}=\frac{360\times10^6}{4}$$
$$\text{Working Stress}=90MN/m^2$$
[[Would you like to know more?|Unit 11 P3 Solution (b): Area from Stress]]
A flywheel of mass $$5 \text{ tonnes}$$ and having a radius of gyration of $$1m$$ is accelerated from rest to a speed of $$1200 \text{revs} / \text{min}$$ in $$20 \space \text{seconds}$$ against a friction torque of $$5kNm$$
Determine
#The torque that must be supplied by the driving motor.<br>[[Would you like to know more?|Unit 11 P5 Solution Part 1]]<br>
#The work done during the acceleration.<br>[[Would you like to know more?|Unit 11 P5 Solution Part 2]]<br>
#The maximum power the flywheel transmits.<br>[[Would you like to know more?|Unit 11 P5 Solution Part 3]]<br>
!!Step 1
We can use $$T=mk^2 \alpha$$ to find the [[torque|Torque]] but to do so we first need to find $$\alpha$$, the angular acceleration.<br>
Look at the [[SUVAT equations for angular motion|Angular Motion Cheat Sheet]] and select the appropriate one from the information given in the question to calculate $$\alpha$$.
[[Would you like to know more|Unit 11 P5 Solution Part 1 Step 1]]
!!Step 2
Put the numbers in and find the torque.
[[Would you like to know more|Unit 11 P5 Solution Part 1 Step 2]]
!!Step 3
Remember that you need to also overcome the frictional torque given in the question.
[[Would you like to know more|Unit 11 P5 Solution Part 1 Step 3]]
From the [[SUVAT equations for angular motion|Angular Motion Cheat Sheet]] $$\omega_2=\omega_1+\alpha t$$ has everything we need.
From the question:<br>
$$\omega _1=0$$<br>
$$\omega _2=1200 \text{ revs} / \text{min}$$<br>
$$t=20s$$
First we need to convert $$\text{ revs} / \text{min}$$ to $$\text{rads}/s$$
<div class="katex-display">
$$\displaystyle \frac{1200 \times 2\pi}{60}=125.7 \text{rads}/s$$
</div>
Now put in the numbers
<div class="katex-display">
$$\omega_2=\omega_1+\alpha t$$
$$125.7=0+\alpha \times 20$$
$$\displaystyle \alpha= \frac{125.7}{20}$$
$$\alpha=6.285 \text{ rads}/s$$
</div>
We have just calculated the [[angular acceleration|Angular Acceleration]] $$\alpha=6.285 \text{ rads}/s$$.
We can now calculate the [[torque|Torque]].
From the question:
$$m=5000kg$$
$$k=1$$
<div class="katex-display">
$$T=mk^2 \alpha$$
$$T=5000 \times 1^2 \times 6.285$$
$$T=31425Nm$$
</div>
We also need to take into account the frictional torque as this needs to be overcome to reach the required acceleration. From the question $$T_f=5000Nm$$.
<div class="katex-display">
$$T_{total}=T+T_f$$
$$T_{total}=31425+5000$$
$$T_{total}=36425Nm$$
</div>
The equation for work done due to rotation is:
$$w=T \theta$$
From the previous section we calculated T to be 36425Nm.
$$\theta$$ is the [[angular displacement|Angular Displacement]] which we don't know so it's back to the [[SUVAT equations for angular motion|Angular Motion Cheat Sheet]].
$$\displaystyle \theta=\frac{(\omega_1+\omega_2)}{2} \times t$$ is our equation of choice.
From the question:
$$\omega_1=0$$
$$\omega_2=125.7 \text{rads}/s$$
$$t=20s$$
<div class="katex-display">
$$\displaystyle \theta=\frac{(\omega_1+\omega_2)}{2} \times t$$
$$\displaystyle \theta=\frac{(0+125.7)}{2} \times 20$$
$$\theta=1257 \text{rads}$$
</div>
We can now calculate the work done.
$$w=T \theta$$
$$w=36425 \times 1257$$
$$w=45786225 J $$
The equation for power due to rotation is:
$$P=T \omega$$
$$T=36425Nm$$
$$\omega = 125.7 \text{rads}/s$$
$$P=36425 \times 125.7$$
$$P=4578622.5 W =4.578MW$$
1 Example.
A body of mass $$1kg$$ travels in a horizontal circular path of $$0.6m$$ radius at a speed of $$140 \text{rpm}$$.
Determine
(a) The [[centripetal acceleration|Centripetal Acceleration]] of the mass.
[[Would you like to know more?|Unit 11 P6 Solution a]]
(b) The [[centrifugal force|Centrifugal Force]].
[[Would you like to know more?|Unit 11 P6 Solution b]]
!!Centripetal acceleration
From the Question:
$$\omega = 140\text{rpm}=\frac{140 \times 2\pi}{60}=14.65\text{rads}/s$$
$$m=1kg$$
$$r=0.6m$$
$$\text{Centripetal acceleration}=\omega^2 r$$
$$a_{centripetal}=4.65^2 \times 0.6$$
$$a_{centripetal}= 128.8 m/s^2$$
!!Centrafugal force
$$\text{centrifugal force}=m \omega^2 r$$
In [[part a|Unit 11 P6 Solution a]] we calculated $$\omega^2 r$$ so if we multiply this by a mass of $$1kg =128.8N$$
!!Part 1
A screw jack has a two-start thread of $$5 mm$$ pitch. The effort is applied at a radius of $$350 mm$$. An effort of $$20 N$$ is required to raise a load of $$1.1kN$$.
Determine:
*[a] the velocity ratio.
*[b] the mechanical advantage and efficiency for the given loading conditions.<br>[[Would you like to know more?|Unit 11 P7 Example Solution Part 1]]
!!Part 2
A differential chain block and tackle is known to have an efficiency of $$45\%$$ when raising a load of $$630 N$$. The large pulley has 8 recesses and the smaller pulley has 7 recesses.
Calculate:
*[a] the velocity ratio,
*[b] the mechanical advantage
*[c] the effort needed to raise the load.<br>[[Would you like to know more?|Unit 11 P7 Example Solution Part 2]]
Consider one revolution
From Question:
$$r_{\text{effort}}=350mm$$
$$\text{No. of thread starts}=2$$
$$\text{Pitch}=5mm $$
$$\text{Circumference of a circle in Rads}=2\pi r$$
$$\text{Distance moved by effort} = 2\pi \times350$$
$$\text{Distance moved by effort}= 2199mm$$
<br>
$$\text{Distance moved by load}= \text{No. starts} \times \text{pitch}$$
$$\text{Distance moved by load}= 2 \times 5 = 10mm$$
!!!(a)
$$\text{VR}=\frac{\text{distance moved by effort}}{\text{distance moved by load}}$$
$$\text{VR}=\frac{2199}{10}$$
$$\text{VR}=219.9$$
!!!(b)
$$\text{MA}=\frac{\text{load}}{\text{effort}}$$
$$\text{MA}=\frac{1100}{20}$$
$$\text{MA}=55$$
!!!Efficiency
$$\text{Efficiency}=\frac{\text{MA}}{\text{VR}} \times 100$$
$$\text{Efficiency}=\frac{55}{219.9} \times 100$$
$$\text{Efficiency}=25 \%$$
!!(a)
$$\text{VR}=\frac{2N}{N - n}$$
Where:
N= large pulley recesses.
n= small pulley recesses.
$$\text{VR}=\frac{2 \times 8}{8-7}$$
$$\text{VR}=\frac{16}{1}$$
$$\text{VR}=16$$
!!(b)
$$\text{Efficiency}= \frac{\text{MA}}{\text{VR}} \times 100$$
$$\displaystyle \therefore \text{MA}=\frac{\text{VR} \times \text{Efficiency}}{100}$$
$$\displaystyle \text{MA}=\frac{16 \times 45}{100}$$
$$\displaystyle \text{MA}=7.2$$
!!(c)
$$\displaystyle \text{MA}=\frac{\text{load}}{\text{effort}}$$
$$\displaystyle \therefore \text{effort}=\frac{\text{load}}{\text{MA}}$$
$$\displaystyle \text{effort}=\frac{630}{7.2}$$
$$\text{effort}=87.5 N$$
<iframe src="//www.pearltrees.com/t/fe-btec-engineering/further-mechanical-principles/id14586661?embed=2&d=201705241831" width="100%" height="604" style="border:0px;" allowtransparency="true"></iframe><span style="display:block; padding-top:2px; color:#818181; font-size:13px;"><a href="http://www.pearltrees.com/t/fe-btec-engineering/further-mechanical-principles/id14586661" style=" color:#818181; font-size:13px;" target="_blank">Unit 11 Further Mechanical Principles</a>, by <a href="http://www.pearltrees.com/t/fe-btec-engineering/id15069788" style=" color:#818181; font-size:13px;" target="_blank">team FE BTEC Engineering</a></span>
A quantity of air of [[mass|Mass]] $$0.3kg$$, [[pressure|Pressure]] $$200kN/m^2$$, [[volume|Volume]] $$0.245 m^3$$ and [[temperature|Temperature]] $$30^\circ C$$ is enclosed in a cylinder with a [[gas|Gas]] tight moveable piston and [[heat energy|Heat Energy]] is transferred to raise it’s temperature to $$164^\circ C$$.
Use the values for $$c_v$$ & $$c_p$$ which you calculated in the last question.
#If the piston is prevented from moving during heat transfer so the volume of the air remains unchanged, calculate;
##The heat supplied, taking the [[specific heat at constant volume|Specific Heat Capacity: Constant Volume]].
##The final pressure.
#If the piston moves to allow the air to expand in volume at such a rate as to keep the pressure constant, calculate;
##The heat supplied, taking the [[specific heat at constant pressure|Specific Heat Capacity: Constant Pressure]].
##The final volume
##The [[work|Work]] done moving the piston.
#Explain what the work done would be on a system following [[Boyle's Law]]?
[[Would you like to know more?|Unit 14 D1 Steps]]
This is a distinction question so no worked answers, but these should get you going in the correct direction.
!!Step 1
Use the [[heat energy|Heat Energy]] formula with [[specific heat at constant volume|Specific Heat Capacity: Constant Volume]] to find $$Q$$.
!!Step 2
Use the [[general gas law|General Gas Law]] to find the final pressure. Remember if something remains constant it can be removed it from the equation.
!!Step 3
Repeat steps one and two but use the [[specific heat at constant pressure|Specific Heat Capacity: Constant Pressure]] to find $$Q$$.
!!Step 4
Subtract the $$Q$$ from step 1 from the $$Q$$ from step 2 to find the [[work|Work]] done.
!!Step 5
Take a close look at [[Boyle's Law]] and the [[heat energy equation|Heat Energy]] and draw a conclusion.
Explain your answer.
A cylinder fitted with a piston contains $$1kg$$ of a [[perfect gas|Gasses]] at an initial [[pressure|Pressure]] and [[temperature|Temperature]] of $$1.02 MN/m^2$$ & $$280 ^\circ C$$ respectively. The gas expands to four times its initial [[volume|Volume]] and the pressure is then found to be $$200kN/m^2$$.
R=188 J/kgK
Cv=488 J/kgK
#Find the initial and final volumes. <br>
#If the expansion follows $$pV^n$$=constant then find the polytropic index ‘n’
[[Would you like to know more?|Unit 14 M1 Solution]]
We can use the [[Characteristic Gas Law|The Engineers Characteristic Gas Law]] to determine the initial volume.
From this, as we know the amount the volume has increased by we can calculate the final volume.
[[Would you like to know more?|Unit 14 M1 Solution: Characteristic Gas Law]]
We could now use this information in the [[polytropic equation|Polytropic Equation]] to find the [[polytropic index|Polytropic Index]] but it is easier to just use the ratio of initial and final volume given in the question (1:4).
Don't forget those logs!
[[Would you like to know more?|Unit 14 M1 Solution: Polytropic Equation]]
From the [[Question:|Unit 14 M1 Example Question]]
$$R=188 J/kgK$$
$$C_v=488J/kg/K$$
$$m=1kg$$
$$P_1=1.02MN/m^2=1.02 \times 10^6$$
$$P_2=200kN/m^2=200 \times 10^3$$
$$T_1=280^{\circ}C = 453K$$
$$V_1=?$$
$$V_2=?$$
$$n=?$$
We can use $$PV=mRT$$ to find the initial volume.
<center>
$$\displaystyle PV=mRT$$
<br><br>
</center>
Rearange to find $$V_1$$.
<center>
$$\displaystyle V_1=\frac{mRT_1}{P_1}$$
$$\displaystyle \frac{1 \times 188 \times 453}{1.02 \times 10^6}$$
$$V_1=0.083m^3$$
</center>
From the question we know //The gas expands to four times its initial volume// so:
<center>
$$V_2=4 \times V_1$$
$$V_2=4 \times 0.083$$
$$V_2=0.333m^3$$
$$R=188 J/kgK$$
$$C_v=488J/kg/K$$
$$m=1kg$$
$$P_1=1.02MN/m^2=1.02 \times 10^6$$
$$P_2=200kN/m^2=200 \times 10^3$$
$$T_1=280^{\circ}C = 453K$$
And previously calculated:
$$V_1=0.083m^3$$
$$V_2=0.3333,^3$$
$$n=?$$
The [[polytropic equation|Polytropic Equation]] is
<center>
$$\displaystyle P_1 V_1^n=P_2 V_2^n$$
</center>
Rearranging gives:
<center>
$$\displaystyle { \left( \frac { { V }_{ 2 } }{ { V }_{ 1 } } \right) }^{ n }=\frac { { P }_{ 1 } }{ { P }_{ 2 } } $$
</center>
Now $$\displaystyle \frac{V_2}{V_1}=\frac{4}{1}=4$$ (//expands to four times its initial volume//)
so:
<center>
$$\displaystyle 4^n=\frac { { P }_{ 1 } }{ { P }_{ 2 } }$$
$$\displaystyle 4^n=\frac {1.02 \times 10^6}{200 \times 10^3}$$
$$4^n=5.1$$
</center>
Taking logs of both sides (Base 10 or natural logs can be used, as it's a ratio the answer will be the same)
<center>
$$\displaystyle n \ln 4=\ln 5.1$$
$$\displaystyle n= \frac{\ln 5.1}{\ln 4}$$
$$n=1.175$$
A cylinder fitted with a piston contains air of [[volume|Volume]] $$0.35 \text{ litres}$$ with a [[molecular mass|Molar Mass]] of $$28.97 kg/Kmol$$ at a constant [[pressure|Pressure]] of $$217Bar$$. If $$4804.75J$$ of [[heat energy|Heat Energy]] is needed to raise the [[temperature|Temperature]] from $$870 K$$ to $$1090 K$$ then calculate $$c_p$$ and $$c_v$$
The adiabatic index for air is $$1.4$$
The universal gas constant = $$8314.3 J/k$$
[[Would you like to know more?|Unit 14 M2 Steps]]
From the [[question|Unit 14 M2 Example Question]]:
$$\text{The universal gas constant (R)} = 8314.3 J/k$$
$$\text{Molar Mass}=28.97kg/Kmol$$
We know: $$\displaystyle R=\frac{\text{Universal Gas Constant}}{M}$$
(This R ([[the gas constant|Gas Constant]]) is, confusingly, a different R, the [[Universal Gas Constant]])
<br><br>
<center>
$$\displaystyle R=\frac{8314.3}{28.97}$$
$$R=287J/kg K$$
</center>
[[Would you like to know more?|Unit 14 M2 Solution: Step 2]]
From the [[question|Unit 14 M2 Example Question]]:
$$P=217Bar=217 \times 10^5 Pa$$
$$V=0.35l=0.35 \times 10^{-3}m^3$$
$$m=?$$
$$T_1=870K$$
From the [[last step|Unit 14 M2 Solution: Step 1]]:
$$R=287J/kgK$$
<center>
$$PV=mRT$$
$$\displaystyle m=\frac{PV}{RT}$$
$$m=\displaystyle \frac {217 \times 10^5 \times 0.35 \times 10^{-3}}{287 \times 870}$$
$$\displaystyle m=\frac{7595}{249692}$$
$$m=0.03kg$$
</center>
[[Would you like to know more?|Unit 14 M2 Solution: Step 3]]
From the [[question|Unit 14 M2 Example Question]]:
$$Q=4804.75J$$
$$c_v=?$$
$$\Delta T=T_2-T_1$$
$$\Delta T = 1090-870$$
$$\Delta T = 220$$
Ensure when calculating this you use you calculators ''Ans ''and/ or ''memory ''functions if needed to input $$m$$ so that you keep all of your calculators accuracy as the ''decimal points matter''. Inputting the equation as shown will not give the answer shown. $$Q$$ and $$m$$ have been rounded up for clarity.
From the [[last step|Unit 14 M2 Solution: Step 3]]:
$$m=0.03kg$$
<br><br>
<center>
$$\displaystyle Q=mc_v \Delta T$$
$$\displaystyle c_v=\frac{Q}{m \Delta T}$$
$$\displaystyle c_v=\frac{4804.75}{0.03 \times 220}$$
$$c_v=718 J/kg K$$
</center>
[[Would you like to know more?|Unit 14 M2 Solution: Step 4]]
From the [[question|Unit 14 M2 Example Question]]:
$$\gamma = 1.4$$
From the [[last step|Unit 14 M2 Solution: Step 3]]:
$$c_v=718 J/kgK$$
<br><br>
<center>
$$\displaystyle \gamma = \frac{c_p}{c_v}$$
$$\displaystyle c_p={\gamma} \times {c_v}$$
$$\displaystyle c_p=1000J/kgK$$
</center>
!! Step1
Find the value of [[R|Gas Constant]] for air.
[[Would you like to know more?|Unit 14 M2 Solution: Step 1]]
!!Step 2
Now we know R we can find the [[mass|Mass]] of the gas using [[characteristic gas law|The Engineers Characteristic Gas Law]].
[[Would you like to know more?|Unit 14 M2 Solution: Step 2]]
!!Step 3
Now the only unknown now in the [[heat energy|Heat Energy]] equation is the [[specific heat capacity at constant volume|Specific Heat Capacity: Constant Volume]].
Rearrange to find.
[[Would you like to know more?|Unit 14 M2 Solution: Step 3]]
!!Step 4
Using the relationship between the [[Adiabatic Index|Adiabatic Change]] and [[specific heat capacity|Specific Heat Capacity]] for [[constant pressure|Specific Heat Capacity: Constant Pressure]] and [[constant volume|Specific Heat Capacity: Constant Volume]] find the [[specific heat capacity at constant pressure|Specific Heat Capacity: Constant Pressure]].
[[Would you like to know more?|Unit 14 M2 Solution: Step 4]]
The results of a test with a Boy' s calorimeter are as follow:
Volume of gas burned (at standard conditions) $$=0.004 m^3$$
Mass of water heated in the same time $$=1.8 kg$$
Temperature rise of the water $$=20.17 K$$
Specific heat of water $$=4.186 kJ/kg K$$
[[Energy released by condensing water|Specific Enthalpy of Evaporation]] at $$25 ^\circ C, h_e=2441.8 kJ/kg$$
Mass of condensate formed =$$ 6.8 g$$
Calculate the [[gross|Higher Calorific Value (H.C.V.)]] and [[net calorific values|Lower Calorific Value (L.C.V.)]].
!!Solution
<center>
[[Total Energy]] $$(E_t)=m_w c \Delta T$$
$$E_t=1.8 \times 4.186 \times 20.17$$
$$E_t=151.977kJ$$
$$\displaystyle \text{HCV}=\frac{m_w c \Delta T}{V}=\frac{E_t}{V}$$
$$\displaystyle \text{HCV}= \frac{151.977}{0.004}$$
[[HCV|Higher Calorific Value (H.C.V.)]]$$=38 000 kJ/m^3$$
[[Heat released by the condensation|Heat Energy Released by Condensate]] $$(E_{con}) = \text{ condensate mass} (m_{cw})×2441.8kJ$$
$$E_{con}=0.0068×2441.8$$
$$E_{con}=16.604kJ$$
[[Corrected energy|Corrected Energy]] release $$(E_c)=E_t-E_{con}$$
$$E_c=151.977-16.604$$
$$E_c=135.373 kJ$$
$$\displaystyle \text{LCV}=\frac{E_c}{V}$$
$$\displaystyle \text{LCV}=\frac{135.373}{0.004}$$
$$ \text{LCV}= 33 843 kJ/m^3$$
What is the [[efficiency|Efficiency]] from the [[boiler|Boiler]] in the [[question for P6|Unit 14 P6 Example Question]]?
Answers from P6:
Power in=$$150kJ$$
Power out=$$94.185kJ$$
Efficiency:
<center>
$$\displaystyle \eta=\frac{P_{out}}{P_{in}}$$
$$\displaystyle \eta=\frac{94.185}{150}$$
$$\displaystyle \eta=0.627$$
$$\eta=62.7\%$$
$$0.5m^3$$ of air at $$70 kN/m^2$$ and $$15^\circ C$$ are compressed in an engine cylinder to a volume of $$0.08m^3$$. The [[polytropic index|Polytropic Equation]] for the compression is 1.2.
[[Gas Constant]] for air $$R=0.287 kJ/kgK$$
Calculate
#The final [[pressure|Pressure]]<br>[[Would you like to know more|Unit 14 P1 Solution Q1]]<br><br>
#The final [[temperature|Temperature]]<br>[[Would you like to know more|Unit 14 P1 Solution Q2]]<br><br>
#The [[mass|Mass]] of the air in the cylinder. This should be the same at the end of the cycle as the start. Check.<br>[[Would you like to know more|Unit 14 P1 Solution Q3]]<br><br>
!Find the Final Pressure
From the question:
$$P_1=70kn/m^2=70 \times10^3$$<br>
$$V_1=0.5m^3$$<br>
$$T_1=15^\circ C=288K$$<br>
$$V_2=0.08m^3$$<br>
$$n=1.2$$<br>
$$R=0.287 \times 10^3J/kgK$$
We cant use the [[General Gas Law]] as we are left with two unknowns so we can look at an equation which uses the [[polytropic index|Polytropic Index]].
<center>
@@.no-border
| $$P_1V_1^n$$| $$=$$ |$$P_2V_2^n$$ |
|Rearange for $$P_2$$|<|<|
| $$\displaystyle \frac{P_1V_1^n}{V_2^n}$$| $$=$$ |$$P_2$$ |
| $$P_2$$| $$=$$ |$$ P_1\bigg(\frac{V_1}{V_2}\bigg)^n$$ |
| $$P_2$$| $$=$$ |$$\displaystyle70 \times10^3 \times \bigg(\frac{0.5}{0.08}\bigg)^{1.2}$$ |
| $$P_2$$| $$=$$ |$$\displaystyle70 \times10^3 \times 6.25^{1.2}$$ |
| $$P_2$$| $$=$$ |$$631181.208Pa$$ |
!!Find the Final Temperature
Now we can use the [[General Gas Law]] as we only have one unknown.
From the [[question|Unit 14 P1 Example Question]]:
$$p_1=70kN/m^2=70 \times10^3N/m^3$$<br>
$$V_1=0.5m^3$$<br>
$$T_1=15^\circ C=288K$$<br>
$$V_2=0.08m^3$$<br>
$$P_2=631.18kPa= 631.18 \times10^3Pa$$
<center>
$$\displaystyle \frac{P_1V_1}{T_1}=\frac{P_2V_2}{T_2}$$
</center>
Rearrange for $$T_2:$$
<center>
$$\begin{aligned}
\displaystyle
T_2&= \frac{P_2V_2T_1}{P_1V_1} \\ \\
T_2&= \frac{631.18\times 10^3 \times 0.08 \times 288}{70 \times10^3 \times 0.5} \\ \\
T_2&=415.496K
\end{aligned}$$
</center>
!!Find the Mass at the start and finish.
!!!Start
$$p_1=70kn/m^2=70 \times10^3$$<br>
$$V_1=0.5m^3$$<br>
$$T_1=15^\circ C=288K$$<br>
$$R=0.287 \times 10^3J/kgK$$<br>
$$pV=mRT$$
$$\displaystyle m=\frac{pV}{RT}$$<br>
$$\displaystyle m=\frac{70 \times10^3 \times 0.5}{0.287 \times 10^3 \times 288}$$<br>
$$\displaystyle m=\frac{35000}{82656}$$<br>
$$m=0.423kg$$<br>
!!!Finish
$$V_2=0.08m^3$$<br>
$$P_2=631.18kPa= 631.18 \times10^3$$<br>
$$T_2=415.496K$$<br>
$$R=0.287 \times 10^3J/kgK$$<br>
$$\displaystyle m=\frac{pV}{RT}$$<br>
$$\displaystyle m=\frac{631.18 \times10^3 \times 0.08}{0.287 \times 10^3 \times 415.5}$$<br>
$$\displaystyle m=\frac{5049440}{119248.5}$$<br>
$$m=0.423kg$$<br>
A Cylinder fitted with a piston contains $$1kg$$ of a [[perfect gas|Ideal Gas]] at an initial [[pressure|Pressure]], [[temperature|Temperature]] and [[volume|Volume]] of $$1MN/m^2$$, $$250 ^\circ C$$ and $$0.15m^3$$
respectively. The gas expands to four times its initial volume and the pressure
is then found to be $$200kN/m^2$$ at a temperature of $$125 ^\circ C$$.
If the expansion follows the law $$PV^n= \text{constant}$$ find:
#The work done by the gas.<br>[[Would you like to know more?|Unit 14 P2 Solution Part 1]]
#The heat transferred to the gas during the expansion.<br>[[Would you like to know more?|Unit 14 P2 Solution Part 2]]
$$R=188 J/kgK$$
$$c_v=479 J/kgK$$
$$n=1.2$$
!! Step 1
From the [[volume|Volume]] ratio calculate the final volume.
[[Would you like to know more?|Unit 14 P2 Solution Part 1: Step 1]]
!! Step 2
Using the [[polytropic work equation|Work for Polytropic Change]] find the [[work|Work]] being done.
[[Would you like to know more?|Unit 14 P2 Solution Part 1: Step 2]]
From the question:
$$V_1$$ is $$0.15m^3$$ and $$V_2$$ is four times as big so
<center>
$$V_2=4 \times V_1$$
$$V_2=4 \times 0.15$$
$$V_2=0.6m^3$$
The equation for [[work for a polytropic change|Work for Polytropic Change]] is
<center>
$$\displaystyle W=\frac{P_2V_2-P_1V_1}{n-1}$$
</center>
From the question:
$$P_1=1MN/m^2=1MPa=1 \times 10^6Pa$$
$$V_1=0.15m^3$$
$$P_2=200kN/m^2=200kPa=200 \times 10^3Pa$$
and
$$n=1.2$$
[[Previously|Unit 14 P2 Solution Part 1: Step 1]] we have calculated:
$$V_2=0.6m^3$$
Putting numbers into the equation:
<center>
$$\displaystyle W=\frac{(200 \times 10^3 \times 0.6)-(1 \times 10^6 \times 0.15)}{1.2-1}$$
$$\displaystyle W=\frac{120000-150000}{0.2}$$
$$\displaystyle W=\frac{-30000}{0.2}$$
$$\displaystyle W=-150000J$$
</center>
Remember: there is no such thing as negative energy, just energy leaving the system.
[[Would you like to know more?|Unit 14 P2 Solution Part 2]]
We know there is a relationship between [[work|Work]], [[heat|Heat Energy]] and [[internal energy|Internal Energy]] given by $$\Delta U=Q-W$$
We [[previously|Unit 14 P2 Solution Part 1: Step 2]] calculated $$W$$ and we need to find $$Q$$ so we are missing $$U$$.
But we know $$\Delta U =mc \Delta t$$
!!Step 1
Find $$\Delta U$$
[[Would you like to know more?|Unit 14 P2 Solution Part 2: Step 1]]
!!Step 2
Find $$Q$$
[[Would you like to know more?|Unit 14 P2 Solution Part 2: Step 2]]
Find $$U$$
$$\Delta U=mc_v \Delta t$$
From the question
$$m=1kg$$
$$c_v=479 J/kgK$$
$$T_1=250^\circ C$$
$$T_2=125^\circ C$$
As we need a temperature difference we don't need to convert to Kelvin.
<center>
$$\Delta T=T_2-T_1$$
$$\Delta T=125-250$$
$$\Delta T=-125K$$
---
$$\Delta U=mc_vt$$
$$\Delta U=1 \times 479 \times -125$$
$$\Delta U=-59875J$$ or $$-59.9kJ$$
</center>
[[Would you like to know more?|Unit 14 P2 Solution Part 2: Step 2]]
We have calculated $$U$$ and $$W$$ [[here|Unit 14 P2 Solution Part 2: Step 1]] and [[here|Unit 14 P2 Solution Part 1: Step 2]]
$$U=59.9kJ$$
$$W=150kJ$$
<center>
$$\Delta U=Q-W$$
$$Q=\Delta U+W$$
$$Q=59.9+150$$
$$Q=209.9kJ$$
In a [[steady flow system|Flow Systems]], a substance flows at the rate of $$3kg/s$$. The change in [[potential energy|Gravitational or Potential Energy]] is negligible, the change in [[kinetic energy|Kinetic Energy]] is $$42.5kJ$$ and the [[enthalpy|Enthalpy]] is $$791.3kJ$$. The [[change in temperature|Temperature Change]] is $$22 ^\circ C$$.
$$C_v=375 J/kg/K.$$
Calculate the [[power|Power]] required.
[[Would you like to know more?|Unit 14 P3 Solution]]
Using the [[steady flow energy equation|Steady Flow Energy Equation]] (S.F.E.E) we are given the [[kinetic energy|Kinetic Energy]] and the [[enthalpy|Enthalpy]] and told that [[potential energy|Gravitational or Potential Energy]] is negligible.
This is one side of the S.F.E.E. On the other side we have thermal power and power.
In order to solve this we have to imagine pressing pause on the system, then we can ask, what is the [[thermal energy|Heat Energy]] at this instant in time?
We can then use $$Q=mc \Delta t$$ to find the thermal energy which leaves the power as the only unknown.
!!Step 1
Use $$Q=mc \Delta t$$
!!Step 2
Rearange the S.F.E.E. and find P.
[[Would you like to know more|Unit 14 P3 Solution Working Out]]
Finding $$\Phi$$ (we pause the sytem and find the energy in the moment so $$\Phi=Q$$)
From the [[question|Unit 14 P3 Example Question]]
$$m=3kg$$
$$C_v=375J/kg/K$$
$$\Delta T=22 ^\circ C$$
<center>
$$Q=mc \Delta T$$
$$Q=3 \times 375 \times 22$$
$$Q= 24750J \text{ or } 24.8kJ$$
</center>
We can now find $$P$$ from the [[SFEE|Steady Flow Energy Equation]].
From the question
$$K.E.=42.5kJ$$
$$H=791.3kJ$$
$$P.E.=0$$
<center>
$$\Phi + P=\Delta P.E./s+\Delta K.E./s+\Delta H/s$$
</center>
As $$P.E.=0$$ then we can remove it from the equation:
<center>
$$\Phi + P=\Delta K.E./s+\Delta H/s$$
</center>
and rearranging for $$P$$ gives:
<center>
$$P=\Delta K.E./s+\Delta H/s-\Phi $$
$$P=42.5+791.3-24.8$$
$$P=809kW$$
A bomb calorimeter is used to determine the Higher Calorific Value of an oil sample.
The mass of the sample is $$1.01g$$.
The total equivalent mass of water is $$1.32kg$$.
The increase in temperature after ignition is $$ 7.8K$$.
$$1.8g$$ of condensate is formed after it has cooled.
Calculate the higher value
.
The specific heat of water is $$4.186kJ/kg K$$.
!!Solution
<center>
[[Total Energy]] $$(E_t)=M_w c \Delta T$$
$$E_t=1.32×4.186×7.8=43.099 kJ$$
$$\displaystyle \text{H.C.V}=\frac{Energy}{\text{(mass of fuel)}}$$
$$\displaystyle \text{H.C.V}=\frac{43.099}{0.00101}$$
$$\displaystyle \text{H.C.V}=42672 kJ/kg \text{ or } 42.672 MJ/kg $$
#A hot water boiler produces $$0.3kg/s$$ of hot water at $$95 ^\circ C$$ from cold water at $$20^\circ C$$. The boiler burns fuel oil at a rate of $$2.5g/s$$ with a calorific value of $$60 MJ/kg$$.<br>Calculate the thermal energy needed and the thermal energy supplied.<br> [[Would you like to know more?|Unit 14 P6 Solution Part 1]]
#A superheater produces $$30 kg/s$$ of steam at $$100\text{bar}$$ and $$500^\circ C$$ from steam $$98\%$$ dry.<br>Determine the heat transfer to the steam.<br>[[Would you like to know more?|Unit 14 P6 Solution Part 2]]
First we need to find the energy ''needed'' to raise the temperature of the water:
The [[Specific heat capacity of water|Typical Values of Specific Heat Capacity]] is $$4.186kJ/kgK$$.
Pressing //pause //on the system we have:
$$M_w=0.3kg$$
$$c=4.186kJ/kgK$$
$$\Delta t=95-20=75$$
We can use $$Q=mc \Delta t$$ to calculate the energy needed for a $$75 ^\circ C$$
<center>
$$0.3 \times 4.186 \times 75=94.185kJ$$
</center>
Now we find the energy ''supplied'' by the fuel:
From the [[question|Unit 14 P6 Example Question]]
$$\text{Mass of fuel} =2.5g=2.5 \times 10^-3kg$$
$$\text{calorific value}=60MJ/kg= 60 \times 10^{6}J$$
$$\text{heat energy}=m_f \times \text{calorific value}$$
<center>
$$2.5 \times 10^{-3} \times 60 \times 10^6=150kJ$$
First we need to look up the [[enthalpy|Enthalpy]] of [[superheated steam|Superheated Steam]] from [[superheat steam tables|Sample of Steam Tables for Superheated Steam]] and [[saturated water and steam tables|Sample of Steam Tables for Saturated Water and Steam]].
From Tables:
Entahlpy of superheated steam= $$3374kJ/kgK$$
$$h_f=1408kJ/kgK \text{ at } 100 \text{ bar}$$
$$h_{fg}=1317kJ/kgK \text{ at } 100 \text{ bar}$$
From the [[question|Unit 14 P6 Example Question]]:
$$\text{dryness} = 98\%=x=0.98$$
$$m=30kg$$
<center>
$$h_1=h_f+(x \times h_{fg})$$
$$h_1=1408+(0.98 \times1317)$$
$$h_1=2698.66kJ/kgK$$
</center>
The heat transfer is the energy each second, i.e. the power.
<center>
$$\phi = m \Delta h$$
$$\phi = m \times (\text{entahlpy of super heated steam} - h_1)$$
$$\phi = 30 \times (3374 - 2698.66)$$
$$\phi= 20260.66 \dot{6}Kw \text{ or } 20.26MW $$
A steam turbine is supplied at $$100 \text{bar}$$ and $$400 ^\circ C$$. The steam exits the turbine at $$0.07 \text{bar}$$ and dryness fraction $$0.73$$. The flow rate of steam is $$55 kg/s$$.
Calculate the [[power|Power]] output from the turbine assuming 100% energy transfer from the steam.
[[Would you like to know more?|Unit 14 P7 Solution]]
From the [[superheated steam tables|Sample of Steam Tables for Superheated Steam]] the [[enthalpy|Enthalpy]] of the steam at $$100 \text{bar and } 400^\circ C$$ is:
$$h = 3096 kJ/kg$$
for the steam leaving we need the [[saturated water and steam tables|Sample of Steam Tables for Saturated Water and Steam]]:
$$h_f=163kJ/kgK$$
$$h_{fg}=2409kj/kgK$$
and from the [[question|Unit 14 P7 Example Question]]:
$$x=0.73$$
The specific enthalpy of wet steam is:
<center>
$$h = h_f + x h_{fg}$$
$$h=163 + 0.733(2409)$$
$$h = 1928 kJ/kg$$
</center>
From the question:
$$\text{Mass flow rate of steam } (m_s) =55kg/s$$
The power out of the turbine is will be the same as the [[heat energy transfer|Heat Energy Transfer]] from the [[steam|Steam]]:
<center>
$$P=m_s \Delta h$$
$$P=55 \times (\text{enthalpy out}- \text{enthalpy in})$$
$$P=55(1928-3097)$$
$$P=-64.3MW$$
</center>
The minus sign indicate energy leaving the system.
[[Wet steam|Wet Steam]] at $$10 \text{bar}$$ is throttled to $$1 \text{bar}$$ where it’s [[temperature|Temperature]] is found to be $$100^\circ C$$.
Determine the [[dryness fraction|Dryness Fraction]] before throttling.
[[Would you like to know more?|Unit 14 P8 Solution]]
From [[steam tables for throttling|Sample of Superheat Table for Use With Throttles]]:
After throttling:
$$h_2=2676.2kJ⁄kg$$
Before throttling from [[saturated steam tables|Sample of Steam Tables for Saturated Water and Steam]]:
$$h_f=763kJ/kgK$$
$$h_{fg}=2015$$
<center>
$$h_1=h_f+xh_{fg}$$
$$h_1=763+x \times 2015$$
Equating $$h_l$$ and $$h_2$$:
$$763 + x(2015) = 2676.2$$
$$x \times 2015=2676.2-763$$
$$x \times 2015=1913.2$$
$$\displaystyle x=\frac{1913.2}{2015}$$
$$x=0.9495$$
<<list-links "[tag[Unit 15]]">>
<$tidgraph start="Unit 15" />
1. Calculate the pressure in Pascal ''AND'' bar resulting from a force of $$4500N$$ acting on a piston area of $$0.03m^2$$
2. Calculate the force that a mass of $$1568kg$$ exerts onto a platform upon which it rests.<br>
3. A double acting cylinder is to be used to clamp work pieces. The piston has a diameter of $$128mm$$ and the required clamping force is $$7525N$$. Determine the system air pressure required. <br>
4. A pneumatic reservoir is supplied with fluid at a pressure of $$3 \text{Bar}$$ and has a volume of $$0.25m^3$$. As it’s a hot day and the air conditioning has failed the temperature of the air in the reservoir increases from $$19^\circ C$$ to $$25^\circ C$$ what is the change in pressure?<br>
5. Due to a poor maintenance a pneumatic SAC with a faulty exhaust port is experiencing a pressure build up of $$6 \text{Bar}$$. Perhaps foolishly, the maintenance technician is applying heat to the SAC in the hopes that the increased pressure inside the SAC will pop the gack/gunk out of the exhaust port. As they wield the blowtorch the temperature climbs to $$120^\circ C$$ from a balmy $$18^\circ C$$. If the volume of air is $$0.1m^3$$ what is the pressure in this moment before scalding gack/gunk ejects from the port at high velocity and health and safety has to be informed<br>
6. Fluid is pumped through a hydraulic system at a velocity of $$1.5m/s$$ and a pressure of 0.60Bar. The pressure needed on a lower level needs to be $$0.30\text{Bar}$$, how far must the pipe drop to achieve this? Assume water is being used with a density of $$1000kg/m^3$$ and that velocity does not change.
Use Bernoullis Equation:
<center>
$$\frac{1}{2}\rho v_1^2+\rho gh_1+P_1=\frac{1}{2}\rho v_2^2+\rho gh_2+P_2$$
</center>
[[Would you like to know more?|Unit 15 P5 Solutions]]
Examine how the forces acting in pin-jointed framed structures influence their structural integrity.
!!!Recommended assessment approach
A report containing graphical and mathematical modelling relating to the analysis of given pin-jointed structures.
[[Unit 27 A (All)]]
<$tidgraph start="Unit 27 A" />
{{Unit 27 A}}
{{Unit 27 A1: Static Parameters}}
{{Unit 27 A2: Analysis of Statically Determinate Framed Structures}}
{{Unit 27 A Pass}}
{{Unit 27 A Merit}}
{{Unit 27 A Distinction}}
!27A.D1
Demonstrate accurately the most appropriate method for finding the forces in the central members of a pinjointed framed structure, justifying the rationale.
!!For distinction standard
Learners will select a suitable cutting plane so that the forces in a small number of internal members can be determined accurately using the ‘method of sections’. The values of these forces will be compared with those found by the analysis of the framework and graphical representation (refer to the pass standard for further details). In addition to the mathematical work, learners will evaluate, in a wider context, the reasons for using the method of sections and for the given framework, and comment on the suitability of the method as compared to the analytical and graphical methods.
Overall the evaluation will be easy to read and understand by a third party who may or may not be an engineer. For example, it will be logically structured, use the correct technical engineering terms and will contain high-quality written language, for example it will be grammatically clear.
!27A.M1
Determine accurately the magnitude and nature of the primary forces acting in the components of a pin-jointed, statically determinate framed structure.
!!For merit standard
Evidence will include a graphical and mathematical analysis to a high degree of accuracy. For each member there must be correct tabulation of the force that it carries and designation of whether it is either a tie or a strut. Overall, the analysis will be logically structured, technically accurate and easy to understand. Figures produced by the two methods will be broadly equivalent and if there are major differences learners will go back through their work, identifying where there are errors, and complete any necessary rework.
!27A.P1
Determine graphically the support reactions and primary forces acting in the members of a pin-jointed, statically determinate framed structure.
!27A.P2
Calculate the support reactions and primary forces acting in the components of a pin-jointed, statically determinate framed structure.
!!For pass standard
The graphical analysis of a pin-jointed framework that has two support reactions (one pinned and one roller) will include a scale drawing that will have been used to generate space, and reciprocal force diagrams that are correctly annotated using the accepted conventions, for example, Bow’s notation for labelling the spaces between the external forces, support reactions and structural members. There will be evidence of a check having been carried out to ensure that the framework is statically determinate.
Using the same framework, learners will also carry out a mathematical analysis using the method of joint resolution. The framework will be configured so that for each joint the forces in the members attached to it can be resolved horizontally and vertically. Learners can present a sketched space diagram for the structure which will be marked up with force direction arrows as they work sequentially through the framework.
Overall, in the graphical analysis there may be some minor scaling errors when reading off and determining the tensile or compressive force carried by each member, and in the mathematical analysis there may be minor mathematical errors. Learners will not be penalised for ‘carry-through’ errors.
!A1
*Framework components: members and pins.
*Conditions for static equilibrium: $$\Sigma Fx = 0, \Sigma Fy = 0, \Sigma M = 0$$
*Two-dimensional framed structures: stable and unstable.
*Statically determinate structures: members (m), joints (j), determinate and indeterminate condition, $$(m + 3) <=> 2j$$ test, redundancy.
*Loading configurations: vertical force, angled force, gravitational force $$(F_g = mg)$$
*Fixed (pin) and rolling framework support reactions.
*Pin and rigid framework joints.
*Resolution of forces into horizontal ($$F_x = F\cos \theta$$) and vertical components ($$F_y = F\sin \theta$$)
*Primary compressive and tensile forces in structural members.
*Types of member in a framed structure: struts and ties.
!A2
!!!Graphical method, including:
*Ggraphical analysis method – scale and accuracy.
*Space diagram – labelling joints including uppercase lettering to code members and Bow’s notation including labelling with uppercase lettering, with spaces separating adjacent forces.
*Funicular polygon to determine support reactions.
*Reciprocal (vector) diagram – choice of starting point (a joint with no more than two unknown forces), annotation of diagram with lowercase lettering.
*Sequential analysis of the framed structure – annotation of a space diagram with arrows to show the direction of forces in a member.
*Tabulation of forces – member code, vector code, force including magnitude and type, type of member (strut or tie).
!!!Analytical method, including:
*Space diagram – labelling joints using uppercase lettering.
*Determination of support reactions and choice of starting point, e.g. a joint with no more than two unknown forces.
*Resolution of forces into components at first joint and determination of forces.
*Sequential joint resolution, including the annotation of a space diagram with arrows to show the direction of forces in members.
*Tabulation of forces – member code, forces including magnitude and type, type of member (strut or tie).
*Method of sections – selecting an appropriate cutting plane position, annotation of force directions, coding of cut members, determination and tabulation of forces.
Explore safely the shear forces and bending moments in simply supported and cantilever beams.
!!!Recommended assessment approach
A portfolio of results gathered by experimentation when investigating given beam configurations, supported by a logbook, images, observation records and graphical and mathematical modelling (including differential calculus).
[[Unit 27 B (All)]]
<$tidgraph start="Unit 27 B" />
{{Unit 27 B}}
{{Unit 27 B1: Beam Parameters}}
{{Unit 27 B2: Theoretical Beam Analysis}}
{{Unit 27 B3: Experimental Beam Analysis}}
{{Unit 27 B Pass}}
{{Unit 27 B Merit}}
{{Unit 27 B Distinction}}
!27B.D2
Evaluate the simple and complex loads acting on simply supported and cantilever beams, comparing the results from safely conducted experiments and theoretical calculations, and suggest improvements to the experimental method used.
!!For distinction standard
Learners will present a detailed evaluation of the results from safely conducted experiments and theoretical analysis, and justify the differences between them. They will have theoretical calculations and diagrams that are accurate and will use these as a benchmark
against which to judge their experimental findings. They will consider aspects such as accuracy of measuring equipment, methods used and ways to improve the experimental methods if repeated. If there are major differences between experimental and theoretical results, there will be a balanced evaluation of why this happened.
Overall, the experimental reports will be logically structured and use the correct technical engineering terms, and will contain high-quality written language, for example it will be grammatically clear.
!27B.M2
Conduct experiments accurately to determine the shear forces and bending moments in simply supported and cantilever beams when subjected to simple and complex loading.
!27B.M3
Analyse, using experimental results and theoretical calculations, the shear forces and bending moments in simply supported and cantilever beams when subjected to simple and complex loading.
!!For merit standard
Learners will conduct accurate experimental work, to include selecting measuring equipment that has the appropriate resolution, and will record results methodically. The practical work will involve a combination of simple and complex loading, which will take the form of at least two point loads and one uniformly distributed load.
Overall, the analysis will be logically structured, technically accurate and easy to understand. Theoretical calculations and the annotation of shear force and bending moment diagrams must be accurate and conform to accepted conventions, for example, a positive bending moment indicating sagging.
!27B.P3
Conduct experiments safely to determine the shear forces and bending moments in simply supported and cantilever beams when subjected to simple loading.
!27B.P4
Explain, using experimental results and theoretical calculations, the shear forces and bending moments in simply supported and cantilever beams when subjected to simple loading.
!!For pass standard
Learners will conduct experimental work on a simply supported beam carrying at least three simple (point) loads and set up in two configurations – with overhang and without overhang. Learners will conduct similar experiments with a cantilever beam carrying at least two simple (point) loads.
Overall, learners’ evidence will be logically structured and there may be some minor numerical and diagrammatic errors, and minor inaccuracies relating to the engineering terminology used. The explanation of each experiment will include hand-drawn, to-scale diagrams that are annotated with relevant figures, for example maximum and minimum values. Theoretical calculations will also be included, but there may be minor numerical and diagrammatic errors.
!B1
*Reactions, including built-in and simply supported.
*Sign conventions for shear forces, either positive or negative.
*Sign conventions for bending moments, including positive and negative, sagging and hogging.
*Simple loading, including concentrated (perpendicular to beam axis) and effective beam mass.
*Complex loading including concentrated (angled to beam axis), uniformly distributed load (UDL) and distributed beam mass.
!B2
*Simply supported beams with and without overhang.
*Simple cantilever beams.
*Beam support reactions, graphically by funicular polygon and analytically by taking moments.
*Shear forces, including presentation in diagrammatic form and identification of maximum values.
*Bending moments, including presentation in diagrammatic form and identification of maximum and minimum bending moments, points of contraflexure.
*(Applying differential calculus (max/min theory) to the analysis of beams carrying point and uniformly distributed loads to determine the magnitude and position of the maximum bending moment.
!B3
*Function and operation of test equipment for measuring shear forces and bending moments in loaded structures, including loading configurations, force sensing, and resolution.
*Selecting and setting up equipment, including loading configurations, dimensional parameters and force sensing.
*Effects of point loads.
*Effects of uniformly distributed loads.
*Effects of point and uniformly distributed loads on a structure.
*Measurement and recording of shear forces.
*Measurement and recording of bending moment data.
*Presentation of experimental results and comparison against theoretical analysis.
Examine how axial, bending and shear loading affect the design of structural components.
!!!Recommended assessment approach
A report containing mathematical modelling relating to the analysis of the stresses and strains in given structural components.
[[Unit 27 C (All)]]
<$tidgraph start="Unit 27 C" />
{{Unit 27 C}}
{{Unit 27 C1: Axial Loading}}
{{Unit 27 C2: Bending Loading}}
{{Unit 27 C3: Shear Loading}}
{{Unit 27 C4: Design Considerations}}
{{Unit 27 C Pass}}
{{Unit 27 C Merit}}
{{Unit 27 C Distinction}}
!27C.D3
Optimise the physical parameters of a structure ensuring that it is fit for purpose when subjected to axial, bending and shear loading.
!!For distinction standard
Learners will present ideas, supported by detailed, accurate calculations, about how to optimise the design of the structure, so that for a given loading condition the best use is made of the available materials, for example, replacing a solid rectangular cross-section beam with a hollow one to reduce mass. In addition, learners will consider features such as strength to weight ratio, factors of safety, and high-strength materials. There may be some repetition of calculations; this can be done using a spreadsheet provided that formulae are visible (printed out) and the use of functions like ‘goal seek’ are acknowledged. Evidence will include correctly annotated sketches to support the mathematical analysis (modelling) of the structures.
Overall, the evidence will be logically structured, use the correct technical engineering terms and will contain high-quality written language, for example it will be grammatically clear.
!27C.M4
Analyse accurately the axial stress produced in a rigidly held complex structural component when subjected to a combination of axial loading and temperature change.
!27C.M5
Develop accurately a design for a complex structure that does not fail when subjected to bending and shear loading.
!!For merit standard
Learners will work with load and temperature data (as used throughout the assignment), but applied to different structural design configurations, for example, two flat plates separated with an aluminium tube spacer and held together with a steel bolt passing through the plates and spacer, and tightened with a nut. Calculations will be accurate and correctly presented using appropriate engineering notation and units.
Learners will review the stress data (refer to the pass standard for further details) and improve the accuracy of the design of the given structure, so that it is able to withstand the applied loads safely. For example, the design could include increasing the cross-sectional area of a beam or putting in more pins to withstand shear loading. Learners will demonstrate that the structure is able to withstand the applied loads by recalculating the stresses accurately.
Overall, calculations will be accurate and the evidence logically structured, with appropriate engineering terminology and units.
!27C.P5
Calculate the axial stress produced in a rigidly held simple structural component when subjected to a combination of axial loading and temperature change.
!27C.P6
Calculate the maximum bending stress, the factor of safety in operation and the minimum radius of curvature for a simply supported beam carrying concentrated and uniformly distributed loads.
!27C.P7
Calculate the maximum shear stress for a single shear lap joint and a double shear butt joint for given loading.
!!For pass standard
Learners will present two sets of calculations. The first calculations determine the tensile or compressive stress in an axial-loaded simple component, for example a hollow support strut used in a gantry. The second calculations are to consider the effects of temperature change, if the component is assumed to have fixed ends. The analysis will have the correct interpretation of given data, correct use of formulae and presentation of logical steps to a solution.
Learners will undertake bending and shear stress calculations, and demonstrate analysis through correct interpretation of given data, correct use of formulae and presentation of logical steps to a solution. The stress analysis of riveted or pinned joints will be presented as annotated sketches and calculations.
Overall, the analysis will contain correct interpretation of the given data, correct use of formulae and be logically structured. There may be minor mathematical errors and learners will not be penalised for carry through errors.
!C1
*Elasticity, plasticity, Young’s modulus of elasticity, tensile strength, safe working stress, factor of safety.
*Structural components, including simple bars, complex (compound) bars with series configuration, parallel configuration and different materials.
*Effects of axial loading on structural components, including internal stress, strain, and material dimensional change.
*Effects of temperature change on fixed-end structural components, including thermal stress.
!C2
*Neutral axis, stress distribution, second moment of area for solid and hollow rectangular sections, bending stress, Young’s modulus, radius of curvature.
*Bending equation $$\Big(\dfrac{\sigma}{y}=\dfrac{M}{I}=\dfrac{E}{R} \Big)$$, including application to the analysis of simply supported and cantilever beams.
*Determination of bending stresses for given loading configurations and bending moment data.
*Beam efficiency, including width/depth ratio, load carrying ability, factor of safety, beam mass.
!C3
*Single and double shear loads for bolted and riveted joints.
*Joint parameters including butt, lap, number of rivets or bolts, shear load, bolt and rivet diameters.
*Shear stress and strain in joints, shear modulus, tensile strength, factor of safety.
!C4
*Published reference data including the mechanical and physical properties of engineering materials, second moments of area.
*Design parameters, including tensile and compressive strength, safe working stress, factor of safety.
*Design efficiency, including optimisation of physical parameters to meet load carrying and safety requirements.
<$tidgraph start="Unit 27 Worked Examples Assignment 1" />
<$tidgraph start="Unit 27 Worked Examples Assignment 2" />
<$tidgraph start="Unit 27 Worked Examples Assignment 3" />
<$tidgraph start="Unit 27:Static Mechanical Principles in Practice" />
Examine business functions and trade considerations that help engineering organisations thrive.
!!!Recommended assessment approach
A written report that evaluates how key business activities and trade considerations influence a local engineering organisation and can create competitive advantage.
[[Unit 4 A (All)]]
<$tidgraph start="Unit 4 A" />
{{Unit 4 A}}
{{Unit 4 A1: Business Functions and Key Activities}}
{{Unit 4 A2: Trade Considerations}}
{{Unit 4 A3: Competitive Advantage}}
{{Unit 4 A Pass}}
{{Unit 4 A Merit}}
{{Unit 4 A Distinction}}
!4A.D1
Evaluate, using language that is technically correct and of a high standard, how key business activities and trade considerations combine to influence an engineering organisation, which can create a competitive advantage.
!For distinction standard
Learners will provide a balanced and thorough evaluation of how key business activities and trading considerations combine to influence an organisation. The evaluation will explore, for example, the joint decision of finance, purchasing and operations functions within the organisation to outsource an activity or service, the consideration of whether the organisation has the resources to undertake the activity in-house, and, if suitable suppliers are available, whether they would be able to meet the expectations of the organisation, and agree suitable trading terms. Learners will evaluate whether the use of outsourcing would give the organisation a competitive advantage, for example by lowering costs.
Overall, the evaluation will use correct technical terms, be easy to read and be logically structured. It will be written in a way that is easy to understand for a third party who may or may not be an engineer.
!4A.M1
Analyse how key business activities and trade considerations influence an engineering organisation, which can create a competitive advantage.
!!For merit standard
Learners will provide a thorough analysis of business activities and trading considerations, using examples to demonstrate that a range of factors impact on the organisation. For example, learners will explain how decisions regarding staff recruitment made by the HR function will impact on financial cash flow. Also, learners will explain the purpose of intellectual rights and how the protection of such rights can be used by engineering organisations to develop a competitive advantage, for example by protecting a brand name through the use of trademarks.
Overall, the analysis will be logically structured and use correct technical terms.
!4A.P1
Explain how key business activities influence an engineering organisation.
!4A.P2
Explain how trade considerations influence an engineering organisation.
!!For pass standard
Learners will explain how key business activities influence an engineering organisation. For example, learners will explain that the finance function produces a range of financial statements, such as profit and loss reports, to determine the financial viability of the organisation.
Learners will also explain how tendering, contracting and other trade related considerations influence a business organisation. For example, learners will identify and explain the main terms used in contracts or the types of documents used for contracts and tenders, and how these are used by the organisation. For intellectual rights, learners will explain how each of the intellectual rights is used, and how this could benefit the organisation.
Overall, the evidence will be logically structured, and make appropriate use of technical terms. Some explanations may have minor technical inaccuracies, such as using the term ‘warranties’ when ‘guarantees’ is more appropriate.
!A1
Functions within an engineering organisation, including human resources (HR), finance, sales, marketing, operations, research and development, and purchasing.
Key activities of business functions, to include:
*Manufacturing of products and delivering services, e.g. forming, fabrication, removal of material, addition of material, assembly processes, quality control.
*Supply chain management, e.g. outsourcing decisions, supplier appraisal.
*Marketing and sales, e.g. brand awareness, market research, sales, customer feedback.
*Customer relations, e.g. meeting expectations, being proactive.
*Resource management, e.g. sources of funding, resource allocation, stock control.
*Staff recruitment, e.g. internal and external recruitment, apprenticeships.
*Staff management, e.g. appraisals, support and training (continuing professional development).
*Financial, e.g. financial statements (profit and loss, break-even).
!A2
Tendering and contracting, or other relevant international equivalents, including:
*Terms, both expressed and implied, e.g. breach of contract, force majeure.
*Warranties and conditions, e.g. indemnities, guarantees, insurance.
*Consequences of non-performance, e.g. rejection of goods/services, financial penalty clauses.
*Documentation, e.g. drawings, estimates, quotations, specifications.
*Definition and purpose of intellectual property rights, including patents, registered designs and trademarks.
!A3
Competitive advantage is the term used to describe what an organisation does that allows it to
outperform competitors. It can be created by all functions and/or any combination of activity and
trade consideration:
*By innovating.
*Using new technology.
*Protecting intellectual property.
*Managing costs.
<iframe width="560" height="315" src="https://www.youtube.com/embed/O-Niq82qwSE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Explore activity-based costing as a method to control costs and to determine if an engineering product or service is profitable.
!!!Recommended assessment approach
A research and problem solving project to explore the costs associated with engineering activities and the completion of an activity-based cost model for a product or service.
[[Unit 4 B (All)]]
<$tidgraph start="Unit 4 B" />
{{Unit 4 B}}
{{Unit 4 B1: Reasons for Cost Control and Types of Costs}}
{{Unit 4 B2: Activity-Based Costing Method}}
{{Unit 4 B Pass}}
{{Unit 4 B Merit}}
{{Unit 4 B Distinction}}
!4B.D2
Produce an accurate and refined activity-based costing model, during the process, for a product or service to determine the major cost areas that could impact on profitability, explaining the reasons for cost controls.
!!For distinction standard
learners will produce an accurate activity-based cost model for a given engineering product or service. The model will include all of the engineering activities that contribute to the output and will assign the majority of these correctly to appropriate cost types. Learners will explain the reasons for producing an activity-based cost model, for example as part of an investment decision-making process to evaluate how costs could be reduced.
Overall, the activity-based cost model and evidence will be clearly presented, and use correct technical terminology throughout. The model may contain some minor arithmetic and/or follow-through errors.
!4B.M2
Produce accurately an activity-based cost model for an engineering product or service, explaining the reasons for cost controls.
!!For merit standard
learners will produce an accurate activity-based cost model for a given engineering product or service. The model will include all of the engineering activities that contribute to the output and will assign the majority of these correctly to appropriate cost types. Learners will explain the reasons for producing an activity-based cost model, for example as part of an investment decision-making process to evaluate how costs could be reduced.
Overall, the activity-based cost model and evidence will be clearly presented, and use correct technical terminology throughout. The model may contain some minor arithmetic and/or follow-through errors.
!4B.P3
Explain why an engineering organisation controls costs.
!4B.P4
Produce an activity-based cost model for an engineering product or service.
!!For pass standard
Learners will explain how key business activities influence an engineering organisation. For example, learners will explain that the finance function produces a range of financial statements, such as profit and loss reports, to determine the financial viability of the organisation.
Learners will also explain how tendering, contracting and other trade related considerations influence a business organisation. For example, learners will identify and explain the main terms used in contracts or the types of documents used for contracts and tenders, and how these are used by the organisation. For intellectual rights, learners will explain how each of the intellectual rights is used, and how this could benefit the organisation.
Overall, the evidence will be logically structured, and make appropriate use of technical terms. Some explanations may have minor technical inaccuracies, such as using the term ‘warranties’ when ‘guarantees’ is more appropriate.
!B1
Reasons for cost control:
*Identifying hidden costs and managing all costs.
*Informed decision making, e.g. investment, withdrawal, make or buy.
*Improving competitiveness.
Types of costs, including:
*Direct costs, e.g. raw materials, work in progress (WIP), direct labour costs.
*Indirect costs, e.g. energy, insurance, wages, consumables.
*Variable costs, e.g. raw materials, consumables.
*Semi-variable costs, e.g. overtime costs, commission, maintenance.
*Fixed costs, e.g. overheads, rent, machinery costs, depreciation, insurance.
*General/administration costs, e.g. human resources (HR), finance and information technology.
!B2
Stages of implementing activity-based costing:
*Identifying activities, including the processes and activities required to produce an output.
*Assigning resource costs to activities, including direct costs, indirect costs and general/administration costs.
*dentifying outputs, including products, services or customers.
*Assigning activity costs to outputs, including using activity drivers to assign costs to outputs (cost objects).
*Aactivity cost pools, including material handling, set-up costs, and procurement.
*Application of activity-based costing to determine profitability.
Explore how engineering organisations use quality systems and value management to create value.
!!!Recommended assessment approach
A research activity to explore quality systems and value management processes. In addition, an applied value analysis exercise to determine if further value can be created from an engineering product or service.
[[Unit 4 C (All)]]
<$tidgraph start="Unit 4 C" />
{{Unit 4 C}}
{{Unit 4 C1: Quality Systems}}
{{Unit 4 Unit 4 C2: The Principles and Processes of Value Management}}
{{Unit 4 C Pass}}
{{Unit 4 C Merit}}
{{Unit 4 C Distinction}}
!4C.D3
Evaluate the outcome of a value management exercise for a given engineering activity and make recommendations which include the use of quality systems to implement efficiencies in the engineering activity.
!!For distinction standard
For distinction standard, learners will use evidence to evaluate the outcomes of a value analysis exercise and consider the results alongside the use of quality management systems. They will identify and explain, using evidence, how efficiencies can be made for a given engineering product or service. Learners will evaluate how quality management tools, such as the ISO 9000 and ISO 14000 groups of international standards can improve a given engineering activity. For example, learners may include how the problem will be defined and the data collected during the planning stage, a solution will be developed during the implementation stage, comparisons to the original process will be considered during the checking stage, and recommendations should be made in the acting stage. Learners will use the findings of this activity, in conjunction with the outcomes of a value analysis activity, to evaluate methods of implementing efficiencies for an engineering activity. They will identify where there is scope to improve quality or where meeting aspects of the ISO 9000/14000 standards will bring an improvement to the product or service.
Learners will complete a value analysis exercise for the same product or service and present their results covering the appropriate phases of the process. An example would be a simple engineered product where the cost of the product is the amount paid to manufacture it, its value is how much it is worth, value added activities include machining and processing, and non-value added activities such as transportation or inspection and testing are also included. Learners will include a functional analysis of the processes involved in producing the outcome, for example considering if different materials which offer better value could be used, with the results being used to generate
alternatives which would offer better value solutions. They will use their analysis to identify where waste, such as excessive manufacturing techniques, occurs during the activity, and identify improvements that could be made to the process to improve efficiency and develop a lower-cost alternative solution.
Finally, learners will evaluate their findings from the quality management activity and the value analysis task to identify which areas can increase the profitability and efficiency of the process being investigated. They will suggest methods to improve the activity, and prioritise those aspects that will offer the greatest benefit to the organisation.
Overall, the evidence will be logically structured and clearly presented. The evaluation will be written using accurate technical language.
!4C.M3
Analyse the purpose of different quality management systems and value management used by engineering organisations.
!4C.M4
Complete accurately a value analysis exercise on a given engineering process.
!!For merit standard
Learners will analyse the quality management and value analysis tools that an engineering organisation uses to improve efficiency and gain a competitive advantage. For example, learners will analyse the potential benefits of implementing a quality system for an activity and how this would relate to the quality assurance and control checks that are already applied to the process. Learners will evaluate what may be achieved by gaining ISO 9001 accreditation and continue to analyse the reasons why value management methods, such as value analysis, are applied to the same engineering activities.
Learners will complete an accurate value analysis exercise for a given engineered product or service. The major value added and non-value added activities will be identified, with cost assumptions for each being made. Learners will produce ideas to improve the value of the processes, for example by suggesting the use of standardised components or removing some non-value added features of the product or service. Overall, the value analysis and associated report will be clearly presented and use correct technical language throughout. The value analysis will be accurate, but may omit some minor aspects of the engineering activity.
!4C.P5
Explain the purposes of different quality management systems and value management used by engineering organisations.
!4C.P6
Complete a value analysis exercise on a given engineering process.
!!For pass standard
Learners will explain how an engineering organisation can use quality and value management systems to create a competitive advantage. For example, learners will explain that quality assurance and quality control are used to improve the outcomes of the product or service, and will give the organisation a competitive advantage, as the product or service being provided will then have greater value. Learners will make reference to relevant ISO standards, such as the ISO 9000 group, which offer engineering organisations the potential to improve quality. Further, they will explain that improving the efficiency of the activity will also improve the competitiveness of the organisation by increasing the value of the outcome compared to the initial cost.
Learners will complete a value analysis exercise for a given engineered product or service. Most of the key stages of the process will be identified, with costs associated to each activity. There may be some errors, and some non-value added activities may be missed, but overall the analysis will result in the identification of opportunities for a better value solution.
!C1
Quality standards and accreditation include international quality standards that can be
applied for voluntarily by engineering organisations, allowing them to show that they have
quality management systems in place. Quality standards associated with engineering
activities include:
The International Organization for Standardization (ISO) 9000 series, a quality assurance system for the manufacturing and service industries, including:
*ISO 9000 – knowledge of the 20 requirements for a quality management system.
*ISO 9001 – a planning tool for quality, and to support continual improvement.
The ISO 14000 series, an environmental management system, including:
*ISO 14001 –a method of reducing waste.
*ISO 14006 – to improve product quality in an environmentally positive way.
*ISO 14040 series – for life-cycle assessments.
Quality assurance:
*Definition –planned activities to ensure that the quality requirements of a product or service are met.
*Quality assurance as a company-wide philosophy.
*Total quality management (TQM) – PDCA cycle (plan, do, check, act).
Purposes of implementing a quality system, including:
*Benchmarking against other organisations.
*Ensuring consistency of processes.
*Ensuring conformity of the product or service to a standard.
*Reducing unnecessary waste, e.g. inventory, over processing and over production.
*Improving the effectiveness of the engineering organisation.
*Gaining a competitive advantage.
*Achieving customer satisfaction.
*Ensuring that a product or service is fit for purpose.
Quality control:
*Definition – the testing and monitoring of activities that are used to check the quality of a product or service outcome.
*Inspection, sampling and testing.
*Condition monitoring, e.g. vibration or thermal analysis.
*Planned maintenance.
*Applying a ‘right first time’ philosophy.
!C2
Principles of value management:
*Definitions of cost, value, value added and non-value added activities.
*Concepts of function, process and product.
*Reasons for poor value, e.g. lack of innovation, poor communication.
Phases in the process of carrying out a value analysis exercise on a product or service:
*Information phase, e.g. identification of key issues, identification of added and non-value added processes, and cost overviews.
*Analysis phase, e.g. functional analysis, which existing processing methods are used, identifying features or parts which are unnecessary.
*Creative phase, e.g. generating alternatives for better value solutions, problem-solving tools and methods, developing a least-cost solution.
*Evaluation phase, e.g. assessing and prioritising ideas.
*Development and reporting phase, e.g. refining ideas and developing action plans.
<$tidgraph start="Unit 5 Assignment 1" />
<$tidgraph start="Unit 5 Assignment 2" />
<$tidgraph start="Unit 5 P5 Example Question" />
<$tidgraph start="Unit 5 P6 Example Question" />
<$tidgraph start="Unit 5 P7 Example Question" />
<h2>Step 1</h2>
Using the information from the question you can use the [[SUVAT]] equations. You should be able to calculate the [[velocity|Velocity]] of the hammer in the instant before it hits the pile.<br>
[[Would you like to know more?|Unit 5 D1 Step 1]]
<h2>Step 2</h2>
Use the law of [[conservation of momentum|Conservation of Momentum]] to calculate the velocity of the pile once the hammer has hit and then the [[decceleration|Acceleration]] as the hammer and pile comes to a stop can be calculated. <br>
[[Would you like to know more?|Unit 5 D1 Step 2]]
<h2>Step 3</h2>
Draw the force diagram. The forces are the gravitational force on the pile and the hammer and the force due to the deceleration of the hammer. The opposing force is the resistance of the ground to the impact. Apply D’Alembert.<br>
[[Would you like to know more?|Unit 5 D1 Step 3]]
Using [[SUVAT]] equation to calculate the [[velocity|Velocity]] of the hammer in the moment before impact.
<center>
@@.no-border
| $$v^2$$| = |$$u^2+2as$$ |
| $$v^2$$| = |$$0+2\times 9.81\times 5$$ |
| $$v^2$$| = |$$98.1$$ |
| $$v$$| = |$$\sqrt{98.1}$$ |
| $$v$$| = |$$9.9m/s$$ |
{{Unit 5 M2 Step 2}}
We can now find the deceleration of the pile/ hammer combo.<br>
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$v^{2}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$u^{2}+2as$$</td>
</tr>
<tr>
<td class="tg-0ord">$$0$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$2.7^2+2\times a\times 75\times 10^{-3}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$a$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{-7.29}{2\times 75\times 10^{-3}}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$a$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$-48.6m/s$$</td>
</tr>
</table>
</center>
The minus sign indicates deceleration.
D’Alembert says the sum of the forces must equal zero. <br>
<center>
[img[http://steacher.droppages.com/diagrams/D2_Freebody_diag.svg]]
<table class="no-border">
<tr>
<td class="tg-0ord">$$F_{grav}+F_{accel}+F_{resist}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$0$$</td>
</tr>
<tr>
<td class="tg-h0x1">First the force due to gravity.</td>
<td class="tg-s6z2"></td>
<td class="tg-h0x1"></td>
</tr>
<tr>
<td class="tg-0ord">$$F_{grav}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$mass\times gravity$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_{grav}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$550\times -9.81$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_{grav}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$-5395.5N$$</td>
</tr>
<tr>
<td class="tg-h0x1">Next the force of the deceleration.</td>
<td class="tg-s6z2"></td>
<td class="tg-h0x1"></td>
</tr>
<tr>
<td class="tg-0ord">$$F_{accel}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$m\times a$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_{accel}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$550\times -48.6$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_{accel}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$-26730N$$</td>
</tr>
<tr>
<td class="tg-h0x1">Next the frictional force</td>
<td class="tg-s6z2"></td>
<td class="tg-h0x1"></td>
</tr>
<tr>
<td class="tg-0ord">$$F_{resist}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$?$$</td>
</tr>
<tr>
<td class="tg-h0x1">Substuting back into the eqation gives</td>
<td class="tg-s6z2"></td>
<td class="tg-h0x1"></td>
</tr>
<tr>
<td class="tg-0ord">$$-5395.5+-26730+F_{resist}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$0$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_{resist}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$5395.5+26730$$</td>
</tr>
<tr>
<td class="tg-0ord">$$F_{resist}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$32125.5N$$ or $$32.1kN$$</td>
</tr>
</table>
</center>
<center>
[img[http://steacher.droppages.com/diagrams/P5_M1_Diagram.svg]]</center><br>
The riveted plates shown are secured at the right hand end and subjected to a tensile loading of 40kN. If the rivet is 20mm diameter, the plate 12mm x 65mm. <br>
Determine the [[factor of safety|Safety Factor]] in both [[shear|Shear Stress]] and [[tension|Tension]] for the arrangement.
Take the [[ultimate shear strength|Ultimate Shear Strength]] as $$255MN/m^2$$ and the [[ultimate tensile strength|Ultimate Tensile Strength]] as $$425 MN/m^2$$
[[Would you like to know more?|Unit 5 M1 Solution]]
!!A). Shear stress
1. The shear stress is being applied across the rivet. Remember the area is ''parallel'' to the force so we can calculate that from the diameter.<br>
2. Calculate the shear stress on the rivet. This is the ''Working Stress''.<br>
[[Would you like to know more?|Unit 5 M1 Solution: Shear Stress]]
3.Rearrange the [[safety factor|Safety Factor]] equation to find the safety factor.<br>
[[Would you like to know more?|Unit 5 M1 Solution: Shear Stress FOS]]
!!B)Tensile (direct) Stress
1. The stress is being applied along the bar. Remember the area is [[perpendicular|Perpendicular]] to the force so we can calculate that from the dimensions given.<br>
2. Calculate the stress on the bar. This is the ''Working Stress''.<br>
[[Would you like to know more?|Unit 5 M1 Solution: Direct Stress]]
3.Rearrange the [[safety factor|Safety Factor]] equation to find the safety factor.<br>
[[Would you like to know more?|Unit 5 M1 Solution: Direct Stress FOS]]
!!Area
From the [[question|Unit 5 M1 Example Question]] the cross section of the bar is
$$12mm\times 65mm$$<br>
converting to meters:
<center>
$$A=12\times 10^{-3}\times 65\times 10^{-3}$$
$$A=780\times 10^{-6}m^2$$
</center>
!![[Direct Stress|Stress]]
From the Question:
$$F=40kN=40\times 10^3N$$<br>
<center>
$$\displaystyle \sigma=\frac{F}{A}$$
$$\displaystyle \sigma=\frac{40\times 10^3}{780\times 10^{-6}}$$
$$\sigma=51.28\times 10^6N/m^2$$
$$\sigma=51.28MN/m^2$$<br>
</center>
This is the working stress.
We know that:
<center>
$$\displaystyle \text{safe working stress}=\frac{\text{shear strength}}{\text{factor of safety}}$$<br>
</center>
Rearranging to find FOS:
<center>
$$\displaystyle \text{FOS}=\frac{\text{shear strength}}{\text{safe working stress}}$$
</center>
From the [[question|Unit 5 M1 Example Question]]:
$$\text{Tensile strength}=425MN/m^2=425\times 10^6N/m^2$$
From [[calculation|Unit 5 M1 Solution: Direct Stress]]
$$\text{working stress}=51.28MN/m^2=51.28\times 10^6N/m^2$$
<center>
$$\displaystyle FOS= \frac{425\times 10^6}{51.28\times 10^6}$$<br>
$$FOS=8.29$$
</center>
!!Area of rivet:<br>
From the [[question|Unit 5 M1 Example Question]] $$D=20mm=20 \times 10^{-3}m$$
<center>
$$\displaystyle A= \frac{\pi D^2}{4}$$
$$A=\displaystyle \frac{\pi \times (20\times 10^{-3})^2}{4}$$
$$\displaystyle A= \frac{1.256 \times 10^{-3}}{4}$$
$$A=314.16\times 10^{-6}m^2$$
</center>
!![[Shear Stress]]
From the question:
$$F=40kN=40\times 10^3N$$
<center>
$$\displaystyle \tau=\frac{F}{A}$$
$$\displaystyle \tau=\frac{40\times 10^3}{314.16\times 10^{-6}}$$
$$\tau=127.32\times 10^6N/m^2$$
$$\tau=127.32MN/m^2$$
</center>
This is the working shear stress.
We know that:
<center>
$$\displaystyle \text{safe working stress}=\frac{\text{shear strength}}{\text{factor of safety}}$$<br>
</center>
Rearranging to find FOS:
<center>
$$\displaystyle \text{FOS}=\frac{\text{shear strength}}{\text{safe working stress}}$$
</center>
From the [[question|Unit 5 M1 Example Question]]:
$$\text{Shear strength}=255MN/m^2=255\times 10^6N/m^2$$
From [[previous calculation|Unit 5 M1 Solution: Shear Stress]]:
$$\text{working stress}=127.32MN/m^2=127.32\times 10^6N/m^2$$
<center>
$$\displaystyle FOS= \frac{255\times 10^6}{127.32\times 10^6}$$<br>
$$FOS=2$$
</center>
<h2>Step 1</h2>Remember that while [[potential energy|Gravitational or Potential Energy]] decreases as the object falls it gets faster so [[kinetic energy|Kinetic Energy]] increases. You should be able to calculate the [[velocity|Velocity]] of the hammer in the instant before it hits the pile.<br>
[[Would you like to know more?|Unit 5 M2 Step 1]]
<h2>Step 2</h2>
Use the law of [[conservation of momentum|Conservation of Momentum]] to calculate the velocity of the pile once the hammer has hit.<br>
[[Would you like to know more?|Unit 5 M2 Step 2]]
<h2>Step 3</h2>
The work done on the pile is going to be the sum total of the [[potential energy|Gravitational or Potential Energy]] at the point of impact and the [[kinetic energy|Kinetic Energy]] just before impact plus the energy needed to overcome the friction force. This force is the only unknown in the equation and is the force of resistance from the ground.<br>
[[Would you like to know more?|Unit 5 M2 Step 3]]
A pile driver hammer of mass $$150 kg$$ falls freely through a distance of $$5 m$$ to strike a pile of mass $$400 kg$$ and drives it $$75 mm$$ into the ground. The hammer does not rebound when driving the pile.<br>
#M2. Determine the average resistance of the ground using the [[principle of conservation of energy|Conservation of Energy]].<br>[[Would you like to know more?|Unit 5 M2]]
#D1. Determine the average resistance of the ground using [[D'Alembert's principle|D’Alembert’s Principle]].<br>[[Would you like to know more?|Unit 5 D1]]
As potential energy decreases kinetic energy increases (things get faster as they fall)
Applying the [[conservation of energy|Conservation of Energy]] to the problem: <br>
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">[[K.E.|Kinetic Energy]]</td>
<td class="tg-031e">=</td>
<td class="tg-h0x1">[[P.E.|Gravitational or Potential Energy]]</td>
</tr>
<tr>
<td class="tg-0ord">$$\frac{1}{2}mv^2$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$mgh$$</td>
</tr>
<tr>
<td class="tg-0ord">$$\frac{1}{2}v^2$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$gh$$</td>
</tr>
<tr>
<td class="tg-0ord">$$v$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \sqrt{2\times g\times h}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$v$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \sqrt{2\times 9.81\times 5}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$v$$</td>
<td class="tg-031e">=</td>
<td class="tg-h0x1">$$9.9m/s$$</td>
</tr>
</table>
</center>
We now know the [[velocity|Velocity]] of the hammer before it hits the pile ($$9.9m/s$$).
Now we can use the [[conservation of momentum|Conservation of Momentum]] to calculate the velocity of the pile.<br>
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$m_1v_1+m_2v_2$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$m_3v_3$$</td>
</tr>
<tr>
<td class="tg-0ord">$$(150\times 9.9)+(400\times 0)$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$550\times v_3$$</td>
</tr>
<tr>
<td class="tg-0ord">$$v_3$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{1485}{550}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$v$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$2.7m/s$$</td>
</tr>
</table>
</center>
<h2>The Final Step</h2>
The hammer and the pile have connected and are just about to plunge 75mm down into the ground. Applying [[conservation of energy|Conservation of Energy]] to this stage; the energy of the pile and the hammer must be equal and opposite to something. The frictional force will oppose the movement of the hammer/ pillar for a distance.... and a force times a distance is.... Energy. <br>
<b>Down</b> we have the P.E. of the hammer and the pile before they move into the ground and also their K.E. at that point. <br>
<b>Up </b>there is frictional force opposing movement for a distance. <br>
<center>
<table class="no-border">
<tr>
<td class="tg-0ord">$$mgh+\frac{1}{2}mv^2$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$f_{fric}\times s$$</td>
</tr>
<tr>
<td class="tg-0ord">$$(550\times 9.81\times 75\times10^{-3})+(\frac{1}{2} 550\times 2.7^{2})$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$f_{fric} \times 75\times 10^{-3}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$404.66+2004.75$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$f_{fric}\times 75\times 10^{-3}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$2409.41$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$f_{fric}\times 75\times 10^{-3}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$f_{fric}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$\displaystyle \frac{2409.41}{75\times 10^{-3}}$$</td>
</tr>
<tr>
<td class="tg-0ord">$$f_{fric}$$</td>
<td class="tg-s6z2">=</td>
<td class="tg-h0x1">$$32125.47N$$ or $$32.13kN$$</td>
</tr>
</table>
</center>
The forces shown act on the corners of a square of $$40mm$$ side. Calculate the magnitude, direction and position (relative to the top left corner) of the equilibrant.
<center>
[img[http://steacher.droppages.com/diagrams/Delambert_1.svg]]</center><br>
The link at the bottom takes you to a presentation which steps you through the solution.
You will be presented with a blank screen. Press the right cursor key on your keyboard or click your mouse at the right hand edge of the screen to start the presentation. If your a phone user swipe from right to left.
Original powerpoint can be found [[here|https://www.dropbox.com/s/6b07e0yx4smzy81/Non%20Concurrent%20forces.pptx?dl=0]]<br>
[[Would you like to know more?|Unit 5 P1 Worked Example]]<br>
<iframe src="https://docs.google.com/presentation/d/e/2PACX-1vT6ukhCk-ab98sG3I4GKn5kXD1WHTHHY-bWveQCcikXNzQJRecEbTmQ5eNODtGmCOayvTYCmOTNcfjo/embed?start=false&loop=false" frameborder="0" width="100%" height="540" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
In an engineering structure the beam shown is utilised. You are required to determine the reactions, $$R_1$$ and $$R_2$$
[img[http://steacher.droppages.com/diagrams/Example_BM.svg]]
<br>
[[Would you like to know more?|Unit 5 P2 Solution]]
Use the 10+1 steps below to solve this question. A printable word doc version can be found [[here|https://www.dropbox.com/s/q6a6n9iqyhz4z4i/10%20Steps%20to%20magic%20moments.docx?dl=0]]<br>
#Select the point you are taking [[moments|Moments]] around. (Let's call this point ''BOB'')<br> [[Would you like to know more?|Magic Moments Step 1]]<br>
#Sort out the [[UDLs|Uniformly Distributed Load]].<br> [[Would you like to know more?|Magic Moments Step 2]]<br>
#Identify the Clock Wise [[Moments]] (''CWM'') and the Anti Clock Wise [[Moments]] (''ACWM'')<br> [[Would you like to know more?|Magic Moments Step 3]]<br>
#Take the CWM.<br> [[Would you like to know more?|Magic Moments Step 4]]<br>
#Repeat step 4 For ACWM.<br> [[Would you like to know more?|Magic Moments Step 5]]<br>
#$$CWM=ACWM$$<br> [[Would you like to know more?|Magic Moments Steps 6 & 7]]<br>
#Rearrange to find unknown.<br> [[Would you like to know more?|Magic Moments Steps 6 & 7]]<br>
#To find remaining reaction force add all the ↑forces and add all the ↓forces (but NOT the ↑to the ↓).<br> [[Would you like to know more?|Magic Moments Steps 8-10]]<br>
#↑=↓<br>[[Would you like to know more?|Magic Moments Steps 8-10]]<br>
#Rearrange to find reaction.<br> [[Would you like to know more?|Magic Moments Steps 8-10]]<br>
#Go [[here|http://youtu.be/9ND3oghPL5M]], sit back and enjoy.
!!1. [[Stress]]
From the question we know the force applied to the bar and the diameter of the bar. <br>
The diameter tells us that the bar is circular and so from this we can calculate the area. We can then calculate the stress $$(\sigma )$$ which =$$\displaystyle \frac{F}{A}$$. <br>
''REMEMBER PAY CLOSE ATTENTION TO THE UNITS YOU USE''
[[Would you like to know more?|Unit 5 P3 (a) Solution:Stress]]
!!2. [[Strain]]
We know that [[Young's Modulus]] $$\displaystyle (E)=\frac{\text{stress}(\sigma)}{\text{strain}(\epsilon)}$$, we have just calculated the stress and are given a value for Young's modulus in the question. Rearrange to find strain.<br>
[[Would you like to know more?|Unit 5 P3 (a) Solution:Strain]]
!!3.Extension
We know that strain $$(\epsilon) =\displaystyle \frac{\text{extension}(x)}{\text{original length}(l)}$$
From the question we know the original length and we have calculated the strain so we just need to rearrange to find the extension.
[[Would you like to know more?|Unit 5 P3 (a) Solution:Extension]]
From the [[question|Unit 5 P3 Example Question]]:
$$l=200mm=200\times 10^{-3}m$$<br>
We have [[calculated|Unit 5 P3 (a) Solution:Strain]]:
$$\epsilon =490.75\times 10^{-6}$$<br>
<center>
$$\displaystyle \epsilon =\frac{x}{l}$$<br>
</center>
Rearranging the equation for [[extension|Length]] gives:
<center>
$$x=\epsilon \times l$$
$$x=490.75\times10^{-6}\times 200\times 10^{-3}$$
$$x=98.15\times 10^{-6}m$$
$$x=0.098mm$$
From the [[question|Unit 5 P3 Example Question]]:
$$E=205GN/m^2=205\times 10^9N/m^2$$
We have [[calculated|Unit 5 P3 (a) Solution:Stress]]:
$$\sigma$$ as $$100.6MN/m^2=100.6\times 10^6N/m^2$$
<center>
$$\displaystyle E=\frac{\sigma}{\epsilon}$$
</center>
Rearange for [[strain|Strain]]
<center>
$$\displaystyle \epsilon =\frac{\sigma}{E}$$
$$\displaystyle \epsilon =\frac{100.6\times 10^6}{205\times 10^9}$$
$$\epsilon =490.75\times 10^{-6}$$
</center>
Remember strain is dimensionless.
From the [[question|Unit 5 P3 Example Question]]:
$$F=10kN=10\times 10^{3}N$$
$$d=11.25mm=11.25\times 10^{-3}m$$
First we find the [[area|Area]]:
<center>
$$\displaystyle A=\frac{\pi d^2}{4}$$
$$\displaystyle A=\frac{\pi \times (11.25 \times 10^{-3})^2}{4}$$
$$A=99.4\times 10^{-6}m^2$$
</center>
Now we can find the [[stress|Stress]]
<center>
$$\displaystyle \sigma=\frac{F}{A}$$
$$\displaystyle \sigma=\frac{10\times 10^3}{99.4\times 10^{-6}}$$
$$\sigma=100.6\times 10^6N/ m^2$$
$$\sigma=100.6 MN/m^2$$
</center>
!!1. [[Shear Stress]]
From the question we know the force applied to the block and the cross section. ''Remember that the area for shear is parallel to the force.''
From this we can calculate the area. We can then calculate the [[shear stress|Shear Stress]] $$(\tau )$$ which $$=\displaystyle \frac{F}{A}$$.
[[Would you like to know more?|Unit 5 P3 (b) Solution: Shear Stress]]
!!2. [[Shear Strain]]
We know that the [[modulus of rigidity|Modulus of Rigidity]] $$\displaystyle (G) =\frac{\text{shear stress }(\tau)}{\text{shear strain }(\gamma)}$$, we have just calculated the shear stress and are given a value for the modulus of rigidity in the question.
Rearrange to find strain.<br>
[[Would you like to know more?|Unit 5 P3 (b) Solution: Shear Strain]]
!!3. Deflection
We know that [[shear strain|Shear Strain]] $$\displaystyle (\gamma)= \frac{\text{deflection }(\Delta l)}{\text{original length} (l)}$$
From the question we know the original length and we have calculated the strain so we just need to rearrange to find the change in length.<br>
[[Would you like to know more?|Unit 5 P3 (b) Solution: Deflection]]
From the [[question|Unit 5 P3 Example Question]]:
$$\text{original length} = 200mm=200 \times10^{-3}m$$<br>
We have [[calculated|Unit 5 P3 (b) Solution: Shear Strain]]:
$$\gamma=0.0635$$
<center>
$$\displaystyle \gamma=\frac{\text{deflection}}{l}$$<br>
</center>
Rearranging the equation for [[deflection|Deflection]] gives:
<center>
$$\text{deflection}=\gamma \times l$$
$$\text{deflection}=0.0635\times 200\times 10^{-3}$$
$$\text{deflection}=12.7\times 10^{-3}m$$
$$\text{deflection}=12.7mm$$
From the [[question|Unit 5 P3 Example Question]]:
$$G=1.04MN/m^2=1.04\times 10^6N/m^2$$
We have [[calculated|Unit 5 P3 (b) Solution: Shear Stress]]:
$$\tau =66.\dot6kN/m^2$$
<center>
$$\displaystyle G=\frac{\tau}{\gamma}$$<br>
</center>
Rearranging for [[shear strain|Shear Strain]] gives:
<center>
$$\displaystyle \gamma =\frac{\tau}{G}$$<br>
$$\displaystyle \gamma=\frac{66.\dot6\times 10^3}{1.04\times10^6}$$<br>
$$\gamma=0.0635$$
</center>
Remember shear strain is dimensionless.
From the [[question|Unit 5 P3 Example Question]]:
$$F=100N$$
$$\text{width}=5mm=5 \times 10^{-3}m$$
$$\text{length} =300mm= 300 \times 10^{-3}m$$
Area parallel to the force:
<center>
$$A=5 \times 10^{-3} \times300 \times 10^{-3}$$
$$A=1.5 \times 10^{-3}m^2$$
</center>
Now we can find the [[shear stress|Shear Stress]]
<center>
$$\displaystyle \tau=\frac{F}{A}$$
$$\displaystyle \tau=\frac{100}{1.5\times 10^{-3}}$$
$$\tau=66.\dot6\times 10^{3}N/m^2$$
$$\tau=66.\dot6 kN/m^2$$<br>
[img[http://steacher.droppages.com/diagrams/Stress_and_Strain_Diagram.svg]]
!!(a) Direct [[Stress]], [[Strain]] & [[Dimensional Change]]
A steel rod of diameter $$11.25mm$$, and length
$$200mm$$ has a tensile force of $$10kN$$
applied to it.<br>
Determine
#The stress
#The strain
#The extension
[[Young's Modulus]], E, for steel$$= 205GN/m^2$$
[[Would you like to know more?|Unit 5 P3 (a) Solution]]
[img[http://steacher.droppages.com/diagrams/Shear_Stress_and_Strain_Diagram.svg]]
!!(b) Shear [[Stress|Shear Stress]], [[Strain|Shear Strain]] & [[Dimensional Change]]
A rectangular block of rubber, measuring $$200mm\times 300mm\times 5mm$$ is rigidly fastened to a
vertical wall so that it projects a distance of $$200mm$$ from the wall.
If the [[Modulus of Rigidity]], G, for the rubber is $$1.04 MN/m^2$$ and a load of $$100N$$ is applied as shown above. <br>
Determine:
#The shear stress
#The shear strain
#The vertical deflection of the rubber
[[Would you like to know more?|Unit 5 P3 (b) Solution]]
#A vehicle starts from rest with a constant acceleration of $$2 \space m/s^2$$ for $$20s$$. A constant velocity is then maintained for a period, after which the vehicle is brought to rest with a uniform deceleration in $$15s$$. If the total distance travelled was $$1.25km$$, sketch the velocity-time graph for the journey and use it to determine;
#*(a) the constant velocity
#*(b) the deceleration
#*(c) the total time for the journey.<br><div>
[[Would you like to know more?|Unit 5 P4 Solution Q1]]
</div>
#A shell is fired horizontally from the top of a cliff towards the sea, whose surface is $$22m$$ below the cliff top. If the muzzle velocity of the shell is $$1300m/s$$, find how far from the base of the cliff the shell will hit the surface of the sea.<div>
[[Would you like to know more?|Unit 5 P4 Solution Q2]]
</div>
#A lift is supported by a wire rope, the total mass of the lift and contents being $$800kg$$. Find the tension in the wire rope when;<br>
#*(a) the lift is moving with constant velocity.
#*(b) accelerating upwards at $$1.5m/s^2$$.
#*(c) decelerating upwards at $$1.5m/s^2$$.<div>
[[Would you like to know more?|Unit 5 P4 Solution Q3]]
</div>
<center>
[img[http://steacher.droppages.com/diagrams/U5 _P4_Graph.svg]]</center><br>
a) Constant Velocity (Section 1)
From the [[question|Unit 5 P4 Example Question]] the car accelerates to a constant velocity so;
*$$s=?$$
*$$u=0$$
*$$v=?$$
*$$a=2$$
*$$t=20$$
Which [[SUVAT]] equation can be used?
<center>
$$v=u+at$$
$$v=0+2 \times 20$$
$$v=40 \space m/s$$
</center>
b) The deceleration. (Section 3)
We can use the constant velocity as our initial velocity and the time is 15 seconds.
*$$s=?$$
*$$u=40$$
*$$v=0$$
*$$a=?$$
*$$t=15$$
<center>
$$v=u+at$$
$$0=40+a \times 15$$
$$-40=15a$$
$$a=\displaystyle \frac{-40}{15}$$
$$a=-2.6666m/s^2$$
</center>
The '-' sign indicating a deceleration.
C) The total time for the journey.
Now we just need to find the time for the constant velocity and then add that to the $$20s$$ acceleration and the $$15s$$ deceleration.
Unfortunately we currently don't have enough information to find this.
We need to find the distance travelled.
From the question the total distance travelled is $$1.25km$$ or $$1250m$$.
And we can use
<center>
<div class="katex-display">
$$\displaystyle s= \frac{(v+u)t}{2}$$
</div>
</center>
to find the distance travelled in sections 1 and 3. (This is also the area under these two sections as we know the area under a velocity/ time graph is the distance)
<center>
@@.no-border
|!Section 1|!Section 3|
| $$s=?$$ | $$s=?$$ |
| $$u=0$$ | $$u=40$$ |
| $$v=40$$ | $$v=0$$ |
| $$a=2$$ | $$a=-2.6666$$ |
| $$t=20$$ | $$t=15$$ |
| $$\displaystyle s= \frac{(v+u)t}{2}$$ |<|
| $$\displaystyle s= \frac{(40+0)15}{2}$$ | $$\displaystyle s= \frac{(0+40)20}{2}$$ |
| $$\displaystyle s= \frac{600}{2}$$ | $$\displaystyle s= \frac{800}{2}$$ |
| $$s=300m$$ | $$s=400m$$ |
@@
</center>
So the distance travelled while speeding up and slowing down is $$300+400=700m$$.
If the total distance travelled is $$1250m$$ then the distance at constant velocity (Section 2) must be $$1250-700=550m$$.
Now, finally, we can find the time.
!!!Section 2
*$$s=550$$
*$$u=40$$
*$$v=40$$
*$$a=-$$
*$$t=?$$
<center>
So for a constant velocity we know that $$v=\frac{s}{t}$$ so;
$$\displaystyle 40=\frac{550}{t}$$
$$\displaystyle t=\frac{550}{40}$$
$$t=13.75s$$
$$\text{Total time}=20+13.75+15$$
$$\text{Total time}=48.75s$$
</center>
!!Remember
Everything falls at the same speed. It doesn't matter how fast something is travelling forward it falls at the same speed as something dropped from your hand. This means [[horizontal|Horizontal Component]] [[velocity|Velocity]] and [[vertical|Vertical Component]] velocity are independent of each other.<br>
[[Would you like to know more?|https://youtu.be/TbWiMsfr_DQ]]
!!Step 1 Calculate the time to hit the sea.
This is the only time available for forward motion. Once the object hits the sea it's forwards travel meets a wet end.
!!!Considering the vertical velocities and accelerations
*$$s=22$$
*$$u=0$$
*$$v=-$$
*$$a=-9.81$$
*$$t=?$$
So from [[SUVAT]] $$s=ut+\frac{1}{2}at^2$$
@@.no-border
||$$\displaystyle -22=0\times t+\frac{-9.81\times t^2}{2}$$||
||$$\displaystyle -22=\frac{-9.81\times t^2}{2}$$||
|$$-44=-9.81 t^2$$| or if you prefer |$$-22=-4.905 t^2$$|
|$$\displaystyle t^2= \frac{-44}{-9.81}$$||$$\displaystyle t^2= \frac{-22}{-4.905}$$|
|| $$t^2=4.49$$ ||
|| $$t=\sqrt{4.49}$$ ||
|| $$t=2.11s$$ ||
@@
!!Step 2 How far does the shell travel in that time?
!!!Considering the horizontal velocities and accelerations
So the flight time is just over two seconds. How far can we travel horizontally in that time at $$1300m/s$$?
For a constant velocity:
$$\displaystyle v=\frac{s}{t}$$
so $$s=vt$$
$$s=1300\times 2.11$$
$$s=2743m$$
!a
$$F_{cv}=ma$$ ($$_{cv}$$ for ''c''onstant ''v''elocity)
$$F_{cv}=800\times 9.81$$
$$F_{cv}=7848N$$
!b
$$F=F_{cv}+ma_{up}$$
$$F=7848+(800\times 1.5)$$
$$F=7848+1200$$
$$F=9048N$$
!c
$$F=F_{cv}+ma_{down}$$
$$F=7848+(800\times -1.5)$$
$$F=7848+-1200$$
$$F=6648N$$
A [[dam wall|https://youtu.be/mDLS12_a-fk?t=108]] has water to a depth of 12m behind it. The wall is 24 m long.<br>
Calculate the force on the wall and the [[overturning moment]] about the base.
The density of the water is $$1000 kg/m^3$$.
[[Would you like to know more?|Unit 5 P5 Solution]]
$$\rho= 1000kg/m^3$$
$$g = 9.81m/s^2$$
!!Step 1
Calculate the area of the dam wall which is underwater. <br>
[[Would you like to know more?|Unit 5 P5 Solution Step 1]]
!!Step 2
Calculate the [[second moment of area|Second Moment of Area]]
[[Would you like to know more?|Unit 5 P5 Solution Step 2]]
!!Step 3
Calculate the average force on the dam wall.
[[Would you like to know more?|Unit 5 P5 Solution Step 3]]
!!Step 4
Calculate the [[overturning moment]].
[[Would you like to know more?|Unit 5 P5 Solution Step 4]]
$$A = 12\times 24$$
$$A= 288m^3$$
$$\displaystyle \bar{y}=\frac{D}{2}$$
$$\displaystyle \bar{y}=\frac{12}{2}$$
$$\bar{y}=6m$$
$$R=\rho gA \bar{y}$$
$$R=1000\times 9.81\times 288\times 6$$
$$R=16951680 N \text{ or }16.95 MN$$
$$\text{Turning moment} = R\times h$$
$$h=\frac{2}{3} \times D$$ from the free surface or $$\frac{1}{3}$$ from the bottom.
$$h=\frac{1}{3}\times 12 = 4$$
$$\text{Turning moment} = 16.95\times 10^6\times 4$$
$$\text{Turning moment}= 67800000Nm \text{ or } 67.8 MNm$$
Find the mass of a submersible vehicle, if it is completely submerged with 1500 tonnes of water in its ballast tanks. The volume of the submersible being $$2000m^3$$ and the density of sea-water $$1020kg/m^3$$
*The volume of the vehicle is $$2000m^3$$<br>
*Density of sea-water is $$1020kg/m^3$$.<br>
*Ballast = 1500 tonne<br>
[[Would you like to know more?|Unit 5 P6 Solution]]
The [[up thrust|Up Thrust]] acting on sub will be the same as the total weight of the sub (including ballast) which will also be the weight of the water the sub displaces.
So as we know the density of sea water and the volume of the vehicle (and therefore the volume of water displaced)
$$m=\rho v$$
$$m=1020\times 2000$$
$$m=2040000kg$$
So if the upthrust acting on the sub is the same as the mass of the sub all we need to do now is subtract the ballast from the mass which was just calculated.
$$\text{Mass of sub}=2040000-1500000$$
$$M_{sub}=540000kg \space \text {or} \space 540\text{tonne}$$
<center>
[img[http://steacher.droppages.com/diagrams/Venturi_Example_Question.svg]]</center><br>
Fresh water flows through a smooth bore horizontal [[venturi meter|Venturi Meter]]. The area of the bore is nine times the area at the throat. If the pressures at entrance and throat are 1.75 bar and 1.1 bar respectively, find the velocities at these two points.
[[Would you like to know more?|Unit 5 P7 Solution]]
Since the volume flow $$m^3/s$$ through the meter is constant,
$$a_1\times v_1= a_2\times v_2$$
From the [[question|Unit 5 P7 Example Question]]
$$a_1 = 9\times a_2$$
<center>
@@.no-border
| $$9\times a_2\times v_1$$| $$ =$$ |$$a_2\times v_2$$ <<HelpButton h1>> |
| $$9v_1$$| $$=$$ |$$v_2$$ |
@@
</center>
$$1 bar = \times10^5 N/m^2$$
$$\rho$$ for water$$= 1000kg/m^2$$
From [[Bernoulli's Equation]]
<center>
@@.no-border
| $$\frac{1}{2}\rho v_1^2+\rho gh_1+P_1$$| $$=$$ |$$\frac{1}{2}\rho v_2^2+\rho gh_2+P_2$$ |
| $$\frac{1}{2}\rho v_1^2+P_1$$| $$=$$ |$$\frac{1}{2}\rho v_2^2+P_2$$ |
| $$P_1-P_2$$| $$=$$ |$$\frac{1}{2}\rho v_2^2-\frac{1}{2}\rho v_1^2$$ |
| $$1.75\times 10^5 -1.1\times 10^5$$| $$=$$ |$$\frac{1}{2} \times1000 \times v_2^2-\frac{1}{2} \times 1000 \times v_1^2$$ |
| $$(1.75 - 1.1)\times 10^5$$| $$=$$ |$$\frac{1}{2}\times 1000 (v_2^2 - v_1^2)$$ |
| $$0.65\times 10^5$$| $$=$$ |$$\displaystyle \frac{1000 (v_2^2 - v_1^2)}{2}$$ |
| $$\displaystyle \frac{0.65\times 100000\times 2}{1000}$$| $$=$$ |$$(v_2^2 - v_1^2)$$ |
| $$0.65\times 100\times 2$$| $$=$$ |$$(v_2^2 - v_1^2)$$ |
|now substitute $$v_2=9v_1$$|<|<|
| 130| $$=$$ |$$(9v_1)^2 - v_1^2$$ |
| 130| $$=$$ |$$81v_1^2-v_1^2$$ |
| 130| $$=$$ |$$80v_1^2$$ |
| $$v_1$$| $$=$$ |$$\displaystyle \sqrt{\frac{130}{80}}$$ |
| $$v_1$$| $$=$$ |$$1.275 m/s$$ |
@@
</center>
We can now find $$v_2$$
We know $$v_2=9v_1$$:
<center>
@@.no-border
| $$v_2$$| $$=$$ |$$9v_1$$ |
| $$v_2$$| $$=$$ |$$9 \times 1.275$$ |
| $$v_2$$| $$=$$ |$$11.475m/s$$ |
@@
</center>
Also known as the ''molar gas constant'', ''universal gas constant'', or ''ideal gas constant''
<<<
For an ideal gas (approximated by most real gases that are not highly compressed or not near the point of liquefaction), the pressure p times the volume V of the gas divided by its absolute temperature T is a constant. When one of these three is altered for a given mass of gas, at least one of the other two undergoes a change so that the expression pV/T remains constant. The constant, further, is the same for all gases, provided that the mass of gas being compared is one mole, or one molecular weight in grams. For one mole, therefore, pV/T = R.
[[From here|https://www.britannica.com/science/molar-gas-constant]]
<<<
{{||$:/template : constant}}
For the ~~scientist~~ chemist the equation becomes
<div class="katex-display">
$$\displaystyle \frac{PV}{T}=Rn$$
</div>
But is usually written
{{||$:/template : equation}}
The equation can be re-written:
<center>
$$\displaystyle PV=\frac{mRT}{M}$$
</center>
http://stephenteacher.tiddlyspot.com/#Unit%204%20A%20Distinction
<<<
The upward force that a liquid or gas exerts on a body floating in it.
Definition from [[here|http://www.oxforddictionaries.com/definition/english/upthrust]]
<<<
If you are standing on the ground, according to Newton, the ground is pushing back against you with an equal and opposite force.
If you stand in mud however you might expect to sink a little, as the reaction force isn't equal to your weight.
If you jump in water you would expect to sink as the reaction force is much less, but you might feel less heavy.
There is still a reaction force pushing up against you.
This is the upthrust.
{{||$:/template : greek}}
Two plates are to be riveted together using $$10 mm$$ diameter rivets. If the maximum [[shear load|Shear Stress]] on the rivets will be $$100 kN$$, the [[ultimate shear stress|Ultimate Tensile Strength]] of the material is $$300 N/mm^2$$ and a [[factor of safety|Safety Factor]] of $$5$$ is to be used, determine the number of rivets required.
[[Would you like to know more?|Using FOS Example Question 1 Solution]]
$$\text{\O} \text{ of each rivet} =10mm$$
$$\text{shear on rivets} = 100kN$$
$$\text{USS} = 300 N/mm^2$$
$$\text{FoS} = 5$$
<center>
$$\text{area of one rivet}=\dfrac{\pi d^2}{4}$$
$$\text{area of one rivet}=\dfrac{\pi 10^2}{4}$$
$$\text{area of one rivet}=78.54mm^2$$
</center>
We know that:
<center>
$$\text{FoS}=\dfrac{\text{UTS}}{\text{Working Stress}}$$
</center>
The UTS and the factor of safety have been given so we can rearrange to find the working stress (WS):
<center>
$$\text{WS}=\dfrac{\text{UTS}}{\text{FoS}}$$
$$\text{WS}=\dfrac{300}{5}$$
$$\text{WS}=60N/mm^2 \text{ or } 60MN/m^2$$
</center>
Now we have the working stress we can use that in out stress equation to find the area needed and, then, finally, divide that by the area of one rivets to find how many rivets we need!
<center>
$$\sigma=\dfrac{F}{A}$$
$$\text{Area}_{total}=\dfrac{F}{\sigma}$$
$$\text{Area}_{total}=\dfrac{100 \times 10^3}{60}$$
$$\text{Area}_{total}=1666.6\dot6mm^2$$
$$\text{Number of Rivets}=\dfrac{\text{Area}_{total}}{\text{Area}_{rivet}}$$
$$\text{Number of Rivets}=\dfrac{1666.6\dot6}{78.54}$$
$$\text{Number of Rivets}=21.22$$
</center>
So we round up to 22 Rivets.
An example question to show how the calculations used so far can influence the size and number of components used. Once you have gone through the worked example why not try it with a different [[factor of safety|Safety Factor]]?
<<tabs tabsList:"[[Using FOS Example Question 1]] [[Using FOS Example Question 1 Solution]] " class:"tc-vertical">>
Brass sheet of $$4mm$$ thickness is to have circular discs $$30mm$$ diameter punched from it. If the ultimate shear strength of the brass is 200MN/m2. Determine:
# The minimum force required in the punch.
# The stress in the punch.
# The type of stress in the punch.
[[Would you like to know more?|Using FOS Example Question 2 Solution]]
<center>
Area resisting punch ($$A_{rp}$$)
$$A_{rp}=\text{circumference} \times \text{thickness}$$
$$A_{rp}=\pi \times d \times t$$
$$A_{rp}=3.142 \times 30 \times 4$$
$$A_{rp}=376.99mm^2 \text{ or } 377mm^2$$
</center>
---
1: The minimum force required in the punch.
$$A_{rp}=377mm^2$$
$$USS=200 \times 10^6$$
$$\sigma = \dfrac{F}{A}$$ rearranged gives $$F=\sigma \times A_{rp}$$
<center>
$$F=\sigma \times A_{rp}$$
$$F=200 \times 10^{-6}$$
$$F=75.4kN$$
</center>
---
2: The stress in the punch.
$$\sigma=\dfrac{F}{A}$$ so we need to find the area:
<center>
$$\text{Area}=\dfrac{\pi d^2}{4}$$
$$\text{Area}=\dfrac{\pi 30^2}{4}$$
$$\text{Area}=706.86mm^2$$
$$\sigma=\dfrac{F}{A}$$
$$\sigma=\dfrac{75400}{706.86}$$
$$\sigma=106.67N/mm^2 \text{ or } 106.67MN/m^2$$
An example question to show how the calculations used so far can influence the size and number of components used. Once you have gone through the worked example why not try it with a different [[factor of safety|Safety Factor]]?
<<tabs tabsList:"[[Using Shear Stress Example Question 1]] [[Using Shear Stress Example Question 1 Solution]] " class:"tc-vertical">>
Tags can also be used to link information.
[[Using Tags Two]] is tagged with ''Using Tags'' and [[Using Tags Three]] is tagged with ''Using Tags Two''.
We can see the effect by tapping on the '>' infront of ''Using Tags'' below.
<div class="tc-table-of-contents">
<<toc-selective-expandable 'Help'>>
</div>
Anything tagged with ''Table of Contents'' will appear in the top level of the table of contents!
The lowest possible permittivity is that of a vacuum. Vacuum permittivity, sometimes called the'' electric constant'' and is maesured in Farads per meter.
{{||$:/template : constant}}
Unlike [[non value added|Non Value Added]] this is a process which adds value is typically a machining process which changes the raw material, making it more usable for further changes towards a finished product.
For example each of the steps in making a box will add value to the raw material and allow the finished box to be sold for more.
The starting value in the [[exponential growth or decay|Exponential Growth & Decay]] problem.
{{||$:/template : variable}}
The value at the time, (or can be the thing that changes, e.g. [[distance|Distance]]) in [[exponential growth or decay|Exponential Growth & Decay]] problems that you want to know the 'how many?' for.
{{||$:/template : variable}}
|Product|($$\alpha$$) $$(10^{-6} m/(m K))$$ <<HelpButton h1>>|
|ABS (Acrylonitrile butadiene styrene) thermoplastic|72 - 108|
|Acrylic|68 - 75|
|Aluminum|21 - 24|
|Brass|18 - 19|
|Bronze|17.5 - 18|
|Cast Iron Gray|10.8|
|Concrete|13 - 14|
|Copper|16 - 16.7|
|Diamond (Carbon)|1.1 - 1.3|
|Glass, Pyrex|4.0|
|Gold|14.2|
|Iron, pure|12.0|
|Iron, cast|10.4 - 11|
|Iron, forged|11.3|
|Lead|29|
|Nickel|13.0|
|Nylon, general purpose|50 - 90|
|Polyester|124|
|Polyvinyl chloride (PVC)|54 - 110|
|Rubber, hard|80|
|Silver|19 - 19.7|
|Steel|10.8 - 12.5|
|Tin|20 - 23|
A reduced list sourced from [[Engineers Toolbox|https://www.engineeringtoolbox.com/linear-expansion-coefficients-d_95.html]]
| !Polytropic index | !Relation | !Effects |
| $$n < 0$$ | - |A process where work and heat flow simultaneously in or out of the system. This is not allowed by the [[second law of thermodynamics|Secon Law of Thermodynamics]] |
| $$n=0$$ | $$P=\text{Constant}$$ |An [[isobaric|Isobaric]] |
| $$n = 1$$ | $$PV=\text{Constant}$$ |An [[isothermal|Isothermal]] process |
| $$n= \gamma \text{ or sometimes } K$$ | $$\displaystyle \frac{C_p}{C_v}$$ See [[here|Specific Heat Capacity]] |An [[isentropic|Isentropic]] process |
| $$n = \infty $$ | $$V=\text{Constant}$$ |Equivalent to an [[isochoric|Isochoric]] process |
<div class="columns">
<<list-links "[tag[Variable]]">>
</div>
<$tidgraph start="Vectors"/>____
```
<$list filter='[tag[Vectors]]' template=StaticsTiddler>
</$list>
```
<$list filter='[tag[Vectors]]' template=StaticsTiddler>
</$list>
<center>
[img[http://steacher.droppages.com/diagrams/Vector.svg]]
<br>
A Vector.
</center>
A vector, unlike a [[scalar|Scalar]] value, has a [[magnitude|Magnitude]] and a direction.
A single vector, if on a diagonal, can be [[resolved|Resolve]] into [[vertical|Vertical Component]] and [[horizontal|Horizontal Component]] components.<br>
Vectors can also be added together to find the single [[resultant|Resultant]] vector. <br>
Both of these things can be done [[graphically|Graphically]] or [[analytically |Analytically]].<br>
[[Would you like to know more?|Examples of Vector Quantities]]
Velocity is a [[vector|Vectors]] quantity which is a [[speed|Speed]] in a given direction.
In [[dynamic|Dynamics/ Kinematics]]/ [[kinematic|Dynamics/ Kinematics]] problems it is represented by a letter $$u$$ for [[initial velocity|Initial Velocity]] and by $$v$$ for [[final velocity|Final Velocity]].
They are also sometimes written as $$v_1$$ and $$v_2$$ respectively. <br>
For a constant velocity:
{{||$:/template : equation}}
{{||$:/template : variable}}
!!Initial Velocity
{{Initial Velocity}}
!!Final Velocity
{{Final Velocity}}
The up and down component of a [[vector|Vectors]].
Voltage is also know as ''electric potential'', ''potential difference'' or ''[[electromotive force (e.m.f.)|Electromotive Force (EMF)]]''
<<<
The voltage between two points is equal to the work done per unit of charge against a static electric field to move the test charge between two points. This is measured in units of Volts (a Joule per Coulomb).
<<richlink "https://en.wikipedia.org/wiki/Voltage">>
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
See [[Voltage]]
{{||$:/template : variable}}
{{||$:/template : equation}}
{{||$:/template : variable}}
The amount of space something takes up.
Used to measure amounts of gasses used in [[combustion|Combustion and Stoichiometry]] and [[thermodynamics|Thermodynamics]] instead of [[mass|Mass]] which is used for solids and liquids.
{{||$:/template : variable}}
[[Would you like to know more?|http://www.mathsisfun.com/geometry/common-3d-shapes.html]]
The [[sensible volume|Sensible Volume]] is small and the '[[latent volume|Latent Volume]]' (Volume of steam as it changes from wet to dry) is comparatively large and so is approximately the same a the volume of the [[dry steam|Dry Steam]].
{{||$:/template : equation}}
{{||$:/template : variable}}
This is the amount of [[energy|Energy]] in [[dry steam|Dry Steam]].
{{||$:/template : equation}}
{{||$:/template : variable}}
The stuff you thought was steam before you learned that ''YOU CAN'T SEE STEAM!!!''
What you see rising off your kettle or a [[boiling|Boiling]] saucepan is water particles being carried up with the steam.
This is the water vapour.
For a sine wave:
<<<
The average of all the instantaneous values of an alternating voltage and currents over one complete cycle is called Average Value.
[[From here|https://circuitglobe.com/what-is-peak-value-average-value-and-rms-value.html]]
<<<
{{||$:/template : equation}}
{{||$:/template : variable}}
Weight is the [[force|Force]] experienced by a [[mass|Mass]] due to [[gravity|Gravity]]. As it is a force this means it is measured in ''Newtons''.<br>
We know $$F=ma$$<br>
The [[acceleration|Acceleration due to Gravity]] due to gravity on earth is $$9.81m/s^2$$. The weight of an object is then it's mass $$\times 9.81$$.<br>
!!!Remember:<br>
Weight is different from mass, your mass on the moon would be the same, your weight however would be less due to the gravity acting on your mass being less.
When you step on weighing scales you are measuring your mass not your weight.
<center><h1>
<$link to="Table of Contents" tooltip="Click here for the table of contents"> DON'T PANIC </$link>
So, what this and how do I use it?
This is a repository of knowledge primarily based around what is now Unit One of the level three BTEC in Engineering, but is hopefully accessible for GCSE/ level two and useful for higher levels as well.
To get you started here are a few tips to help you find your way around.
{{Help}}
[[Steam]] which has water vapour mixed in with it. Wet steam is different to [[dry steam|Dry Steam]]
The amount of [[water vapour|Water Vapour]] in the steam is given by it's [[dryness fraction|Dryness Fraction]]
<<<
Performance to the standard expected by the customer.
Fred Smith, CEO of Federal Express
<<<
<<<
Meeting he customers needs the first time and every time and every time.
GSA (General Services Administration)
<<<
<<<
Providing our customers with products and services and services that consistently meet their needs and expectations.
Boeing
<<<
<<<
Doing the right thing first time , always striving for improvement and always satisfying the customer.
U.S Department of Defence.
<<<
<<<
It's 'good' in'it?
TMC Student
<<<
For a compound bar in parallel which has a temperature change, and therefore a change in length, both sections will experience a stress as the smaller expansion (material a) will pull back the other material b and the longer expansion (material b) will drag material a back from the lengths they would reach if they were not connected to each other.
For equilibrium the forces must be equal so the $$\text{Pull of } a \text{ on } b=\text{Pull of } b \text{ on } a$$
We know that $$\sigma=\frac{F}{A}$$ so $$F=\sigma \times A$$
which gives:
<center>
$$Area_a \times \sigma_a =Area_b \times \sigma_b$$
</center>
For the second equation:
<center>
$$\left (\dfrac{\sigma_a}{E_a} \right )+\left (\dfrac{\sigma_b}{E_b} \right )=(\alpha_a – \alpha_b)\times \Delta T$$
</center>
We get this from the fact that we are essentially talking about the change in length that DOESN'T happen as this is what causes the internal stress in the bar.
[img[http://steacher.droppages.com/diagrams/Compound Bars 3.svg]]<br>
For the joined bars we can see from the diagram:
The change in length of bar ''a'' is the extension due to the temperature change ''minus'' the distance it's pulled back by ''b''
The change in length of bar ''b'' is the extension due to the temperature change ''minus'' the distance it's pulled out by ''a''
So putting some maths in there:
<center>
Bar ''a'' is pulled back by $$\alpha_a \times l \times \Delta T-Y$$
Bar ''b'' is pulled out by $$y-\alpha_b \times l \times \Delta T$$
</center>
If we added those two values together it would be equal to total difference between the two bars if they were allowed to expand on their own.
<center>
$$\alpha_a \times l \times \Delta T-Y+\alpha_b \times l \times \Delta T-y=$$ difference of the two bars when not attached.
The distance between the two bars expanded on their own could also be stated as the change in length due to temp change of a - the change in length, due to temp change of b so:
<center>
$$(\alpha_a \times l \times \Delta T)-(\alpha_b \times l \times \Delta T)=$$ difference of the two bars when not attached.
</center>
As BOTH these = difference of the two bars when not attached then:
$$(\alpha_a \times l \times \Delta T-Y)+(y-\alpha_b \times l \times \Delta T)=(\alpha_a \times l \times \Delta T)-(\alpha_b \times l \times \Delta T)$$
</center>
we know that $$\epsilon=\frac{\Delta l}{l}$$ so we could divide the above equation by $$l$$ to show it in terms of strain:
<center>
$$\dfrac{(\alpha_a \times l \times \Delta T-Y)}{l}+\dfrac{(y-\alpha_b \times l \times \Delta T)}{l}=\dfrac{(\alpha_a \times l \times \Delta T)}{l}-\dfrac{(\alpha_b \times l \times \Delta T)}{l}$$
</center>
Which cancels down and simplifies to:
<center>
$$\epsilon_a + \epsilon_b=\alpha_a \Delta t- \alpha_a \Delta T$$
$$\epsilon_a + \epsilon_b=(\alpha_a- \alpha_a) \times \Delta T$$
$$\left (\dfrac{\sigma_a}{E_a} \right )+\left (\dfrac{\sigma_b}{E_b} \right )=(\alpha_a – \alpha_b)\times \Delta T$$
</center>
<center>
[img[http://steacher.droppages.com/diagrams/Bernoulli.svg]]</center><br>
Fluid is flowing along the pipe and so [[work|Work]] is being done. How much work I hear you ask?
Well...the total Work = Work done on the fluid minus work done by the fluid.
<div class="katex-display">
$$W=W_1-W_2$$
</div>
Now work = [[force|Force]] $$\times$$ distance
<div class="katex-display">
$$W=Fs$$
</div>
So...
<div class="katex-display">
$$W=F_1s_1-F_2s_2$$
</div>
Next step...
Now $$P=F/a$$ so we can rearrange to give $$F=Pa$$.
Putting this in the last equation gives..
<div class="katex-display">
$$W=P_1a_1s_1-P_2a_2s_2$$
</div>
Now, an area times a distance is a volume.. So...
<div class="katex-display">
$$W=P_1V-P_2V$$
</div>
Or <div class="katex-display">
$$W=(P_1-P_2)V$$
</div>
Now we know there has been work done, where has the energy come from? The fluid has [[kinetic|Kinetic Energy]] and [[potential|Gravitational or Potential Energy]] energy.
So the change in energy is
<div class="katex-display">
$$\Delta E=(\frac{1}{2}mv_2^2+mgh_2)-(\frac{1}{2}mv_1^2+mgh_1)$$
</div>
Now work out = energy in (ignoring losses, there are ''always'' losses, there is no such thing as [[perpetual motion|The Secret of Perpetual Motion]]).
<div class="katex-display">
$$\Delta E=\Delta W$$
</div>
Putting the two halves together then gives us
<div class="katex-display">
$$(P_1-P_2)V=(\frac{1}{2}mv_2^2+mgh_2)-(\frac{1}{2}mv_1^2+mgh_1)$$
</div>
The next step is dividing both sides by volume (moving the V on the left across).
<div class="katex-display">
$$(P_1-P_2)=\frac{(\frac{1}{2}mv_2^2+mgh_2)-(\frac{1}{2}mv_1^2+mgh_1)}{V}$$
</div>
BUT $$\rho \text{(density)} = \frac{m}{v}$$
Which makes the equation:
<div class="katex-display">
$$(P_1-P_2)=(\frac{1}{2} \rho v_2^2+\rho gh_2)-(\frac{1}{2} \rho v_1^2+\rho gh_1)$$
</div>
Which is rearranged into the commonly presented form of:
<div class="katex-display">
$$\frac{1}{2} \rho v_1^2+\rho gh_1+P_1=\frac{1}{2} \rho v_2^2+\rho gh_2+P_2$$
</div>
For a [[compound bar|?]] under an external load the extension of both the materials will be the same AND they both have the same original length SO the [[strain|?]] for both will be the same.
Here we have used steel and brass as the two components but it could be any two materials.
<center>
$$\epsilon_\text{steel}= \epsilon_\text{brass}$$
</center>
If we rearrange our [[Young's Modulus]] equation from $$E=\frac{\sigma}{\epsilon}$$ to $$\epsilon=\frac{\sigma}{E}$$ then we can say:
<center>
$$\dfrac{\sigma_\text{steel}}{E_\text{steel}}=\dfrac{\sigma_\text{brass}}{E_\text{brass}}$$
</center>
Rearranging to give:
<center>
@@.no-border
|$$\sigma_\text{steel}=\dfrac{\sigma_\text{brass} E_\text{steel}}{E_\text{brass}}$$| $$(\text{equation }1)$$|
@@
</center>
The total load will be shared between the two materials making up the bar so:
<center>
$$\text{Load}_\text{steel}+\text{Load}_\text{brass}=\text{Total Load (Force)}$$
</center>
But!!!!
We know that $$\sigma=\frac{F}{A}$$ so $$F=\sigma A$$. Substituting gives:
<center>
$$(\sigma_\text{steel} \times A_\text{steel})+(\sigma_\text{brass} \times A_\text{brass})=F_\text{total}$$
</center>
So we can put $$\text{equation}1$$ into the above equation to give:
<center>
$$\Big (\Big ( \dfrac{\sigma_\text{brass} E_\text{steel}}{E_\text{brass}} \Big ) \times A_\text{steel})+(\sigma_\text{brass} \times A_\text{brass})=F_\text{total}$$
</center>
and can be rearranged:
<center>
$$ \dfrac{\sigma_\text{brass} \times E_\text{steel} \times A_\text{steel}+\sigma_\text{brass} \times A_\text{brass}}{E_\text{brass}}=F_\text{total}$$
$$ \dfrac{\sigma_\text{brass} \times (E_\text{steel} \times A_\text{steel}+\sigma_\text{brass} \times A_\text{brass})}{E_\text{brass}}=F_\text{total}$$
$$\sigma_\text{brass}=\dfrac{F \times E_\text{brass}}{A_\text{steel} \times E_\text{steel}+A_\text{brass} \times E_\text{brass}} $$
</center>
From this we can find the stress in the brass and then substitute that value into $$\text{equation} 1$$ to find the stress in the steel!
The energy needed to move something is:
<center>
$$W=F\times s$$
</center>
[[Would you like to know more?|Energy]]
We know:
<center>
$$\displaystyle P=\frac{F}{A}$$<br>
</center>
[[Would you like to know more?|Pressure]]
which can be rearranged to <br>
<center>
$$F=P\times A$$
</center>
Substituting this into the energy equation gives:
<center>
$$W=P\times A\times s$$
</center>
An ''area'' $$\times$$ a ''distance'' is the volume of a prism, for example a cylinder, which could be the inside of a pipe.
So the equation becomes <br>
<center>
$$W=PV$$
</center>
This is [[flow energy|Flow Energy]].
Unlike [[P. E.|Gravitational or Potential Energy]] or [[K. E.|Kinetic Energy]] the [[heat energy|Heat Energy]] equation isn't derived from the [[energy equation|Work]] but comes from experiments which show a relationship between the energy needed to change the temperature, the amount you want the the temperature to change and the amount of material you have.
[[Would you like to know more?|Specific Heat Capacity]]
<h1>Kinetic Energy</h1>
The energy needed to move something is Work=Force$$\times$$Distance, ($$W=F\times s$$) <br>
<h2>Force $$F$$</h2>
Force=mass$$\times$$acceleration ($$F=m\times a$$), where $$a$$ is the acceleration. <br>
Putting this into $$W=F\times s$$ into the gives us $$W=mas$$.
<h2>Distance $$s$$</h2>
From dynamics you may remember the [[four equations of things moving|SUVAT]]. The one we want is $$v^2=u^2+2as$$ [[(here for details)|First SUVAT Equation]] where $$v$$ and $$u$$ are final and initial velocities ($$m/s$$).<br>
If the initial velocity is $$0$$ then $$v^2=2as$$ so rearranging gives $$\frac{v^2}{2}=as$$ and putting that into $$W=mas$$ gives $$W=\frac{mv^2}{2}$$ more commonly written in the format below.
{{Kinetic Energy}}
<center>
[img[http://steacher.droppages.com/diagrams/Compound Bars 2.svg]]
</center>
The starting point is the [[stress|?]], [[strain|?]] and [[Young's Modulus]] equations $$\sigma = \frac{F}{A}$$, $$\epsilon = \frac{\Delta l}{l}$$ & $$E=\frac{\sigma}{\epsilon}$$.
We can rearrange the strain equation: $$\Delta l= \epsilon l$$ and then substitute to give $$\Delta l=\dfrac{\sigma l}{E}$$ and substituting stress into that equation gives:$$\Delta l=\dfrac{F \times l}{E \times A}$$
This is true for ''metal A'' and ''metal B'' and the total change in length will be the sum of the change in each metal. As force is the same for both metals we can state the full equation as:
<center>
$$\Delta l= F \left[\dfrac{l_a}{E_a \times A_a}+\dfrac{l_b}{E_b \times A_b}\right]$$
@@.floatright
[img[http://steacher.droppages.com/diagrams/Cylinder_Diagram.svg]]
@@
Our basic definition of [[energy|Energy]] is so work, $$W=Fs$$.
For the piston in the diagram, as it moves up and compresses the fluid there will be [[pressure|Pressure]].
<center>
$$\displaystyle P=\frac{F}{A}$$
</center>
Rearrange to give
<center>
$$\displaystyle F=PA$$
</center>
So...
<center>
$$W=PAs$$
</center>
and remembering that an [[area|Area]] multiplied by a [[distance|Distance]] is a [[volume|Volume]] so there is a change in vloume and so can be written as:
<center>
$$W=P(V_2-V_1)$$
</center>
<h1>Gravitational or Potential Energy</h1>
The energy needed to move something is [[Work]]=[[Force]]$$\times$$[[Distance]], ($$W=F\times s$$). As we are moving something up the force acting is the force of gravity on that thing. <br>
<h2>Force $$F$$</h2>
[[Force]]=[[mass|Mass]]$$\times$$[[acceleration|Acceleration]] ($$F=m\times a$$), where $$a$$ is the acceleration, in this case due to [[gravity|Gravity]] ($$9.81m/s^2$$). This is usually represented by the letter $$g$$ so $$F=m\times g$$.<br>
<h2>Distance $$s$$</h2>
The distance in this case is the <b>height</b> from which the object can fall and is written as $$h$$. <br>
Substituting the force and changing the distance to [[height|Height]] makes the equation for potential energy become $$P.E.=m\times g\times h$$ <br>
$$h$$ is sometimes written as $$z$$ to avoid confusion with the $$h$$ of [[enthalpy|Enthalpy]]...confused?<br>
{{Gravitational or Potential Energy}}
<center>
[img[http://steacher.droppages.com/diagrams/i.svg]]
</center>
Rearranging the equation for stress we can find the tensile force acting on the coloured slice:
<center>
$$\displaystyle \sigma=\frac{F}{A}$$
$$F=\sigma A$$
</center>
The moment of this force from the neutral axis would then be:
<center>
$$M=F \times y$$
</center>
So dropping one into the other:
<center>
$$M=\sigma A y$$
</center>
$$Ay$$ is called the [[First Moment of Area]] and isn't used much!
From the [[bending equation|Bending Equation]] we know that $$\frac{\sigma}{y}=\frac{E}{R}$$ (rearange to give $$\sigma=\frac{E \times y}{R}$$). Placing that into the equation above gives:
<center>
$$\displaystyle M=\frac{E \times y \times A \times y}{R}$$
</center>
Which simplifies to:
<center>
$$\displaystyle M=\frac{E \times Ay^2}{R}$$
</center>
$$Ay^2$$ is the [[second moment of inertia|Second Moment of Area]]
This is really a calculus problem as we start out by chopping up the area into tiny tiny slices and then add them all up.
See [[here|Second Moment of Area]].
The [[energy|Energy]] you get out of a system.
You put [[effort|Effort]] in and get work out.
{{||$:/template : variable}}
{{Work Under a Simple P-V Graph}}
<br><br><br><br>
---
{{Work for Polytropic Change}}
---
<br><br><br><br>
{{Work for Isothermal Compression}}
For a [[isothermal|Isothermal]] change the integral (area under the graph) is
@@.floatright
[img[http://steacher.droppages.com/diagrams/PV_and_work_Isothermal.svg]]
@@
{{||$:/template : equation}}
For a [[polytropic|Polytropic Equation]] change the integral (area under the graph) is
@@.floatright
[img[http://steacher.droppages.com/diagrams/PV_and_work_polytropic.svg]]
@@
{{||$:/template : equation}}
This equation is derived from the basic equation for [[Energy]]
[[Would you like to know more?|Where does the Non-Flow Work Equation Come From?]]
{{||$:/template : equation}}
[[Would you like to know more?|Work and P-V Graphs]]
@@.floatright
[img[http://steacher.droppages.com/diagrams/PV_and_work.svg]]
@@
If we plot a graph of a gas changing in volume but at constant pressure we can see that the work done is equal to the area under the graph.
{{||$:/template : equation}}
Examples which ''MAY'' be a little like those found in assessments.
<<list-links "[tag[]]">>
<$tidgraph start="Worked Examples" startat=1 maxdepth=2 />
{{||$:/template : greek}}
A measure of a materials stiffness, how much it will bend under a load, the higher the Young's Modulus the stiffer the material. It is the ratio of stress to strain and therefore the gradient of the elastic region of a stress/ strain graph. This is also the area of the graph to which [[Hooke's Law]] applies.<br>
It is also known as
*Modulus of Elasticity
*Elastic Modulus
{{||$:/template : equation}}
{{||$:/template : variable}}
[[Would you like to know more?|Young's Modulus Data]]
<table id="tablesorter" class="large">
<thead>
<tr>
<th class="header headerSortDown" rowspan="2">Material</th>
<th class="header" colspan="2">Tensile Modulus<br />
(Young's Modulus, Modulus of Elasticity)<br />
- <em>E -</em></th>
<th class="header" rowspan="2">Ultimate Tensile Strength<br />
- <em>S<sub>u</sub> -</em><br />
<i>(10<sup>6</sup> N/m<sup>2</sup>, MPa)</i></th>
<th class="header" rowspan="2">Yield Strength<br />
- <em>S<sub>y</sub> -</em><br />
<i>(10<sup>6</sup> N/m<sup>2</sup>, MPa)</i></th>
</tr>
<tr>
<th class="header"><i>(10<sup>6</sup> psi)</i></th>
<th class="header"><i>(10<sup>9</sup> N/m<sup>2</sup>, GPa)</i></th>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 40%;">ABS plastics</td>
<td style="width: 15%;"> </td>
<td style="width: 15%;">1.4 - 3.1</td>
<td style="width: 15%;">40</td>
<td style="width: 15%;"></td>
</tr>
<tr>
<td>Acetals</td>
<td></td>
<td>2.8</td>
<td>65</td>
<td></td>
</tr>
<tr>
<td>Acrylic</td>
<td> </td>
<td>3.2</td>
<td>70</td>
<td></td>
</tr>
<tr>
<td>Aluminum Bronze</td>
<td></td>
<td>120</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Aluminum</td>
<td>10.0</td>
<td>69</td>
<td>110</td>
<td>95</td>
</tr>
<tr>
<td>Aluminum Alloys</td>
<td>10.2</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Antimony</td>
<td>11.3</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Aramid</td>
<td></td>
<td>70 - 112</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Beryllium (Be)</td>
<td>42</td>
<td> 287</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Beryllium Copper</td>
<td>18.0</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Bismuth</td>
<td>4.6</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Bone, compact</td>
<td> </td>
<td>18</td>
<td>170<br />
(compression)</td>
<td></td>
</tr>
<tr>
<td>Bone, spongy</td>
<td></td>
<td>76</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Boron</td>
<td> </td>
<td></td>
<td></td>
<td>3100</td>
</tr>
<tr>
<td>Brass</td>
<td> </td>
<td>102 - 125</td>
<td>250</td>
<td></td>
</tr>
<tr>
<td>Brass, Naval</td>
<td></td>
<td>100</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Bronze</td>
<td> </td>
<td>96 - 120</td>
<td></td>
<td></td>
</tr>
<tr>
<td>CAB</td>
<td></td>
<td>0.8</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Cadmium</td>
<td>4.6</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Carbon Fiber Reinforced Plastic</td>
<td> </td>
<td>150</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Carbon nanotube, single-walled</td>
<td></td>
<td>1000+</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Cast Iron 4.5% C, ASTM A-48</td>
<td> </td>
<td></td>
<td>170</td>
<td></td>
</tr>
<tr>
<td>Cellulose, cotton, wood pulp and regenerated</td>
<td></td>
<td></td>
<td>80 - 240</td>
<td></td>
</tr>
<tr>
<td>Cellulose acetate, molded</td>
<td></td>
<td></td>
<td>12 - 58</td>
<td></td>
</tr>
<tr>
<td>Cellulose acetate, sheet</td>
<td></td>
<td></td>
<td>30 - 52</td>
<td></td>
</tr>
<tr>
<td>Cellulose nitrate, celluloid</td>
<td></td>
<td></td>
<td>50</td>
<td></td>
</tr>
<tr>
<td>Chlorinated polyether</td>
<td></td>
<td>1.1</td>
<td>39</td>
<td></td>
</tr>
<tr>
<td>Chlorinated PVC (CPVC)</td>
<td></td>
<td>2.9</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Chromium</td>
<td>36</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Cobalt</td>
<td>30</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Concrete</td>
<td></td>
<td>17</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Concrete, High Strength (compression)</td>
<td> </td>
<td>30</td>
<td>40<br />
(compression)</td>
<td></td>
</tr>
<tr>
<td>Copper</td>
<td>17</td>
<td>117</td>
<td>220</td>
<td>70</td>
</tr>
<tr>
<td>Diamond (C)</td>
<td> </td>
<td>1220</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Douglas fir Wood</td>
<td> </td>
<td>13</td>
<td>50<br />
(compression)</td>
<td></td>
</tr>
<tr>
<td>Epoxy resins</td>
<td></td>
<td>3-2</td>
<td>26 - 85</td>
<td></td>
</tr>
<tr>
<td>Fiberboard, Medium Density</td>
<td></td>
<td>4</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Flax fiber</td>
<td></td>
<td>58</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Glass</td>
<td> </td>
<td>50 - 90</td>
<td>50<br />
(compression)</td>
<td></td>
</tr>
<tr>
<td>Glass reinforced polyester matrix</td>
<td></td>
<td>17</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Gold</td>
<td>10.8</td>
<td> 74</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Granite</td>
<td></td>
<td>52</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Graphene</td>
<td></td>
<td>1000</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Grey Cast Iron</td>
<td></td>
<td>130</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Hemp fiber</td>
<td></td>
<td>35</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Inconel</td>
<td>31</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Iridium</td>
<td>75</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Iron</td>
<td>28.5</td>
<td> 210</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Lead</td>
<td>2.0</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Magnesium metal (Mg)</td>
<td>6.4</td>
<td>45</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Manganese</td>
<td>23</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Marble</td>
<td> </td>
<td></td>
<td>15</td>
<td></td>
</tr>
<tr>
<td>MDF - Medium-density fiberboard</td>
<td></td>
<td>4</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Mercury</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Molybdenum (Mo)</td>
<td>40</td>
<td> 329</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Monel Metal</td>
<td>26</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Nickel</td>
<td>31</td>
<td> 170</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Nickel Silver</td>
<td>18.5</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Nickel Steel</td>
<td>29</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Niobium (Columbium)</td>
<td>15</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Nylon-6</td>
<td> </td>
<td>2 - 4</td>
<td>45 - 90</td>
<td>45</td>
</tr>
<tr>
<td>Nylon-66</td>
<td></td>
<td></td>
<td>60 - 80</td>
<td></td>
</tr>
<tr>
<td>Oak Wood (along grain)</td>
<td> </td>
<td>11</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Osmium (Os)</td>
<td>80</td>
<td> 550</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Phenolic cast resins</td>
<td></td>
<td></td>
<td>33 - 59</td>
<td></td>
</tr>
<tr>
<td>Phenol-formaldehyde molding compounds</td>
<td></td>
<td></td>
<td>45 - 52</td>
<td></td>
</tr>
<tr>
<td>Phosphor Bronze</td>
<td></td>
<td>116</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Pine Wood (along grain)</td>
<td> </td>
<td>9</td>
<td>40</td>
<td></td>
</tr>
<tr>
<td>Platinum</td>
<td>21.3</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Plutonium</td>
<td>14</td>
<td> 97</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Polyacrylonitrile, fibers</td>
<td></td>
<td></td>
<td>200</td>
<td></td>
</tr>
<tr>
<td>Polybenzoxazole</td>
<td></td>
<td>3.5</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Polycarbonates</td>
<td> </td>
<td>2.6</td>
<td>52 - 62</td>
<td></td>
</tr>
<tr>
<td>Polyethylene HDPE (high density)</td>
<td> </td>
<td>0.8</td>
<td>15</td>
<td></td>
</tr>
<tr>
<td>Polyethylene Terephthalate, PET</td>
<td> </td>
<td>2 - 2.7</td>
<td>55</td>
<td></td>
</tr>
<tr>
<td>Polyamide</td>
<td> </td>
<td>2.5</td>
<td>85</td>
<td></td>
</tr>
<tr>
<td>Polyisoprene, hard rubber</td>
<td></td>
<td></td>
<td>39</td>
<td></td>
</tr>
<tr>
<td>Polymethylmethacrylate (PMMA)</td>
<td></td>
<td>2.4 - 3.4</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Polyimide aromatics</td>
<td></td>
<td>3.1</td>
<td>68</td>
<td></td>
</tr>
<tr>
<td>Polypropylene, PP</td>
<td> </td>
<td>1.5 - 2</td>
<td>28 - 36</td>
<td></td>
</tr>
<tr>
<td>Polystyrene, PS</td>
<td> </td>
<td>3 - 3.5</td>
<td>30 - 100</td>
<td></td>
</tr>
<tr>
<td>Polytehylene, LDPE (low density)</td>
<td></td>
<td>0.11 - 0.45</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Polytetrafluoroethylene (PTFE)</td>
<td></td>
<td>0.4</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Polyurethane cast liquid</td>
<td></td>
<td></td>
<td>10 - 20</td>
<td></td>
</tr>
<tr>
<td>Polyurethane elastomer</td>
<td></td>
<td></td>
<td>29 - 55</td>
<td></td>
</tr>
<tr>
<td>Polyvinylchloride (PVC)</td>
<td></td>
<td>2.4 - 4.1</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Potassium</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Rhodium</td>
<td>42</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Rubber, small strain</td>
<td> </td>
<td>0.01 - 0.1</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Sapphire</td>
<td></td>
<td>435</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Selenium</td>
<td>8.4</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Silicon</td>
<td>16</td>
<td> 130 - 185</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Silicon Carbide</td>
<td> </td>
<td>450</td>
<td></td>
<td>3440</td>
</tr>
<tr>
<td>Silver</td>
<td>10.5</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Sodium</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Steel, High Strength Alloy ASTM A-514</td>
<td> </td>
<td></td>
<td>760</td>
<td>690</td>
</tr>
<tr>
<td>Steel, stainless AISI 302</td>
<td> </td>
<td>180</td>
<td>860</td>
<td>502</td>
</tr>
<tr>
<td>Steel, Structural ASTM-A36</td>
<td> </td>
<td>200</td>
<td>400</td>
<td>250</td>
</tr>
<tr>
<td>Tantalum</td>
<td>27</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Polytetrafluoroethylene (PTFE)</td>
<td></td>
<td>0.5</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Thorium</td>
<td>8.5</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Tin</td>
<td></td>
<td>47</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Titanium</td>
<td>16</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Titanium Alloy</td>
<td> </td>
<td>105 - 120</td>
<td>900</td>
<td>730</td>
</tr>
<tr>
<td>Tooth enamel</td>
<td></td>
<td>83</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Tungsten (W)</td>
<td> </td>
<td>400 - 410</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Tungsten Carbide (WC)</td>
<td> </td>
<td>450 - 650</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Uranium</td>
<td>24</td>
<td> 170</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Vanadium</td>
<td>19</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Wrought Iron</td>
<td> </td>
<td>190 - 210</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td>Zinc</td>
<td>12</td>
<td> </td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
Table from [[http://www.engineeringtoolbox.com/]]
{{||$:/template : greek}}